牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

yasnippet で Python の自作のスニペットを展開したらインデントが崩れる場合の対策メモ

問題

こんな感じのスニペットを作成

# name: hoge
# --

class ${1:classname}DetailView(DetailView):
    model = $1

class $1ListView(ListView):
    model = $1
    context_object_name = 'object_list'
展開するとインデントずれる

自動でインデントされてしまう

class  ModelnameDetailView(DetailView):
    model = Modelname

    class ModelnameListView(ListView):
        model = Modelname
        context_object_name = 'object_list'

解決策

スニペットに『# expand-env: ~』を追加すればいいらしい

# -*- mode: snippet -*-
# name: hoge
# expand-env: ((yas/indent-line 'fixed) (yas/wrap-around-region 'nil))
# --

class ${1:classname}DetailView(DetailView):
    model = $1

class $1ListView(ListView):
    model = $1
    context_object_name = 'object_list'

これを展開すると

class  ModelnameDetailView(DetailView):
    model = Modelname

class ModelnameListView(ListView):
    model = Modelname
    context_object_name = 'object_list'

意図通りにスニペット展開できるようになった