タグ付けされた質問 「syntax」

5
アンダースコアを単語の一部として扱う方法は?
Emacs + evilモードを使用します。 e(通常の状態で)カーソルを(通常の状態で)などのテキストチャンクに配置するとabc_def_ghi、ciw(内部単語の変更)defは文字列の一部のみを変更し、Vimは全体を変更しますabc_def_ghi。 evilVimと同じように(つまり、単語の一部として)アンダースコアを強制的に処理するにはどうすればよいですか?

2
一致したペア内にあるかどうかを検出する方法は?
Q:ポイントが文字の一致ペア内にあるかどうかを検出する一般的な方法はありますか? つまり、ポイントが一致したペアまたは任意に選択された文字の間にあるかどうかを判断できる一般的な述語関数(または何か)はありますか?ポイントtを!参照して、たとえば次のシナリオで評価するものについて考えています: "!" (quotes in general) ``!'' (LaTeX quotes) $!$ (LaTeX math) (!) (lisp parens) *!* (org emphasis) 編集:syntax-ppss良い出発点のようですが、どのように複数文字の一致するペア(たとえば、「LaTeX引用符」、さらにはmatched <b>html tags</b>)にそれを適応させるかは明確ではありません。一般的な解決策があるのか​​、それとも専用のパーサーが必要なのか疑問に思っています。
16 elisp  syntax 


3
progモードでシンボルを単語として扱う
Emacsには、「単語」に適用される多くのコマンドがあります。例としてはforward-word、kill-word、upcase-word、mark-word、transpose-words、などの「単語」の定義は、コマンド間のビットを変化させるように思えます。例えば、forward-word単語(例えば内のアンダースコアで停止しますfoo_bar)が、mark-wordアンダースコアで停止しません。 Emacsが現在の言語の構文に適切な単語境界を使用するように、progモードのときに「単語」の定義を変更することは可能ですか? 私は午前ときc-mode、私欲しいforward-wordアンダースコアをスキップして、中に私はときlisp-mode私が欲しいforward-wordなど、ハイフンとアンダースコアの両方をスキップします

2
`syntax-ppss`はどの言語に適していますか?
現在のバッファがどのようにフォント化されているかを調べることにより、ポイントがコメント上にあるかどうかを検出する方法を検討しています。 Smartparensはsp-point-in-comment、に依存しsyntax-ppssます。しかし、ようだsyntax-ppssとparse-partial-sexp、彼らはS式を使用していない場合でも、任意の言語のために使用することができます。 たとえば、このPython: x = 1 # I'm a comment y = 2 コメント内にポイントを配置して評価(if (nth 4 (syntax-ppss)) 'comment 'not-comment)することは正しく機能します。 いsyntax-ppss任意のプログラミングモードのために仕事を?docstringsがs-expressionsを議論するのはなぜですか?

2
キーボードバインディングを定義するための標準/推奨構文はありますか?
キーボードバインディングを定義するために、以下のすべてを見てきました。これらはすべて機能します(少なくともMS Windowsでは)。同じことをする別の方法があるかどうかわかりません。 キーボードバインディングを定義するための標準的な方法または推奨される方法があるかどうか、およびこれらのいくつかを回避することが推奨されるかどうかを考えています。 (global-set-key "\M-r" 'some-command) (global-set-key [(meta r)] 'some-command) (global-set-key [?\M-r] 'some-command) (global-set-key (kbd "M-r") 'some-command)

2
かっこだけでなく、キーワードで定義されたブロックをforward-sexpに認識させる
以下のようなキーワードで定義されたブロックを持った言語(ジュリア)でfor..end、begin..endだけでなく、カッコが、そのようなブロックをスキップする良い方法は何ですか?また、endblockキーワードだけでなく、他の場所で使用される有効な識別子でもあります。 1つの方法は、ブロックの開始/終了の正規表現を探し、すべての文字列、コメント、endsなどをスキップすることですが、これは多少効率が悪く、少し見苦しいです。 emacs独自の構文解析でこのようなブロックキーワードを認識させる方法はありますか?forward/backward-sexpそうすれば、自動的に機能し、現在のブロックの開始を、たとえばの出力からすばやく知ることができsyntax-ppssますか? [注:ファイルを自分で解析してもかまいませんが、その場合でも、パーサーを残りのemacsに接続する方法を知りたいと思います。]
10 syntax  parsing 

2
単語構文ではスクリプトが考慮されますか?
US / RU / IPA文字列でcount-words-region(M-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スクリプトによっても定義されていることを意味しますか? 単語間を移動できるが、スクリプト間は移動できないようにするために、選択したモードでこの動作を無効にしたいと思います。どうすればこれを達成できますか? …
9 syntax 

2
構文テーブルを別の構文テーブルにネストするにはどうすればよいですか?
JSONを処理するためのシンプルなモードを作成しました。派生した機構を使用して、json-modeのコードのほとんどを再利用します。ただし、1つの追加として、JSON送信時に評価されるJSONテキストにelispを挿入できます。たとえば、jsonの抜粋は次のようになります。 { "parameters": { "IRC_USER": "stsquad", "PUB_KEY": `(format "\"%s\"" (s-trim (shell-command-to-string "cat ~/.ssh/id_rsa.pub")))` } } 現在、このテキストの構文の強調表示は、elispによってJSON構文のハイライトがスローされるため、壊れています。ネストされた構文テーブルをセットアップして、エスケープ文字内でelispがelispとして正しく認識されるようにしたい(この場合は `を選択した)。char-tables(構文テーブルの作成元)を次のように結合できることを理解しています。 (defvar lava-mode-syntax-table (let ((json-table (copy-syntax-table json-mode-syntax-table)) (elisp-table (copy-syntax-table lisp-mode-syntax-table))) (set-char-table-parent elisp-table json-table) (modify-syntax-entry ?` "(`" json-table) (modify-syntax-entry ?` ")`" json-table) json-table) "LAVA Mode syntax table. This is a combination of json-mode-syntax-table with an …


3
単語と記号の違いは何ですか?
メジャーモードの構文テーブルを定義するときに、単語構成要素と記号構成要素の両方を定義できます。 それぞれいつ使用すればよいですか?たとえば、ヘビの場合foo_barに変数を書き込むプログラミング言語を考える_と、単語または記号の一部である必要がありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.