Emacs に Markdown スタイルのリスト項目をぶら下げインデントでラップしてもらいたいです。実際、 でさえfundamental-mode
、これは非常にうまく機能します。次の 3 つのリスト項目を検討してください。
* Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
- Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
+ Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
M-q
( )を使用して埋めるfill-paragraph
と、結果は次のようになります。
* Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua.
- Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat.
+ Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur.
最初の 2 つは希望どおりに入力されていますが、最後の 2 つは入力されていないことに注意してください。最後のケースで動作が異なる理由と、それを適切に変更する方法を理解するのに苦労しています。
のソース コード内のコメントにはfill-paragraph
、次の手順が試行されていることが示されています。
- インタラクティブに呼び出されたときにアクティブな場合は、領域を塗りつぶします。
- 試してみてください
fill-paragraph-function
。- 構文を認識する埋め込みコードを試してください。
- すべてが失敗した場合は、デフォルトで古き良きテキスト段落の塗りつぶしを使用します。
これらのリスト項目を埋めるために押してもアクティブな領域がないM-q
ため、手順 1 はスキップする必要があります。を定義していません( にあるfill-paragraph-function
ことを確認しました)。fill-paragraph-function
nil
fundamental-mode
これは、ステップ 3 に進むことを意味します。では、fundamental-mode
3 つのリスト マーカーの構文はすべて同じdescribe-char
です ( で確認)。
character: * (displayed as *) (codepoint 42, #o52, #x2a)
syntax: _ which means: symbol
character: - (displayed as -) (codepoint 45, #o55, #x2d)
syntax: _ which means: symbol
character: + (displayed as +) (codepoint 43, #o53, #x2b)
syntax: _ which means: symbol
したがって、このステップでこれらの段落が異なる方法で処理される理由がわかりません。ソースを見ると、これはコメントを処理しようとしているように見えるので、上記の場合は3つスキップされていると思います。
では、ステップ 4 に進むようです
paragraph-start
。次のように設定paragraph-start
してみました(これにより、マーカーの前に空白が許可されます):
"\f\\|[ \t]*$\\|^[ \t]*[*+-] "
これもうまくいかなかったので、どうすればうまくいくのか途方に暮れています。
カスタムのfill-paragraph関数を書く必要がありますか?それとももっと簡単な方法がありますか?