2012-01-22 14 views
4

私はAUCTexで自分の論文を書くのにEmacsについて少し知っています。コンパイル/実行のためのショートカットキーのEmacsのRubyモード?

しかし、今度は簡単なルビープログラムを書くのが大好きですが、私はEmacsのRubyを探していて、探しているものが見つかりませんでした。

私が今までに読んだところによると、私が使っているEmacs(23.3.5)は基本的に構文の強調表示や自動インデントなどをサポートするビルド中のルビモードを持っていることが分かりました。しかし、ショートカットデバッグ/実行のキー。Mode Compile

+0

私はここで質問は表示されません。 'mode-compile'をキーにバインドすることは、Emacsの他のキーバインディングのように行われます。 'ruby-mode 'は' .rb'拡張子を持つすべてのファイルに入力されます。それは 'M-x describe-mode'を用いて他のすべてのモードと同様に文書化されています。数多くのEmacsチュートリアルがあり、お気に入りの検索エンジンでアクセスできます。 – pmr

+0

これを明確な特定の質問に分解し、個々に対処できるようにしてください。どのような鍵が欠けていると思いますか?このキーを押すと何が起こりますか?あなた自身でこれを解決するためにどのような努力をしましたか?何があなたをブロックしてしまったのですか? つまり、すべての作業を手伝ってくれる人を作ってはいけません。 –

+0

@evernt_jr、私はEmacsについて多くの経験がないので、私はちょうどルビーモードが何をしているのか分かりません。もしそうなら、 'ruby -w my_program.rb'を使ってコンパイル/実行しますか? –

答えて

3

私が維持しているquickrun.elを使用することをお勧めします。

quickrun.elは編集バッファを実行するための拡張機能です。 quickrun.elは多くのプログラミング言語とマークアップ言語をサポートしていますが、もちろん はRubyをサポートしています。

URLに続いて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コマンドをよく使用する場合は、次のようにキーバインディングを割り当てる必要があります。

quickrun.elの詳細については、github pageを参照してください。

ありがとうございました

+0

ありがとう、私は選択肢によって損なわれているように見えます:D –

+1

ありがとう、私は今quickrunを使用しています。私は/ configをインストールして使用するのが相対的に簡単なので、自分の使い方が良いと考えています。そして、私は期待通りに動作します:結果を見るために余分な手順を踏まずにコマンドを入力した後にコンパイル/実行してください。 –

+0

素晴らしいパッケージsyohexをありがとう! – Brandon

0

あなたは "ルビー-w your_program" M-XcompileからRubyのプログラムを実行し、使用を得ることができます。

出力はコンパイル出力と似ていますので、エラーをクリックすると行に行くことができます。

モードコンパイルのように見えますが、ルビモードもサポートされています。

+0

F12は 'M-x compile'よりもうまく動作しますが、私はモードコンパイルのような何かの機能を探しています。モードコンパイルの問題は、メンテナンスから外れているように見えることです。 –

+0

申し訳ありませんが、F12が自分で定義したショートカットキーであることに気付きました。しかし、私の主張は、ファイル名を入力する必要なしにプログラムを実行/コンパイルできるようにすることです.M-xコンパイルでは、ほとんどの場合自動で完了するので、実際にはそれほど悪くはありません。私は主に質問をして自分のオプションを検討し、他の人が使っているものを見るようにしています。これは確かに有効なポイントです。そして私はこのアプローチの単純さを見ることができます。 –

3

inf-rubyを使ってEmacs内でIRBセッションを取得することをお勧めします。次に、 C-C C-linf-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) 

上記のすべてが一緒に非常にまともなルビーEmacsのために作ります経験。

+0

私はinf-rubyを動かそうとしています。私はちょうどELPAを発見し、inf-rubyをインストールしました。私はまだそれをする必要がありますか?手動でインストールする場合は、次の操作を行う必要があります。 ;; *あなたのロードパスのどこかにファイルをドロップしてください(恐らく〜/ .emacs.d) ;; * .emacsファイルに次の行を追加してください: ;; (自動ロード 'inf-ruby "inf-ruby" "劣悪なRubyプロセスを実行する" t) ;; (自動ロード 'inf-ruby-keys "inf-ruby" "" "t) ;; (ルックモード後のeval-after-load 'ruby-mode ;;'(add-hook 'ruby-mode-hook' inf-ruby-keys)) そうでなければ、最初にinf-rubyを読み込むために 'Cc Cs' 'Cc Cl' –

+0

あなたのロードパスにあるはずですが、ちょっとスクラッチバッファーで遊んで、 'ruby-mode-hook'などを見て何かを設定する必要があるかどうか確認してください。 –

+0

IRBのパフォーマンスはRubyのシェルまたはそれよりも遅いほど良い/遅いでしょうか? –

関連する問題