我对Emacs有一点了解,因为我用它在AUCTex中写了我的论文。
但是,这次尝试编写一些简单的ruby程序主要是为了学习,我在Emacs中搜索Ruby并找不到我要找的东西。
根据我到目前为止所读到的内容,我知道我使用的Emacs(23.3.5)具有内置ruby模式,基本上应该支持语法高亮,自动缩进等。但是快捷键怎么样对于调试/运行,类似于Mode Compile?
答案 0 :(得分:3)
我建议使用inf-ruby
在Emacs中获取IRB会话。然后你可以使用例如 C-c C-l 调用inf-ruby-load-file
在IRB会话中加载缓冲区。
此外,您可能还希望使用Flymake不断对ruby -c
的缓冲区进行语法检查。以下是我从emacs-starter-kit获取的3个函数:
(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体验。
答案 1 :(得分:3)
我建议使用由我维护的quickrun.el。
quickrun.el是执行编辑缓冲区的扩展。 当然,quickrun.el支持许多编程语言和标记语言 它支持Ruby。
您可以在网址下载quickrun.el。
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)
如果您了解有关quickrun.el的更多信息,请参阅github page。
由于
答案 2 :(得分:0)
您可以从 M-x compile
运行ruby程序并使用“ruby -w your_program”。
输出类似于编译输出,因此您可以单击错误转到该行。
看起来mode-compile也支持ruby-mode。