ディレクトリ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"
、目的のディレクトリ名に置き換えるだけです。