LINUX.ORG.RU

emacs - установка плагинов из конфига

 


0

2

В vim я мог у конфиге прописать набор интересующих меня плагинов и потом одной командой установить или обновить их:

Plug 'morhetz/gruvbox' 

А можно ли так же сделать в emamcs и как ? Я нашел M-x list-packages, но там надо выбирать и устанавливать по одному.

★★
;;; ...

;; now set our own packages
(setq
 my:el-get-packages
 '(el-get				; el-get is self-hosting
   escreen            			; screen for emacs, C-\ C-h
   php-mode-improved			; if you're into php...
   switch-window			; takes over C-x o
   auto-complete			; complete as you type with overlays
   yasnippet 				; powerful snippet mode
   zencoding-mode			; http://www.emacswiki.org/emacs/ZenCoding
   color-theme		                ; nice looking emacs
   color-theme-tango))	                ; check out color-theme-solarized

;;.....

;; install new packages and init already installed packages
(el-get 'sync my:el-get-packages)

https://github.com/dimitri/emacs-kicker/blob/master/init.el

Hertz ★★★★★
()

но там надо выбирать и устанавливать по одному

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

no-such-file ★★★★★
()

Я себе сделал так:

(defun need-package (package &optional min-version no-refresh)
  "Install given PACKAGE, optionally requiring MIN-VERSION.
If NO-REFRESH is non-nil, the available package lists will not be
re-downloaded in order to locate PACKAGE."
  (if (package-installed-p package min-version)
	   t
	 (if (or (assoc package package-archive-contents) no-refresh)
		 (package-install package)
	   (progn
		 (package-refresh-contents)
		 (require-package package min-version t)))))


(defun require-package (package &optional min-version no-refresh)
  "Load PACKAGE at least MIN-VERSION (download if need).
If NO-REFRESH is non-nil, the available package lists will not be
re-downloaded in order to locate PACKAGE."
  (need-package package min-version no-refresh)
  (require 'package))

Использую так:

;;; Auto-complete
(require-package 'company)
(need-package 'helm-company)
(global-company-mode)
(global-set-key (kbd "C-:") 'helm-company)

Это всё в init.el

feofan ★★★★★
()
Последнее исправление: feofan (всего исправлений: 1)

Вообще рекомендую в целом посмотреть на spacemacs. Там сразу идут не просто пакеты, а готовые настройки ко множеству интересных вещей. Т.е. ты в своем .spacemacs просто выбираешь например поддержку Python, а он сам ставит и настраивает.

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

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

Решил сначала начать с пустого конфига и попробовать самому разобраться, а потом перейти на spacemacs

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

Да, согласен, я тоже начинал не с него, а сам писал свой конфиг. Но в целом приходишь к тому, что свой сконфигурирован так как ты хочешь, но у чужого больше интересных фич и в принципе его можно тоже сконфигурировать :)

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

Но в целом приходишь к тому, что свой сконфигурирован так как ты хочешь, но у чужого больше интересных фич и в принципе его можно тоже сконфигурировать :)

Проще конкретные интересные фичи стащить. Но я - отдельная история. Я даже не использую oh-my-zsh при том, что у меня весьма развесистый конфиг zsh.

Хотя вимеру со стажем я могу посоветовать поставить spacemacs, ибо переделывать все нужные плагины под evil история долгая, а там уже эту работу сделали. Но, ИМХО, режимы вим - это не удобно. Это я понял, когда перестал ими пользоваться.

feofan ★★★★★
()
Последнее исправление: feofan (всего исправлений: 3)
Ответ на: комментарий от Hertz

Этот вариант подразумевает, что el-get уже лежит в конфиге ?

А понял, надо еще вот это добавить:

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

(unless (require 'el-get nil t)
  (with-current-buffer
      (url-retrieve-synchronously
       "https://github.com/dimitri/el-get/raw/master/el-get-install.el")
    (end-of-buffer)
    (eval-print-last-sexp)))
lemas ★★
() автор топика
Последнее исправление: lemas (всего исправлений: 1)
Ответ на: комментарий от Hertz

Нет, все равно - не видит пакет material-theme

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

(unless (require 'el-get nil 'noerror)
  (require 'package)
  (add-to-list 'package-archives
               '("melpa" . "http://melpa.org/packages/"))
  (package-refresh-contents)
  (package-initialize)
  (package-install 'el-get)
  (require 'el-get))

(add-to-list 'el-get-recipe-path "~/.emacs.d/el-get-user/recipes")
(el-get 'sync)

;; My packages
(setq
 my:el-get-packages
 `(el-get            ; el-get is self-hosting
   material-theme))  ; color-theme

;; install new packages and init already installed packages
(el-get 'sync my:el-get-packages)

Хотя на сайте оно вроде есть http://melpa.org/#/material-theme

lemas ★★
() автор топика
Последнее исправление: lemas (всего исправлений: 3)
Ответ на: комментарий от Hertz

В общем то, решил проблему добавив явно репозиторий:

(el-get-bundle "material-theme"
  :type "git"
  :url "https://github.com/cpaulik/emacs-material-theme"
)

Но не понятно, на сайте MELPA пакет этот и так есть

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

Добавь эту строчку после блока «my:el-get-packages»:

(el-get-bundle cpaulik/emacs-material-theme)
А (el-get 'sync) удали. Потому что синкать надо один раз, и уже после того, как список пакетов подготовлен, что у тебя, собственно, (el-get 'sync my:el-get-packages) и делает.

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

Но не понятно, на сайте MELPA пакет этот и так есть

;; Build the El-Get copy of ELPA and EmacsWiki packages if we have not
;; built them before
(unless (file-directory-p el-get-recipe-path-elpa)
  (el-get-elpa-build-local-recipes))
(unless (file-directory-p el-get-recipe-path-emacswiki)
  (el-get-emacswiki-build-local-recipes))
iVS ★★★★★
()
Ответ на: комментарий от lemas

Надо в el-get разбираться путём. Как я понял, он github чешет первым делом. Можно конечно настроить так, чтобы пакет и мельпы первым делом дёргался, но я не вникал, с гита тянет и ладно.
Это можно короче записать:

(el-get-bundle "material-theme"
  :type "git"
  :url "https://github.com/cpaulik/emacs-material-theme")
Заменив на:
(el-get-bundle cpaulik/emacs-material-theme)

Hertz ★★★★★
()

Тоже приплюсую use-package.

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