概要 - コードの整形とスペース(AutoLISP)

AutoLISP コードは複数行にまたがることができ、空白行や余分なスペースを含めることもできます。空白行や余分なスペースに重要な意味はありませんが、コードを読みやすくすることができます。

関数名、変数名、および定数の間の複数のスペースは、1 つのスペースに匹敵します。行の終わりおよびタブも 1 つのスペースとして扱われます。次の 2 つの式は、同じ結果になります。

(setq test1 123 test2 456)

(setq
  test1 123
  test2 456
)

AutoLISP のコードでは括弧を多用するため、読みにくくなってしまいます。この問題に対処し、関数の開き括弧と閉じ括弧を位置合わせするための伝統的なテクニックがインデントです。コード行のネストが深くなるほど、行は右側に配置されます。

次の 2 つの関数は同じコードですが、2 番目の方が読みやすく、AutoLISP 式の括弧の数が合っているかどうかが一目で分かります。

(defun c:mycmd ()
(setq old_clayer (getvar "clayer"))
(setq insPt (getpoint "\nSpecify text insertion: "))
(if (/= insPt nil)
(progn
(command "_.UNDO" "_BE")
(command "._-LAYER" "_M" "Text" "_C" "3" "" "")
(command "_.-TEXT" insPt "" "0" "Sample Text")
(command "_.UNDO" "_E")))
(setvar "clayer" old_clayer)
(princ)
)

(defun c:mycmd ()
  (setq old_clayer (getvar "clayer"))

  (setq insPt (getpoint "\nSpecify text insertion: "))

  (if (/= insPt nil)
    (progn
      (command "_.UNDO" "_BE")
      (command "._-LAYER" "_M" "Text" "_C" "3" "" "")
      (command "_.-TEXT" insPt "" "0" "Sample Text")
      (command "_.UNDO" "_E")
    )
  )

  (setvar "clayer" old_clayer)
 (princ)
)