[解決済み] EmacsのRubyオートコンプリートがほぼ使えるようになった
質問
私はRsenseを使用して、コードを入力中にオートコンプリートのドロップダウンボックスを表示できるように、emacsの設定を更新しています。 これはほとんどのファイルでうまく機能しますが、私の ruby on rails プロジェクトでコードを編集しているときに、テーブルから答えを選択することができないことに気づきました。
以下は私の設定です。 https://github.com/map7/simple_emacs
Ubuntu 10.04で使用しています。
単純な ruby スクリプト ファイルでは、とてもうまくいきます。私は新しいファイルを開いて、タイプすることができます。
"test".up...
p' 文字を up に入力すると、オプションのリストが表示され、矢印キーでリストを上下に移動し、エンターキーで 1 つ (例: アップケース) を選択できます。
うまくいかないのは、全く同じテストをrailsプロジェクトのベースディレクトリ内で行ったときです。
更新しました。
(require 'rails)の問題であることがわかりました。つまり、emacs-railsプラグインの何かがオートコンプリートを嫌っているのだと思われます。
更新しました。
emacs-rails -> rails-project.elの中にあります。このマクロをコメントアウトすると、オートコンプリートが動作しますが、そうでない場合は動作しません。
(defmacro* rails-project:with-root ((root) &body body)
"If you use `rails-project:root' or functions related on it
several times in a block of code, you can optimize your code by
using this macro. Also, blocks of code will be executed only if
rails-root exist.
(rails-project:with-root (root)
(foo root)
(bar (rails-core:file \"some/path\")))
"
`(let ((,root (rails-project:root)))
(when ,root
(flet ((rails-project:root () ,root))
,@body))))
なぜこれがオートコンプリートを壊してしまうのか、誰か説明してください。
どのように解決するのですか?
ここで思いつくことがあります。マクロは
flet
関数
(rails-project:root)
という値に一度だけ
(rails-project:root)
の直前にある
body
が実行される直前に、(rails-project:root)
は高価なので、一度呼び出して値をキャッシュするのは良いアイデアだと思われます)。
残念ながら、もし
body
の中にあるコードが、意図的に
(rails-project:root)
が返す値を変更するような副作用がある場合、それは何の影響も及ぼさないでしょう。 その変更は
body
の中で呼ばれる他のコードには見えないからです。
flet
という名前のダイナミックバインディングがあるからです。
関連
-
[解決済み] Ruby on Railsのデータベースをパージまたは再作成する
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Rubyで乱数を取得する方法
-
[解決済み] EmacsとVimの違い
-
[解決済み] Eclipse/Javaのコード補完が機能しない
-
[解決済み] Herokuのデータベースを空にする方法
-
[解決済み] Emacsがバックアップファイルを作成する方法を制御するにはどうすればよいですか?
-
[解決済み】.emacsを変更した後、再読み込みするにはどうしたらいいですか?
-
[解決済み] 既存のRailsカラムのbooleanに:default => trueを追加する。
-
[解決済み] Rake 0.9.0での未定義メソッド'task'の使用について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SocketError (getaddrinfo: Name or service not known) - Sunspot/Solr Rails development
-
[解決済み] PGError: エラー: リレーションのカラムが存在しない
-
[解決済み] Rails 3 - link_to を image_tag + text で表示する。
-
[解決済み] Railsのインストール時に「/usr/binディレクトリに書き込み権限がありません」というエラーが発生しますが、どのように修正すればよいですか?
-
[解決済み] SocketError (getaddrinfo: Name or service not known) - Sunspot/Solr Rails development
-
[解決済み] Herokuのデータベースを空にする方法
-
[解決済み】Railsのhas_one/has_manyの:sourceオプションについて理解する。
-
[解決済み] 新しいRailsアプリを作成するときに、test-unitではなくRSpecを使用するようにRailsに指示するにはどうすればよいですか?
-
[解決済み] 既存のRailsカラムのbooleanに:default => trueを追加する。
-
[解決済み] サインアップするためのDeviseルートを削除するにはどうすればよいですか?