Автоматическая установка пакетов emacs с помощью MELPA

Вы должны использовать событие touchstart, чтобы исправить эту проблему.

$(document).ready(function() {

  $('button').on('click', function() {
    $('#x').css({
      'margin-top': '0px',
      display: 'block',
      opacity: '0'
    }).animate({
        'margin-top': '15px',
        opacity: '1'
      },
      100
    )

    $('#x').trigger('touchstart'); //trigger touchstart
  });

  $('textarea').on('touchstart', function() {
    $(this).focus();
  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>


<textarea id="x" style="width: 100%;height:6em;display: none" placeholder="Return notes..." cols="30" rows="10"></textarea>

<button type="button">focus textarea</button>

29
задан Objective 11 January 2014 в 16:39
поделиться

5 ответов

Новый ответ:

Хотя мой первоначальный ответ остается в силе, сейчас я использую метод , предложенный Джордоном . use-package - фантастический инструмент для аккуратных конфигураций Emacs. На самом деле, я уже использовал его для чистой загрузки пакетов, когда писал свой оригинальный ответ.

В то время я не читал полностью до нижней части его README , и поэтому не понимал, что он также может справиться с установкой пакета:

] Для package.el пользователей

Вы можете использовать use-package для загрузки пакетов из ELPA с package.el. Это особенно полезно, если вы разделяете ваш .emacs между несколькими машинами; соответствующие пакеты будут загружены автоматически после размещения в вашем .emacs. Клавиша :ensure автоматически установит пакет, если его еще нет:

(use-package tex-site
  :ensure auctex)

После загрузки package.el и инициализации моих репозиториев пакетов моя конфигурация содержит

(if (not (package-installed-p 'use-package))
    (progn
      (package-refresh-contents)
      (package-install 'use-package)))

(require 'use-package)

, а затем и многие другие подобные фрагменты:

;;; Expand-region
(use-package expand-region
  :ensure expand-region
  :bind ("C-=" . er/expand-region))

Если вы сочтете эту информацию полезной, пожалуйста, дайте Джордону ответ.

Оригинальный ответ:

Взгляните на Бочку и Паллет , которые работают вместе для решения этой проблемы.

С сайта Cask:

Бочка для Emacs - это то, что Bundler для Ruby. Он направлен на то, чтобы сделать управление зависимостями ELPA в Emacs безболезненным (насколько это возможно). Это включает как локальную установку Emacs, так и разработку пакета Emacs.

После установки Cask вам нужно добавить что-то подобное в вашу конфигурацию Emacs:

(require 'cask)
(cask-initialize)

Cask определяет специфичный для doman язык для зависимостей elisp. Для установки пакетов вам понадобится что-то , как показано здесь :

(source melpa)

(depends-on "auto-complete")
(depends-on "dash")
(depends-on "f")
(depends-on "flycheck")
(depends-on "helm")
(depends-on "magit")
(depends-on "popup")
(depends-on "projectile")
(depends-on "s")
(depends-on "smartparens")
(depends-on "yasnippet")

Обратите внимание, что это не входит в ваш файл конфигурации Emacs, а скорее в ~/.emacs.d/Cask.

Pallet обновляет файл Cask с помощью пакетов, установленных интерактивно, например, через M-x package-list-packages, так что вам не нужно вручную поддерживать вышеуказанный файл.

41
ответ дан Community 11 January 2014 в 16:39
поделиться

Все эти ответы будут работать, но я настоятельно рекомендую использовать use-package

, найденный здесь: https://github.com/jwiegley/use-package

use-package не только автоматически установит ваши недостающие пакеты, но и значительно упростит ваш init.el.

Вот пример из моего init.el

;; initial package setup
(push "path/to/use-package" load-path)
(require 'use-package)
(require 'package)
(mapc (lambda(p) (push p package-archives))
      '(("marmalade" . "http://marmalade-repo.org/packages/")
        ("melpa" . "http://melpa.milkbox.net/packages/")))
(package-refresh-contents)
(package-initialize)

;; this will install undo-tree if it's not there
;; and it will set it up how I want
(use-package undo-tree
  :init (global-undo-tree-mode 1)
  :bind (("C-c j" . undo-tree-undo)
         ("C-c k" . undo-tree-redo)
         ("C-c l" . undo-tree-switch-branch)
         ("C-c ;" . undo-tree-visualize))
  :ensure t)

Взгляните на мой init.el здесь: https://github.com/jordonbiondo/.emacs.d/blob/ master / init.el

каждый блок пакета использования будет устанавливать указанный пакет, если его там нет, и он инкапсулирует все мои дополнительные настройки для таких пакетов, как привязки клавиш, перехватчики и другие настройки.

34
ответ дан Jordon Biondo 11 January 2014 в 16:39
поделиться

Часть кода в вашем файле инициализации может сделать это довольно легко:

(setq my-onlinep nil)
(unless
    (condition-case nil
        (delete-process
         (make-network-process
          :name "my-check-internet"
          :host "elpa.gnu.org"
          :service 80))
      (error t))
  (setq my-onlinep t))

(setq my-packages
      '(ack-and-a-half
        ac-nrepl
        ... more packages here ...
        web-mode
        yaml-mode
        yari
        yasnippet))

(when my-onlinep
  (package-refresh-contents)
  (cl-loop for p in my-packages
           unless (package-installed-p p)
           do (package-install p)))

Онлайн-проверка на самом деле не нужна, но помогает избежать зависания запуска Emacs при отсутствии подключения к Интернету.

Мой полный конфиг см. Здесь: http://steckerhalter.co.vu/steckemacs.html#sec-2-5

.
6
ответ дан steckerhalter 11 January 2014 в 16:39
поделиться

В дополнение к превосходным вариантам, предложенным выше, вы также можете взглянуть на el-get . Я использую его для своей установки emacs и был очень доволен этим.

Чем он отличается?

Два основных преимущества el-get:

1) Он может получать пакеты из различных источников, на сайте перечислены следующие возможные источники

github, emacswiki, GNU ELPA или Marmalade, частные страницы, git, bzr, CVS и т. д.

2) Может использоваться для запуска таких команд ОС, как make если требуется во время установки пакета. Это облегчает установку пакетов, которые имеют не-elisp части, например. emacs-jedi , ropemacs и т. Д.

Установка el-get

Установка довольно проста, вам нужно добавить следующий код начальной загрузки, указанный на их веб-сайт для вашего файла инициализации.

(add-to-list 'load-path "~/.emacs.d/el-get/el-get")

(unless (require 'el-get nil 'noerror)
  (with-current-buffer
      (url-retrieve-synchronously
       "https://raw.github.com/dimitri/el-get/master/el-get-install.el")
    (goto-char (point-max))
    (eval-print-last-sexp)))

(el-get 'sync)

Это установит el-get, если он еще не установлен.

Установка пакетов

Затем можно объявить пакеты, которые вы хотите установить, и разрешить el-get установить их

;; List of packages you want to install
(defvar my-packages '(auto-complete flycheck smart-parens...))
;; This will install any package from my-packages which is not already installed
(el-get 'sync my-packages)

ИЛИ

Вы всегда можете установить пакеты вручную, выполнив el-get-install <package-name> RET, я сомневаюсь, что вы захотите установить десятки различных пакетов таким образом, но это возможно.

Обновление пакетов

Обновление пакетов - это просто процесс el-get-update для обновления определенного пакета или el-get-update-all для обновления всех установленных пакетов.

5
ответ дан 11 January 2014 в 16:39
поделиться

Вот мой ответ на похожий вопрос: https://stackoverflow.com/a/14838150/245173 . Код автоматически установит отсутствующие пакеты, но не обновит существующие, поэтому только первый запуск будет медленным.

2
ответ дан Community 11 January 2014 в 16:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: