私は初心者です。今、私はしたいです
自動開始 yasnippet オートコンプリート gtags flymake モード
(php/java/el/...) ファイルを開くとき。
emacs 設定ファイルには何を入れるべきですか?
リューが言うようadd-hook
に、特定のモードが開始されたときにアクションが実行されるように指定するために使用します。ドキュメンテーションはこちら。フックは、C# のイベントやOOPのオブザーバー パターンに似ています。
すべてのモードは、そのモードが開始されたときに実行されるフックを定義する必要があります。java-modeという名前のモードには、 java-mode-hookという対応するフックがあります。add-hook
アクションをこのフックに接続できます。
(add-hook 'java-mode-hook 'my-action)
次のように、無名lambda
関数を使用してアクションをその場で定義できます。
(add-hook 'java-mode-hook (lambda () (message "hello from java-mode")))
これにより、Java モードを起動するたびにメッセージが出力されます。
通常は、その目的のために名前付き関数を定義する方が適切です。名前付き関数を使用する場合add-hook
、同じ関数が複数回呼び出されないようにします。
(defun hello ()
(message "hello from java-mode"))
(add-hook 'java-mode-hook 'hello)
言語編集モードは prog-mode から派生しています。プログラミング言語モードの起動時にアクションを実行する場合は、関数を に追加しますprog-mode-hook
。
オートコンプリート モードを使用するモードごとに手動で構成する必要があります。モードごとに、そのモードをac-modes
リストに追加します。
(add-to-list 'ac-modes 'java-mode)
補足として、flyspell-prog-mode
プログラミング言語モードに使用する場合は、コメントと文字列リテラルのスペル候補のみを受け取ります。
(defun on-prog-mode ()
(flyspell-prog-mode t))
(add-hook 'prog-mode-hook 'on-prog-mode)
そしておそらく、古い flymake の代わりにflycheckを使いたくなるでしょう。Flycheck は活発に開発されており、php 用のチェッカーがあります。
以下のように追加できます。
(global-auto-complete-mode t)
(yas-global-mode 1)
それに応じて以下を更新します。
(add-hook 'php-mode-hook (lambda () (flyspell-mode 1)))
(add-hook 'php-mode-hook (lambda()(gtags-mode 1)))