タグ付けされた質問 「yasnippet」

2
yasnippetと会社をより良くする方法は?
私のemacsでは"elisp"、orgモードでlispブロックを拡張するためにyasnippet を使用するとしましょう。しかし、拡張する前に、会社が最初にトリガーされ"1. elisp1, 2. elisp2"、オプションなしのようなメニューが表示されます"elisp"。tabyasnippetを拡張するために使用する場合、"elisp1"常に最初に画面に表示されるのは常に迷惑です。だから私は"1"最初に削除する必要があり、yasnippetスニペットの拡張を行います。 したがって、解決策として、私は常に左矢印キーを使用して最初に会社の完了メニューをオフにしますが、カーソルはに移動する"elis|p"ので、再び右矢印キーを使用してカーソルをの終わりに移動し"elisp|"、スニペットを拡張します。 ここで私の質問があります:どうすればtabキーをバインドしてyasnippetをトリガーできますか?

1
会社にヤスニペット名の候補を表示する
パッケージの会社モードとYasnippetを使用します。バッファーに入力しているときに、Companyからオートコンプリートの提案を受け取ります。 Yasnippetには、スニペットを含むディレクトリがあります。そのディレクトリには、たとえばファイルがありますfoo.yasnippet。 fooバッファーに入力してを押すとTab、ヤスニペットのポップアップメニューが表示され、挿入するスニペット(fooまたはfoo-bar)を選択できます。foo会社の完成にyasnippetを統合したいと思います。を入力するとfoo、Company completionポップアップにスニペットが表示されます。 これは可能ですか?もしそうなら、どうすればこれを達成できますか?Vimでは、NeocompleteとVimSnippetsでそれを実現しています。グーグルで検索したところ、Elispとのこのリンクを見つけましたが、それを適用する方法に頭を悩ますことができませんでした。 助言がありますか?

1
複数のモード用の1つのyasnippetスニペット
私は次のスニペットを持っています: # -*- mode: snippet -*- # contributor: Song Qiang <tsiangsung@gmail.com> # key: m # group: Math # name: Inline math \( ... \) # -- \\($1\\)$0 そして私はそれが両方のために利用できるようにしたいlatex-modeとorg-mode。どうすればこれを達成できますか?シンボリックリンクはできましたが、よりスマートな方法を見つけようとしています。
13 yasnippet 


2
事前入力されたdoxygenコメントを生成するyasnippetはありますか?
次のC ++関数の場合: bool importantStuff(double a, double b); おそらくタグなしで、次のスニペットを出力します。 /** * <Insert description of importantStuff> * * @param a <Insert description of a> * @param b <Insert description of b> * @return <Insert description of the return value> */ 私はネットを見回しましたが、答えに最も近いのはこの古いSOの質問です。この答えは、もはや維持されていないdoxymacsモードに依存しています。
10 yasnippet  c++ 

1
yasnippetとpolymodeを使用してコードチャンクをRマークダウンに挿入する
コードチャンクをRマークダウンファイルに挿入するyasnippetを記述しようとしています。ポリモードを使用して、1つのファイルに複数のメジャーモード(マークダウン、ESS [S])を含めています。これは私のスニペットです: # -*- mode: snippet -*- # name: chunk # key: chunk # -- \`\`\`{r $1} $0 \`\`\` マークダウンモードで.Rmdファイルにスニペットを挿入しようとすると、次のエラーが発生します。 Error in post-command-hook (yas--post-command-handler): (error "Marker points into wrong buffer" #<marker at 7 in test.Rmd>) スニペットが表示され、私のカーソルは正しい位置にあります(2番目の中括弧の直前): ```{r } ``` タブを押すと、次のようになります。 yas-next-field: Wrong type argument: overlayp, nil 私はポリモードとの相互作用に遭遇していると思います:スニペットを挿入するとマークダウンモードになりますが、ポリモードはコードチャンクの内容をESS [S]モードに変換します。最終的にポリモードで新しいチャンクを挿入するコマンドがあるようですが、それまでの間、このスニペットを機能させる方法はありますか?

3
evil-insert-modeでスニペットを拡張する
私はvimからspacemacsに移動したばかりで、emacsを使った完全な初心者です。 evil-insert-modeでyasnippetsを展開する方法がわかりません。私はyasnippetを使用できることを知っています。これは、使用可能なスニペットから選択できるためSpc i sです。しかし、私は<Tab>それらを拡張できるようにしたいと思います。何が欠けていますか?

