xEMACS: полезности

Vi конечно хорош, kate местами даже лучше, но ничто не сравниться с verilog-mode в емаксе. Потому-то я и решил окончательно пересесть на емакс.
Однако, емакс такое блюдо, которое перед применением надо доработать напильником. Вот, что сделал я.
Для начала, надо сделать синхронизацию инстансов на работе, дома… Да и вообще на всех компьютерах, где я работаю. Потому мои кастомные скрипты были сложены в ~/.emacs.d, которое стало гит репозиторием с origin’ом указывающим на мой аккаунт на гитхабе. Далее надо допилить ~/.emacs чтобы тот автоматически цеплял ~/.emacs.d/autoexec.el Я это сделал вот так:

(load-file "~/emacs.d/autoexec.el")

Остальное под катом.

Отлично, теперь немного облегчаем синхронизацию…

(defun th-emacs-push()
  (interactive)
  (shell-command (concat "cd ~/.emacs.d; git commit -a -m \"Autocommit from emacs\"; git push"))
  )
 
(defun th-emacs-pull()
  (interactive)
  (shell-command "cd ~/.emacs.d; git pull;")
  )
 
(defun th-reload()
  (interactive)
  (message "Rerunning autoexec")
  (load-file "~/.emacs.d/autoexec.el");
  )
 
(defalias 'epush  'th-emacs-push)
(defalias 'epull  'th-emacs-pull)
(defalias 'reload 'th-reload)

Фактически — это разрешает перечитывать конфиг по M-x reload, по M-x epush автокоммитить изменения и пинать их на гитхаб, выдергивать их с гитхаба по M-x epull. Вот так мне намного больше нравится.

Далее. хоткеи. Мне не проблема себя переучить на емаксовский вариант (cut/copy/paste), но так как я юзаю уйму софта, который предпочитает обычные ctrl+c/ctrl+v/etc дабы избежать путнаницы я решил приучить к этому емакс. По счатью — для этого есть cua-mode, надо только юзнуть это по дефолту.

(cua-mode t)
(setq cua-auto-tabify-rectangles nil) ;; Don't tabify after rectangle commands
(transient-mark-mode 1) ;; No region when it is not highlighted
(setq cua-keep-region-after-copy t) ;; Standard Windows behaviour

Далее. Интеграчим это безобразие с KDE, дабы не видеть гномовского диалога открытия файлов. Код я нашел в сети — только добавил пару свистелок в виде запоминания последней директории, откуда открывали файл.
Заклинание на EMACS-LISP ниже:

(setq th-ffk-path '"~")
(defun th-find-file-kio ()
  (interactive)
  (let ((file-name
         (replace-regexp-in-string
          "[\n]+" ""
          (shell-command-to-string (concat "kdialog --getopenurl " th-ffk-path " 2> /dev/null")))))
    (message file-name)
    (cond
     ((string-match "^file://" file-name)
      ;; Work arround a bug in kioexec, which causes it to delete local
      ;; files. (See bugs.kde.org, Bug 127894.) Because of this we open the
      ;; file with `find-file' instead of emacsclient.
      (let ((local-file-name (substring file-name 7)))
        (message "Opening local file '%s'" local-file-name)
	(setq th-ffk-path local-file-name )
        (find-file local-file-name)))
     ((string-match "^[:space:]*$" file-name)
      (message "Empty file name given, doing nothing..."))
     (t
      (message "Opening remote file '%s'" file-name)
      (save-window-excursion
        (shell-command (concat "kioexec emacsclient " file-name "&"))))))
  )
(defalias 'ffk    'th-find-file-kio )

Теперь по M-x ffk — выполняется «мечта идиота» — KDEшный диалог открытия файлов в xemacs

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

(defun th-prof (prof)
  (interactive "sProfile, plz: ")
  (load-file (concat "~/.emacs.d/profiles/" prof ".el"))
  )
(defalias 'prof   'th-prof )

M-x prof спрашивает имя профиля, и подсасывает дополнительные костыли.
Пожалуй, хватит на простенький сетап, с которым можно работать.

xEMACS: полезности: 2 комментария

    1. @domovoy: да не пользовался я им, вообще. поставил, пощупал, забыл. А ownCloud больше действительно полезных фич.

Добавить комментарий