Ruby-режим в Emacs в сокращенном ключе для компиляции / запуска? - PullRequest
4 голосов
/ 22 января 2012

Я немного знаю об Emacs, поскольку использовал его для написания своей диссертации в AUCTex.

Однако, на этот раз, когда я пытался написать какую-нибудь простую программу на ruby, в основном для изучения, я нашел в Ruby Emacs и не смог найти то, что искал.

Исходя из того, что я прочитал, я знаю, что используемый мной Emacs (23.3.5) имеет встроенный режим ruby, который должен поддерживать в основном подсветку синтаксиса, автоматическое отступление и т. Д. Но как насчет сочетания клавиш? для отладки / запуска, что-то вроде Mode Compile ?

Ответы [ 3 ]

3 голосов
/ 22 января 2012

Я бы предложил использовать inf-ruby для получения сеанса IRB внутри Emacs. Тогда вы можете использовать, например, C-c C-l для вызова inf-ruby-load-file для загрузки буфера в сеансе IRB.

Кроме того, вы также можете использовать Flymake , чтобы постоянно проверять синтаксис вашего буфера на ruby -c. Вот 3 функции, которые я взял из emacs-starter-kit :

(defun flymake-ruby-init ()
  (let* ((temp-file (flymake-init-create-temp-buffer-copy
                     'flymake-create-temp-inplace))
         (local-file (file-relative-name
                      temp-file
                      (file-name-directory buffer-file-name))))
    ;; Invoke ruby with '-c' to get syntax checking
    (list "ruby" (list "-c" local-file))))

(defun flymake-ruby-enable ()
  (when (and buffer-file-name
             (file-writable-p
              (file-name-directory buffer-file-name))
             (file-writable-p buffer-file-name)
             (if (fboundp 'tramp-list-remote-buffers)
                 (not (subsetp
                       (list (current-buffer))
                       (tramp-list-remote-buffers)))
               t))
    (local-set-key (kbd "C-c d")
                   'flymake-display-err-menu-for-current-line)
    (flymake-mode t)))

(eval-after-load 'ruby-mode
  '(progn
     (require 'flymake)
     (push '(".+\\.rb$" flymake-ruby-init) flymake-allowed-file-name-masks)
     (push '("Rakefile$" flymake-ruby-init) flymake-allowed-file-name-masks)
     (push '("^\\(.*\\):\\([0-9]+\\): \\(.*\\)$" 1 2 nil 3)
           flymake-err-line-patterns)
     (add-hook 'ruby-mode-hook 'flymake-ruby-enable)))

Дополнительно я использую следующую функцию для отображения ошибок Flymake в точке:

;; Flymake errors at point from Dave Love on gnu.emacs.help:
(defun my-flymake-show-help ()
   (when (get-char-property (point) 'flymake-overlay)
     (let ((help (get-char-property (point) 'help-echo)))
       (if help (message "%s" help)))))

(add-hook 'post-command-hook 'my-flymake-show-help)

Все вышеперечисленное вместе дает очень хороший опыт Ruby Emacs.

3 голосов
/ 23 января 2012

Я предлагаю использовать quickrun.el , который поддерживается мной.

quickrun.el - это расширение для выполнения буфера редактирования. quickrun.el поддерживает много языков программирования и языков разметки, конечно поддерживает Ruby.

Вы скачиваете quickrun.el по следующему URL.

https://raw.github.com/syohex/emacs-quickrun/master/quickrun.el

И вы добавляете quickrun.el, следующий параметр, в ваш файл конфигурации и оцениваете его (или перезапускаете Emacs).

(add-to-list 'load-path "~/.emacs.d/elisp") ;; If you install quickrun.el to ~/.emacs.d/elisp
(require 'quickrun)

Теперь вы можете использовать следующую команду для выполнения текущего буфера.

M-x quickrun

Вы можете использовать компилировать текущий буфер (не выполнять).

M-x quickrun-compile-only

Если вы часто будете использовать команду quickrun, вам следует назначить привязки клавиш, как показано ниже.

(global-set-key (kbd "<f7>") 'quickrun)
(global-set-key (kbd "<f8>") 'quickrun-compile-only)

Пожалуйста, смотрите страницу github , если вы знаете больше информации о quickrun.el.

Спасибо

0 голосов
/ 22 января 2012

Вы можете запустить программу ruby ​​из M-x compile и использовать команду "ruby -w your_program".

Вывод будет аналогичен выводу компиляции, поэтому вы можете нажать на ошибки, чтобы перейти к строке.

Похоже, что mode-compile также поддерживает режим ruby.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...