1
パッケージを更新するときにyasnippetが壊れないようにするにはどうすればよいですか?
パッケージが更新されると、ロードされたelispファイルの場所が、新しいバージョンのパッケージのフォルダーに変更されます。 Yasnippetは、それがインストールされたファイルのスニペットを遅延ロードしようとします。これは、これまでに見たことのないメジャーモードでファイルを開いたときです。 これは、emascが更新された後、以前に表示されなかったメジャーモードでの読み込みに失敗することを意味します。 これを解決するための良い一般的な方法はありますか?(agが更新されると、似たような面倒な問題が発生します)。または、パッケージを読み込めなかった場合にエラーを表示するのではなく、警告を表示するだけで警告を表示するように、yasnippetで何かをアドバイスすることをお勧めしますか? 明確化: emacsを起動すると、yasnippetが読み込まれます。 メジャーモードが(たとえば)makefileであるファイルをロードしません。 パッケージマネージャーを使用して、新しいバージョンのyasnippetに更新します 私はメイクファイルをロードし、yasnippetはメイクファイルのスニペットをロードしようとしますが、スニペットに使用していたフォルダーが存在しないため失敗します。それだけでなく、yasnippetがインストールしたコマンドへの事前フックが失敗するため、他のすべてのコマンドも失敗します。 回避策:メッセージバッファーを開き、開くことができないフォルダーを見つけて実行しmkdir ~/.blargh/folder-yasnippet-wantsます。 明らかに、yasnippetについて少しアドバイスを書くこともできますが、もっとグローバルなソリューションを望んでいます(確かに、elispで遊んでアドバイスを得るには少し時間がかかります)。

1
yasnippetで現在の日付を挿入する
数年前から、このスニペットを使用して日付をバッファーに挿入してきました。 # -*- coding: utf-8 -*- # name: date # key: date # -- `(insert (format-time-string "%Y-%m-%d"))`$0 しかし、今日私はこの迷惑な警告を受け取ります: Warning (yasnippet): `date' modified buffer in a backquote expression. To hide this warning, add (yasnippet backquote-change) to `warning-suppress-types'. これは明らかにこの質問に関連していますが、スニペットを修正する適切な方法(メッセージを抑制するだけ)は明確ではありません。
8 yasnippet 

1
yasnippet:文字列からスニペットを展開し、フィールドを認識させる方法は?
Q:yasnippet elispコード内から(スニペットフィールドを認識して)テキスト文字列を正しく展開するにはどうすればよいですか? 非常に単純なスニペットは、いくつかの制御文字が混在した単なる文字列です。elispフォームを使用してよりリッチなスニペットを作成することもできますが、それらを適切に展開する方法がわかりません。 これは問題を捉えた簡単な例です。のorg-modeようなリンクスケルトンを挿入するスニペットを作成しています[[source][description]]。次の簡単なスニペットは、「ソースフィールドで開始し、説明フィールドで終了する」という望ましい動作を生成します。 [[$1][$0]] elispコードをスニペット( `sでラップ)に混在させることができます。ifは単に[[$1][$0]]文字列として評価されるため、次のコードは単純なバージョンとまったく同じ動作を生成すると考えていました。 `(if t "[[$1][$0]]")` ただし、そうはしません。代わりに、$0and $1フィールドがフィールドではないかのように機能し、スニペットを終了し、最後のの後にポイントを配置し]ます。それで、elispフォームがyasnippetフィールドに埋め込まれたテキスト文字列に評価されるときに、どのようにして望ましい動作を得るのでしょうか? 編集:要求されたとおり、ここに質問を引き起こした特定のユースケースがあります。XクリップボードにURLリンクが含まれている場合は、組織リンクのソースフィールド([[ source ] [description]])を入力し、リンク先フィールドをそのままにしておきます。dan-xclipboard-link-p存在する場合はURLを返すヘルパー関数()を使用しますnil。私には次のようなことができるはずです: `(let ((link (dan-xclipboard-link-p))) (if link (concat "[[" link "][$0]]") "[[$1][$0]]"))` 実際、以前のバージョンのyasnippetでは、このコードのバージョンは意図したとおりに機能しました。 編集2:興味深いことに、このスニペットは、Xクリップボードにリンクがある場合は機能しますが、ない場合は失敗します(つまり、$1フィールドとして認識されません)。 [[`(or (dan-xclipboard-link-p) "$1")`][$0]]
7 yasnippet 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.