LINUX.ORG.RU

Emacs autoload packages

 


3

2

В связи с настройкой Emacs, сталкиваюсь с ошибками. Похоже, это будет не первый пост на тему настройки...

EMACS 26.1!

Что-то подсматриваю в http://seancribbs.com/emacs.d

Задача: после копирования .emacs в ~/ и вызове редактора, подтягиваются при наличии сети все зависимости, прописанные в конфиге.

Недавно мне советовали:

(defvar required-packages
  '(список-пакетов))

(dolist (p required-packages)
  (when (not (package-installed-p p))
    (package-install p)))
Не подтягивает. В примере по ссылке выше:
(let ((refreshed nil))
 (when (not package-archive-contents)
  (package-refresh-contents)
  (setq refreshed t))

  (dolist (p seancribbs/packages)
    (when (and (not (package-installed-p p))
           (assoc pkg package-archive-contents))
      (unless refreshed
        (package-refresh-contents)
        (setq refreshed t))
      (package-install p))))
Ругается emacs: «Symbol's value as variable is void: pkg»
Я посмотрел, что такое assoc:
assoc item alist key(keyword) test(keyword) => cons cell or NIL
Во всей простыне по ссылке выше pkg не определён.

Вопрос: Как же правильно написать автоподтягивание пакетов, указанных в списке (defvar required-packages '(список-пакетов))?

Хм, после совета ниже, первый пакет проходит, а дальше появляется ошибка error: Package ‘web-mode-’ is unavailable (пакет любой, менял положение, например: error: Package ‘prettier-js-’ is unavailable...

Deleted

Например, так:

(require 'package)
(add-to-list 'package-archives
       '("melpa" . "http://melpa.org/packages/") t)

(package-initialize)
(when (not package-archive-contents)
  (package-refresh-contents))

;; require packages list
(defvar packagesList
  '(elpy               ;; Python autocomplete
	smex               ;; Smex is a M-x enhancement for Emacs.
	magit              ;; Work with git scm
	ensime             ;; Scala runtime server
	pomidor            ;; Pomidor is a simple and cool pomodoro technique timer
	lua-mode           ;; Better work with lua
	web-mode           ;; Better work with html,css,template engines
	js2-mode           ;; Better work with javascript
	yaml-mode          ;; Better work with YAML
	json-mode          ;; Better work with json
	scala-mode         ;; Work with scala
	flycheck           ;; Backend for several linters
	restclient         ;; Simple http-client
	sr-speedbar        ;; Filesystem tree
	py-autopep8        ;; Enable python pep8
	expand-region      ;; For expandong text regions
	markdown-mode      ;; Better work with markdown (.md)
	auto-complete      ;; Autocomplete
	highlight-symbol)) ;; Highlight word under cursosr

;; install package in packagesList
(mapc #'(lambda (package)
    (unless (package-installed-p package)
      (package-install package)))
      packagesList)
KernelPanic
()
Ответ на: комментарий от KernelPanic

Да, работает, но ругается странно:

(defvar mylist-packages
  '(
    js2-mode
    prettier-js
    web-mode
    )       
)

error: Package ‘prettier-js-’ is unavailable
При этом M-x packages-list-packages показывает его наличие. Порядок установки имеет значение?

Deleted
()
Последнее исправление: kaban_lyalya (всего исправлений: 2)

Не надо так, используй use-package. Еще с 26 имакса добавили early-init.el как раз для всяких пакетов, но я не стал заморачиваться, чтоб совместимость не терять.

Freyr69 ★★★
()
Ответ на: комментарий от Deleted

Читаешь доку и для каждого пакета рисуешь юзпакадж:

;;;....
Настройка мелпы и елпы
;;;....
;; Bootstrap `use-package'
(unless (package-installed-p 'use-package)
  (package-refresh-contents)
  (package-install 'use-package))

;; твоя автоустановка пакета
(setq use-package-always-ensure t)

(use-package reverse-im
  :config
  (reverse-im-activate "russian-computer"))

(use-package which-key
  :defer 3
  :diminish which-key-mode
  :config (which-key-mode))

(use-package markdown-mode
  :ensure t
  :mode "\\.\\(markdown\\|md\\)$"
  :config
  (setq markdown-fontify-code-blocks-natively t))

(use-package magit
  :commands (magit-status)
  :bind ("C-c g" . magit-status)
  :config
  (setq magit-log-arguments '("--graph" "--show-signature")
        magit-push-always-verify nil
        magit-popup-use-prefix-argument 'default
        magit-revert-buffers t))

....

habamax ★★★
()
Ответ на: комментарий от habamax

Спасибо, пока тему закрываю, рисую свой «мега» конфиг ;)

Deleted
()
Ответ на: комментарий от Freyr69

Благодарю, читаю. Дополню вопрос, как проверить, 24bit цвета или нет? Как реализовать отображение фоном кода цвета? Я запускаю emacs напрямую, бе терминала.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.