Делюсь опытом в описанных технологиях. Блог в первую очередь выполняет роль памяток для меня самого.

EMACS: автоустановка пакетов и хоткеи в русской раскладке

Комментариев нет

Введение

Наткнулся совершенно случайно на две отличных статьи про EMACS.

Если лень читать, то ниже приводятся готовые коды для включения в .emacs

Автоустановка пакетов

Автоустановка пакетов
(require 'cl)
(require 'package)

;; Список пакетов для установки, на самом деле у меня их под 50 штук, но смысл
;; публиковать их здесь?

(defvar cfg-var:packages '(
    anaconda-mode
    company
    company-anaconda
    company-quickhelp
    company-tern
    company-web
    emmet-mode
    ergoemacs-mode
    flycheck
    powerline
    py-autopep8
    py-isort
    web-mode
    yafolding
    yasnippet
    ))

(defun cfg:install-packages ()
    (let ((pkgs (remove-if #'package-installed-p cfg-var:packages)))
        (when pkgs
            (message "%s" "Emacs refresh packages database...")
            (package-refresh-contents)
            (message "%s" " done.")
            (dolist (p cfg-var:packages)
                (package-install p)))))

(add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/") t)
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/") t)
(add-to-list 'package-archives '("melpa-stable" . "http://stable.melpa.org/packages/") t)
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t)
(package-initialize)

(cfg:install-packages)

Рабочее решение, которое гораздо лучше тех, что предложены на StackOverflow.

Хоткеи в русской раскладке

Хоткеи в русской раскладке
;; Это надо добавить ближе к началу .emacs
(defun cfg:reverse-input-method (input-method)
  "Build the reverse mapping of single letters from INPUT-METHOD."
  (interactive
   (list (read-input-method-name "Use input method (default current): ")))
  (if (and input-method (symbolp input-method))
      (setq input-method (symbol-name input-method)))
  (let ((current current-input-method)
        (modifiers '(nil (control) (meta) (control meta))))
    (when input-method
      (activate-input-method input-method))
    (when (and current-input-method quail-keyboard-layout)
      (dolist (map (cdr (quail-map)))
        (let* ((to (car map))
               (from (quail-get-translation
                      (cadr map) (char-to-string to) 1)))
          (when (and (characterp from) (characterp to))
            (dolist (mod modifiers)
              (define-key local-function-key-map
                (vector (append mod (list from)))
                (vector (append mod (list to)))))))))
    (when input-method
      (activate-input-method current))))

;; А вот эта строка должна быть в самом конце
(cfg:reverse-input-method 'russian-computer)

Комментариев нет :

Отправить комментарий