3

のユーザー構成と組み合わせて、(delete-selection-mode 1)次の 2 つの Yasnippets を 1 つのスニペットに統合して、リージョンがアクティブかどうかによって動作が異なるようにする方法はありますか? 例えば: (if (region-active-p) (yas/selected-text) "$1")

アクティブな領域 -- アクティブな領域をスニペットで囲みます:

# -*- mode: snippet -*-
# contributor: lawlist
# key: bold_selected
# name: bold_selected
# binding: C-I b b s
# --
{\bf `yas/selected-text`}

非アクティブ領域 -- スニペットを挿入し、カーソルを次の位置に置きます$1:

# -*- mode: snippet -*-
# contributor: lawlist
# key: bold
# name: bold
# binding: C-I b b b
# --
{\bf $1}
4

3 に答える 3

4

elisp評価されるコードを囲むバックティックが必要です。組み込み変数yas-selected-textには、選択した領域のテキストが格納されます。これを使用して、スニペットの作成中に同じテキストを再挿入できます。1 つのバックスラッシュごとに 4 つのバックスラッシュが必要です。

# -*- mode: snippet -*-
# contributor: lawlist
# key: bold
# name: bold
# binding: TAB <f6>
# --
`(if (region-active-p)
   (concat
     "{\\\\bf "
     yas-selected-text
     "}")
   "{\\\\bf $1}")`
于 2015-05-16T19:47:47.133 に答える