3

情報ページには、この宣言については言及されていません。1、2、または 3 のいずれかに設定されている用途を見つけましたが、他にどのようなオプションが可能ですか? それは正確に何をしますか?

表面的には、数字はマクロ名の後にさらに右にインデントする行数を意味するように見えますが、その場合、最初のフォームとしてすべてのフォームをインデントするようにするにはどうすればよいでしょうか?

例:

(declare (indent 1))これを行います:

(-iter 
    (with (a b c))
  (for i from 0 to 5)
  (collect i)
  (message "i: %s" i))

(declare (indent 2))これを行います:

(-iter 
    (with (a b c))
    (for i from 0 to 5)
  (collect i)
  (message "i: %s" i))

(declare (indent 256))(または十分に大きな数)はこれを行います:

(-iter 
    (with (a b c))
    (for i from 0 to 5)
    (collect i)
    (message "i: %s" i))

任意の大きな数を提供することを除いて、最後のものをやりたいと思います。「すべて」またはその効果を伝える方法はありますか?

4

2 に答える 2

2

それはマニュアルにあります

C-hig (elisp) Indenting Macros RET

のインデックス エントリからリンクされています。参考までdeclareに。(Emacs 24.2.1)

于 2012-11-25T20:20:36.070 に答える
2

受け入れられた回答は実際には質問に答えず、マニュアルはかなり鈍いので、 の値が実際にここで機能し、 と同義であることを明らかにするこのブログを指摘させてください。0defun

ただし、インデント レベルは数字ほどではありません。診る:

宣言(indent nil)の有無にかかわらず:(indent ...)

(-iter
 (with (a b c))
 (for i from 0  to 5)
 (collect i)
 (message "i: %s" i))

(indent defun)または(indent 0): _

(-iter
  (with (a b c))
  (for i from 0 to 5)
  (collect i)
  (message "i: %s" i))

(indent 256):

(-iter
    (with (a b c))
    (for i from 0 to 5)
    (collect i)
    (message "i: %s" i))

(indent (lambda (x y) 4))で と同じ結果が得られます(indent 256)。ただし、インデントをハードコーディングすることは、さまざまなインデント スタイルを指定するメカニズムとおそらくわずかに競合しlisp-indent-functionます。

于 2019-03-22T07:18:59.737 に答える