AutoLISP ファイルを編集する(AutoLISP/VS Code)

AutoCAD AutoLISP Extension には、IntelliSense やコード スニペットなどの AutoLISP プログラムおよび DCL ファイルを簡単に記述できるようにする機能がいくつか備わっています。

このトピックでは、以下について学ぶことができます。

IntelliSence を使用して関数名を入力する

開いた AutoLISP ソース(LSP)または DCL ファイルのエディタ ウィンドウに入力すると、AutoCAD AutoLISP Extension により、入力した文字と一致する推奨関数とコード スニペットの一覧が表示されます。入力する文字が多いほど、一覧に表示される項目が少なくなります。一覧の項目を選択して関数名を完成したり、コード スニペットを使用します。また、矢印キーで使用する項目をハイライト表示してから[Tab]を押してその項目を完成することもできます。

AutoLISP 関数または DCL タイル/属性のヘルプにアクセスする

組み込みの AutoLISP 関数または DCL タイル/属性のヘルプには、オンライン ヘルプを直接開いて参照する必要はなく、VS Code のエディタ ウィンドウからコンテキストに応じてアクセスすることができます。AutoLISP 関数または DCL タイル/属性のヘルプを表示するには、AutoLISP ソース(LSP)または DCL ファイルを含むエディタ ウィンドウで名前をクリックするかハイライト表示し、右クリックして[オンライン ヘルプを開く]を選択します。

注: この機能は、AutoCAD AutoLISP Extension のバージョン 1.4.0 以降で使用できます。

コメントを追加する

AutoLISP ソース(LSP)ファイルまたは DCL ファイルは、行コメントおよびブロック コメントをサポートしています。コメントは任意の AutoLISP または DCL 文に手動で追加できますが、VS Code では、選択した AutoLISP または DCL 文に対して行コメントやブロック コメントを追加および削除できるようにするためにこの機能がサポートされています。

関数または変数の定義に移動する

VS Code を使用して、現在のエディタ ウィンドウで開いている AutoLISP ソース(LSP)ファイル内で使用されているユーザ定義関数またはユーザ定義変数の定義を検索することができます。関数または変数の定義を検索する場合、VS Code は以下を検索します。

ユーザ定義関数またはユーザ定義変数の定義は、次のように定義されます。

関 数

関数の定義は、defun 関数を使用して定義されます。

(defun xxx ())
変 数

変数の定義は、次のいずれかで定義されます。

  • defun 関数の 2 番目の要素(またはアトム)内の変数名の位置
  • setq 関数の使用
(defun xxx ( / varname))

(setq varname val)

変数の定義は、最初に AutoLISP 文または defun コード ブロックのローカル スコープ内で検索され、次にグローバル スコープ内で検索されます。

ユーザ定義関数またはユーザ定義変数の定義に移動するには、エディタ ウィンドウで名前をクリックするかハイライト表示し、右クリックして[Go to Definition]を選択するか、[F12]を押します。定義が見つかった場合、定義が見つかった場所にフォーカスが移動します。複数の定義が見つかることがあります。その場合は、定義フォーカスをどのインスタンスに移動するかを確認するプロンプトが表示されます。

注: この機能は、AutoCAD AutoLISP Extension のバージョン 1.4.0 以降で使用できます。

リージョンを挿入する

VS Code は AutoLISP 文または複数行にまたがる DCL 定義に基づいて、「リージョン」と呼ばれるものを自動的に定義します。リージョンを展開または折りたたむことで、エディタ ウィンドウに現在表示されているコード文の数を最小限に抑えることができます。ユーザ定義リージョンを挿入して、サブ領域とも呼ばれる複数の文およびリージョンを、単一の折りたたみ可能なリージョンにグループ化することもできます。

ユーザ定義リージョンは、コメント ;#region で始まり、コメント ;#endregion で終わります。これらはコメントであるため、それぞれの後に、各リージョン内の文および定義の使用方法を説明するテキストを追加することができます。

展開されたリージョン
折りたたまれたリージョン
注: この機能は、AutoCAD AutoLISP Extension のバージョン 1.4.0 以降で使用できます。

コード スニペットを挿入する

AutoCAD AutoLISP Extension は、コード スニペットと呼ばれる小さなコード ブロックまたはサンプルをサポートしています。コード スニペットを使用すると、よく使用する関数や複雑なコード ブロックに対して必要な構文をすばやく追加できます。たとえば、AutoCAD AutoLISP Extension には If... Progn の略である ifp という名前のコード スニペットがあり、これにはネストした progn 文を含む if 文が含まれています。コード エディタで ifp と入力して[Tab]を押すと、コード スニペットを挿入することができます。

コード スニペットは VS Code の AutoComplete 機能の一部であり、先頭には AutoLISP 関数の名前を示すために使用されるレンチではなく正方形のアイコンが付きます。



AutoCAD AutoLISP Extension のコードには、60 以上のコード スニペットが含まれています。次に、AutoCAD AutoLISP Extension に付属しているコード スニペットの一部を示します。

getlayer
(setq layer (cdr (assoc 8 entname)))
ifp
(if (testexpr)
  (progn
    (thenexpr)
  )
)
line
(command "_line" "pt1" "pt2" "")
open
(setq fp "fname.txt")
(setq f (open fp "mode"))
 
(close f)
while
(while testexpr [expr ...])

AutoCAD AutoLISP Extension のコード スニペットは、次のいずれかの場所の snippets.json という名前のファイルに保存されます。

注: 上記のパスの n.n.n はプレースホルダです。AutoCAD AutoLISP Extension の実際のバージョンでは、拡張機能が更新されるとともに変化します。