Оценка буфера на основе типа файла в Emacs - PullRequest
1 голос
/ 03 декабря 2011

В настоящее время в Vim у меня есть следующие настройки:

au Bufenter *.clj map <F5> :!clojure1.2 %<CR> 
au Bufenter *.py map <F5> :!python %<CR> 

Что, по сути, означает, когда я открываю новый буфер с помощью .clj расширение связывает f5 для оценки текущего буфера с помощью команды Строка команды "clojure1.2 filename". Следующая строка является привязкой для файлов python.

Мой вопрос - как мне добиться такого же в Emacs? Я искал несколько недель, но не могу найти ничего простого. я Я хотел бы попробовать режимы clojure и python. Но я бы интересно узнать, смогу ли я достичь вышеупомянутого в нескольких строчках Elisp.

1 Ответ

4 голосов
/ 03 декабря 2011

Примерно так должно получиться:

(defun run-it ()
  "Run the appropriate executable with the file of the current buffer as input."
  (interactive)
  (let ((command (cdr (assq major-mode '((clojure-mode . "clojure1.2")
                                         (python-mode . "python"))))))
    (unless command
      (error "No command found for major mode: %s" major-mode))
    (shell-command (format "%s %s" command (buffer-file-name)))))
(define-key python-mode-map (kbd "<f5>") 'run-it)
(define-key clojure-mode-map (kbd "<f5>") 'run-it)
...