単語構文ではスクリプトが考慮されますか?


9

US / RU / IPA文字列でcount-words-regionM-x =)を呼び出します:

HelloПривheləʊ

次のメッセージが出力されます。

Region has 1 line, 4 words, and 14 characters.

すべてのシンボルにはw構文がありますが、スクリプトが異なります。

(char-syntax ?H) ; ?w
(char-syntax ?П) ; ?w
(char-syntax ?ʊ) ; ?w
(aref char-script-table ?H)  ; script: latin
(aref char-script-table ?П)  ; script: cyrillic
(aref char-script-table ?ʊ)  ; script: phonetic

これは、単語境界がchar構文だけでなくcharスクリプトによっても定義されていることを意味しますか?

単語間を移動できるが、スクリプト間は移動できないようにするために、選択したモードでこの動作を無効にしたいと思います。どうすればこれを達成できますか?

更新 debbugsに関する有用なさらなる議論

回答:


7

この特定の動作はforward-word、変数word-combining-categoriesとによって制御できますword-separating-categories。スクリプトを完全に無視する場合は、最初のリストにペア(nil。nil)を追加するだけで十分です。たとえば、

(let ((word-combining-categories (cons '(nil . nil)
                                       word-combining-categories)))
  (forward-word))

setq-local特定のバッファで効果が必要な場合は、その変数を変更することもできます。


これらの変数をどのようにして見つけましたか?elispのマニュアルにはそれらについての記載はありません...
JeanPierre

@JeanPierreソースを確認しました(そして、ドキュメント化する必要があることに100%同意します!)
YoungFrog

3
M-x report-emacs-bugドキュメントを更新してください。
フィル2016

2

確かにforward-wordbackward-wordまたここにいくつかの単語があることを示しています。異なるスクリプトの文字を同じ単語にすることはできませんが、ドキュメントではそれについて明示する必要があります(ここ)。私はM-x report-emacs-bugそれについて提案します。

スクリプトを無視して「単語」間を行き来したいだけの場合は、skip-syntax-forwardand を使用できますskip-syntax-backwardここで説明)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.