13

hereおよびhere でforward/backward-word説明されているように、アンダースコアを関数の単語の一部として処理しようとしています。私は特にこれをモードで機能させようとしていますが、すべてのモードでこのように機能することを本当に望んでいます。nxhtml

site-start.elファイルをさまざまな方法で変更しましたが、役に立ちませんでした。しかしM-x modify-syntax-table、バッファ内でコマンドを手動で実行すると、問題なく動作します。これをデフォルトの動作にすることはできません。

site-start.elファイルに入れてみたものは次のとおりです。

;; 1
;; thought  this would apply it to all modes - no error, but did not work
(modify-syntax-entry ?_ "w") 

;; 2
;; thought this would automatically set it on a mode change - no error, but did not work
(defun change-major-mode-hook ()
(modify-syntax-entry ?_ "w"))


;; 3
;; thought  this would apply it to all modes - no error, but did not work
(modify-syntax-entry ?_ "w")

;; 4
;; this produced a symbol's value as variable is void error
(modify-syntax-entry ?_ "w" nxhtml-mode-syntax-table)

私は何が欠けていますか?

4

4 に答える 4

20

nxhtml-mode-hook直接変更してみましたか?そのようです:

(add-hook 'nxhtml-mode-hook
          (lambda () (modify-syntax-entry ?_ "w")))
于 2012-05-19T14:52:13.007 に答える
6

Trey があなたの非常に具体的な質問に答えました。

しかし、Emacs には、あなたが求めることを行うレベルの文字編成が既にあります。単語コマンドを分割する代わりにsexpコマンドを学んだ場合は、状況に応じて「単語」または「記号」で削除できます。

于 2012-05-19T15:05:51.577 に答える
4

event_jr として、 や などの SEP ベースのコマンドの使用法を学ぶことをお勧めしC-M-fますC-M-b。しかし、本当に識別子だけをジャンプしたい (そして括弧などを無視したい) 場合は、すべてのメジャー モードですべての構文テーブルを変更しようとする (予期しない結果になる可能性があります) よりも、単純に新しいシンボル ベースを使用することをお勧めします。移動コマンド。例(global-set-key [remap forward-word] 'forward-symbol)。一部のコマンド ( などkill-word)についてkill-symbolは、自分で作成する必要がありますが、簡単に作成できるはずです。

于 2012-05-20T02:18:08.550 に答える