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 спрашивает имя профиля, и подсасывает дополнительные костыли.
Пожалуй, хватит на простенький сетап, с которым можно работать.
офтоп . Про что eyeOS на ownCloud поменял? (чем плюшки, го и гейши лучше чем в eyeOS)
@domovoy: да не пользовался я им, вообще. поставил, пощупал, забыл. А ownCloud больше действительно полезных фич.