1

Javaクラスを定義するファイルは、特定のパッケージに属することを宣言することにより、パッケージに編成できます。

package foo.bar;

barこれは、問題のファイルがパッケージのサブパッケージに属していることを宣言しますfoo。その後、ファイルはパッケージの階層に対応する階層を持つディレクトリに保存されます。また、パッケージ階層のルートは通常、ディレクトリsrcです。現在のファイルのパスからパッケージ名を取得するようにパッケージ宣言に展開するYASnippetを作成することは可能ですか?

4

2 に答える 2

7

ディレクトリsrcをパッケージ階層のルートとして扱うことで、バッファのパスを取得してパッケージ名に変換するEmacsLispが埋め込まれたスニペットを作成できます。

# -*- mode: snippet -*-
#name : package
#key : pa
# --
package ${1:`(mapconcat 'identity (cdr (member "src" (split-string default-directory "/" t))) ".")`};$0

これにより、マルチレベルのパッケージ階層が認識されます。つまり、編集しているファイルのバッファへのパスが/home/nn/src/foo/bar/Baz.javaの場合、スニペットは次のように展開されます。

package foo.bar;

これには、パッケージ階層を格納するルートディレクトリとしてsrcを使用する必要があることに注意してください。バッファへのパスにsrcという名前のディレクトリがある場合、スニペットは次のように展開されます。

package ;

スニペットに他のディレクトリをパッケージ階層のルートとして認識させるには"src"、目的のディレクトリ名に置き換えるだけです。

于 2012-10-21T17:27:35.177 に答える