2012年1月1日日曜日

Org Mode での yasnippet を利用した入力支援 ( #+BEGIN_SRC )

yasnippet.el をインストール


ブログを始めてから、Emacs の Org Mode で #+BEGIN_SRC ・・・ #+END_SRC と書くことが多くなったので、 ここは Emacs Lisp で #+BEGIN_SRC と入力したら自動で #+END_SRC が入力される機能を作ってみよう!!と 意気込んでみたんですが、すぐに yasnippet っていうそのままの機能のモジュールがあることを思い出した。

インストールは Emacsテクニックバイブル とか Yet Another Snippet extention を参考にして行った。


Org Mode での入力支援


yasnippet を使えば #+BEGIN_SRC - #+END_SRC の自動挿入の記述も簡単にできると思ったら、実はその記述も必要なくて Org Mode では #+BEGIN_SRC についてはすでに yasnippet のテンプレートが用意されている。 "<s <Tab>" と入力すれば、
#+begin_src  <- カーソル位置はココ

#+end_src
が挿入される。カーソル位置が begin_src の後ろに来ていて、すぐに emacs-lisp などとプログラム名が打ちやすい状態になっている。

#+BEGIN_SRC 以外にも以下のものが予め準備されている。("<"のあとに下記のアルファベット 1 文字を入力して<Tab>)
s  #+begin_src ... #+end_src 
e  #+begin_example ... #+end_example
q  #+begin_quote ... #+end_quote 
v  #+begin_verse ... #+end_verse 
c  #+begin_center ... #+end_center 
l  #+begin_latex ... #+end_latex 
L  #+latex: 
h  #+begin_html ... #+end_html 
H  #+html: 
a  #+begin_ascii ... #+end_ascii 
A  #+ascii: 
i  #+index: line 
I  #+include: line 


参考:Emacsテクニックバイブル ~作業効率をカイゼンする200の技~
 
参考:Org Mode Manual - 15.2 Easy Templates



2 件のコメント:

  1. すみません、orgのブロック補完がyasnippetのテンプレートというのはどういう情報を元に書かれましたか?
    org内のコードを読んだのですが、補完をしているorg-try-structure-completionとテンプレートを保持しているorg-structure-template-alistなどを見る限り、yasnippetを使っているコードは無いと思います。
    また、yasnippetを消した上で確認もしたのですが、正常に動作しました。

    返信削除
  2. 情報源は org mode のマニュアルページだったのですが・・・すみません、勘違いしていました。
    yasnippet のテンプレートではなくて org mode 独自のテンプレートですね。
    そうだったのか・・・。

    返信削除