2014-12-17 2 views
0

Я использую Emacs 24.3.1 на Ubuntu 14.4. Я бы хотел, чтобы команда list-packages перечислила пакеты из депозитария MELPA. Я следовал инструкциям here и here, но безрезультатно. В частности, следуя советам в первой ссылке я добавил следующие строки в моем ~ файле/EMACS:.Как изменить репозиторий пакетов emacs?

(when (>= emacs-major-version 24) 
    (require 'package) 
    (package-initialize) 
    (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t) 
) 

и перезапущен мой Emacs. Это не имеет никакого эффекта, поэтому я удалил строки выше и, следуя советам во второй ссылке, добавлены следующие строки в моем ~/.emacs файл:

(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") 
         ("marmalade" . "https://marmalade-repo.org/packages/") 
         ("melpa" . "http://melpa.milkbox.net/packages/"))) 

Я перезагрузил мой Emacs, но это тоже не повлияло.

Причина, по которой я думаю, что эти попытки не повлияли на то, что после каждой попытки я перечислил доступные пакеты с помощью команды list-package и не нашел интересующий нас пакет highlight-chars.el и который появляется в списке на the MELPA website.

Как я могу инструктировать команду list-packages для поиска депозитария MELPA?

+1

Не оставляйте '(package-initialize)'. –

+0

@ abo-abo: Спасибо, но я не понимаю. –

+0

Если в первой версии кода есть 'package-initialize'. Его нет во второй версии. –

ответ

2

Первое, что вы должны проверить после перезапуска, - это значение переменной.

C-чvpackage-archivesRET

ли или нет это значение, которое вы пытались установить это то, что основной интерес.

Если это не так, то предположительно что-то еще в вашей конфигурации задает противоречивое значение.

рискну предположить, что у вас есть package-archives переменная настроены, и что хранимые пользовательские значения затирания значения, которое вы настройка с setq.

Например, следующий файл инициализации будет иметь эффект, описанный:

(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") 
         ("marmalade" . "https://marmalade-repo.org/packages/") 
         ("melpa" . "http://melpa.milkbox.net/packages/"))) 

(custom-set-variables 
;; custom-set-variables was added by Custom. 
;; If you edit it by hand, you could mess it up, so be careful. 
;; Your init file should contain only one such instance. 
;; If there is more than one, they won't work right. 
'(package-archives (quote (("gnu" . "http://elpa.gnu.org/packages/"))))) 
(custom-set-faces 
;; custom-set-faces was added by Custom. 
;; If you edit it by hand, you could mess it up, so be careful. 
;; Your init file should contain only one such instance. 
;; If there is more than one, they won't work right. 
) 

Эти custom-set-* формы могут также быть в отдельном файле, и, следовательно, менее очевидно.

Попробуйте M-хcustomize-optionRETpackage-archivesRET

Выберите "Revert" и "Erase Адаптации", чтобы удалить значение, сохраненное с помощью этого интерфейса.

Я предположим, что факт, что инициализация Emacs по умолчанию происходит после оценки вашего файла инициализации может также быть фактором здесь. Люди часто рекомендуют звонить (package-initialize) в ваш файл инициализации, но не оставляйте информацию, которую вы хотите иметь (setq package-enable-at-startup nil), в сочетании с этим, чтобы предотвратить повторение инициализации дважды.Если эта вторая инициализация возникает после изменения переменной пакетных архивов с помощью настройки, это может стать дополнительным препятствием для работы системы, как вы этого хотели.

+0

Итак, вот как я решил решить проблему. Я переместил инструкцию setq в начало файла .emacs, и теперь он работает. –