Комментарии 7
Поделюсь ка я и своим init.el, может кому пригодится.
В файле собраны настройки для Clojure, Python, Ruby, Octave, R, PHP и Markdown, а также некоторые настройки шрифтов, фикс для бага xterm (из-за которого в консольной версии курсор не двигается вверх), плюс пара горячих клавиш, к которым у меня лежала душа. Код разбит на секции, и любую из них можно выбросить без вреда для здоровья. Исключение — секция для Python, где прописаны настройки emacs-for-python, влияющие на поведение всего редактора. Если что-то не работает, скорее всего не хватает либо имаксовских пакетов, либо внешних библиотек, что, впрочем, обычно чинится за 15-20 минут.
~/.emacs.d/init.el
;; path
(setq root-dir (expand-file-name "~/.emacs.d"))
(add-to-list 'load-path root-dir)
;; (add-to-list 'load-path (concat root-dir "/misc"))
(global-set-key "\C-q" 'save-buffers-kill-terminal)
(cua-mode)
(show-paren-mode)
;; fixing xterm bug
(define-key input-decode-map "\e[1;2A" [S-up])
;; Marmelade
(require 'package)
(add-to-list 'package-archives
'("marmalade" .
"http://marmalade-repo.org/packages/"))
(package-initialize)
;; Programming shortcuts
;; (global-set-key (kbd "C-_") 'comment-region)
;; Clojure: nrepl
(when (not (package-installed-p 'nrepl))
(package-install 'nrepl))
;; Clojure: key bindings
(add-hook 'clojure-mode-hook
'(lambda () (local-set-key "\C-d" 'nrepl-eval-expression-at-point)))
;; Python
;; NOTE: this section contains a number of useful setting for all modes,
;; not only python mode!
(add-to-list 'load-path "~/.emacs.d/emacs-for-python/")
(require 'epy-setup) ;; It will setup other loads, it is required!
(require 'epy-python) ;; If you want the python facilities [optional]
(require 'epy-completion) ;; If you want the autocompletion settings [optional]
(require 'epy-editing) ;; For configurations related to editing [optional]
(require 'epy-bindings) ;; For my suggested keybindings [optional]
(require 'epy-nose) ;; For nose integration
(epy-setup-ipython)
(setq skeleton-pair nil)
(defun trim-string (string)
(replace-regexp-in-string "\\`[ \t\n]*" ""
(replace-regexp-in-string "[ \t\n]*\\'" "" string)))
(defun python-shell-send-line ()
(interactive)
(python-shell-send-string (trim-string (thing-at-point 'line)) nil t))
(add-hook 'python-mode-hook
'(lambda ()
(local-set-key (kbd "C-d") 'python-shell-send-line)
(local-set-key (kbd "C-c C-k") 'python-shell-send-buffer)
(local-set-key (kbd "C-c !") 'run-python)
(pretty-lambda-mode)
(jedi:setup)
(setq jedi:setup-keys t)
(setq jedi:complete-on-dot t)))
;; (setq python-remove-cwd-from-path nil)
;; (require 'ipython)
;; (setq py-shell-name "ipython")
;; Ruby
(add-to-list 'load-path "~/.emacs.d/ruby")
(autoload 'ruby-mode "ruby-mode"
"Mode for editing ruby source files")
(add-to-list 'auto-mode-alist '("\\.rb$" . ruby-mode))
(add-to-list 'interpreter-mode-alist '("ruby" . ruby-mode))
(autoload 'run-ruby "inf-ruby"
"Run an inferior Ruby process")
(autoload 'inf-ruby-keys "inf-ruby"
"Set local key defs for inf-ruby in ruby-mode")
(add-hook 'ruby-mode-hook
'(lambda ()
(inf-ruby-keys)
(local-set-key "\C-d" 'ruby-send-definition)))
(add-hook 'ruby-mode-hook 'turn-on-font-lock)
;; Octave
(autoload 'octave-mode "octave-mod" nil t)
(setq auto-mode-alist
(cons '("\\.m$" . octave-mode) auto-mode-alist))
(add-hook 'octave-mode-hook
(lambda ()
(abbrev-mode 1)
(auto-fill-mode 1)
(if (eq window-system 'x)
(font-lock-mode 1))))
(add-hook 'octave-mode-hook
(lambda ()
(local-set-key "\C-d" 'octave-send-block)
(local-set-key "\C-f" 'octave-send-defun)
(local-set-key "\C-j" 'octave-send-line)))
;; R
(add-to-list 'auto-mode-alist '("\\.r$" . R-mode))
(add-to-list 'auto-mode-alist '("\\.R$" . R-mode))
;; PHP
(add-to-list 'auto-mode-alist '("\\.php$" . php-mode))
(add-hook 'php-mode-hook
(lambda ()
(setq tab-width 4) ; or any other preferred value
(defvaralias 'c-basic-offset 'tab-width)
(defvaralias 'cperl-indent-level 'tab-width)))
;; Markdown
(add-to-list 'auto-mode-alist '("\\.md" . markdown-mode))
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(font-lock-comment-face ((t (:foreground "magenta")))))
В файле собраны настройки для Clojure, Python, Ruby, Octave, R, PHP и Markdown, а также некоторые настройки шрифтов, фикс для бага xterm (из-за которого в консольной версии курсор не двигается вверх), плюс пара горячих клавиш, к которым у меня лежала душа. Код разбит на секции, и любую из них можно выбросить без вреда для здоровья. Исключение — секция для Python, где прописаны настройки emacs-for-python, влияющие на поведение всего редактора. Если что-то не работает, скорее всего не хватает либо имаксовских пакетов, либо внешних библиотек, что, впрочем, обычно чинится за 15-20 минут.
0
M-x: el-get-install emacs-nav
не работает
0
А для какой версии Питона все это должно работать? А то у меня стоит 2.7.5 и 3.x.x и в итоге, как бы я не настраивал, ничего не вышло.
0
Теоретически должно работать на любой версии, у меня на 2.7.3 и 2.7.5 все дополняет. Тут больше играет роль версия Emacs, она у Вас точно 24?
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Emacs как IDE для Python