秀丸っぽい談話室

YASnippet Hidemarized v1.0

YASnippet のクローンを作ってみました。github で公開しています。
https://github.com/mobitan/yas/

YASnippet は Emacs 用に開発されたコードテンプレート/スニペットシステムです。
Software Design 誌 12 月号に掲載された深町さんの記事を読んで気になってた人も多いかと思います。
http://e-arrows.sakura.ne.jp/2010/11/sd-yasnippet-as-macro.html

私は先月からスニペット挿入/プレースホルダ編集マクロの再開発を企てていました。
調べてみると
 ・2008 年ごろ日本で YASnippet が流行し、現在でも Emacs 界には一定のユーザー層がある
 ・YAS が使っている TextMate 由来のスニペット記述仕様は EmEditor や Eclipse でも使われている
ことがわかりました。
そこで、これらのスニペット資産を秀丸でも使えるようにする互換マクロを作ってみたというわけです。
スニペットを一から自分で作るのは大変……。それを既製品から丸々パクってこれるとなれば、
導入のハードルはかなり下がるんじゃないかと思います。

YASnippet Hidemarized 1.0 は YASnippet 0.6 系のスニペット定義ファイル群をそのまま利用できます。
# ただし、もちろん、埋め込まれた Emacs Lisp コードは実行されません (単に無視されます)。

スニペット展開エンジンは WSH/Jscript による独自実装です。
入れ子を含む複雑なスニペットの構文解析のために、JavaScript によるパーサジェネレータ Gin を利用しました。
http://nanto.asablo.jp/blog/2007/09/12/1793275
見よう見まねのオレオレ文法定義なので間違ってるかもしれません。不具合があったら教えてください。
# 本家が BNF を公開してないのが悪いんだ〜 X-P

プレースホルダ編集エンジンは秀丸マクロによる独自実装です。
日本語入力はできないし [Delete] キーも利きません。これが秀丸マクロの限界です。ええ、わかっちゃいました。
それでも、ミラーやネストなど一通りの機能をサポートして色も塗れる、一応実用的ものができたと思います。
これが秀丸担当さんの目に留まれば、きっと秀丸エディタ v9 か v10 でサクッと本体に搭載されるでしょう。:-D

キーワード選択には毎度おなじみ macrodll のリストボックスを利用しました。
のりさん、ありがとうございます。

例によってドキュメントがまだアレですが、徐々に整備していきます。
本家 YASnippet に対抗してビデオチュートリアルも作りたいな〜。誰か手伝ってくれないかな〜 ;-)

というわけで、今どき肩身の狭い秀丸コーダ―の皆さん、どうぞお試しください。
YASnippet Hidemarized v1.0 [IKKI] (2010/12/14 18:46)
 ├本家 YASnippet のドキュメントの日本語訳に挑戦中 [Seaoak] (2010/12/16 22:44)
 │└Re: 本家 YASnippet のドキュメントの日本語訳に挑戦中 [IKKI] (2010/12/17 12:50)
 │ ├Re: 本家 YASnippet のドキュメントの日本語訳に挑戦中 [IKKI] (2010/12/17 12:57)
 │ └日本語訳(初版) [Seaoak] (2010/12/23 21:48)
 │  ├Re: 日本語訳(初版) [IKKI] (2010/12/24 02:40)
 │  │└Re: 日本語訳(初版) [Seaoak] (2010/12/24 18:28)
 │  │ └Re: 日本語訳(初版) [IKKI] (2010/12/25 08:56)
 │  └Re: 日本語訳(初版) [IKKI] (2010/12/31 03:58)
 │   ├Re: 日本語訳(初版) [IKKI] (2010/12/31 04:10)
 │   └Re: 日本語訳(初版) [Seaoak] (2011/01/01 12:34)
 │    └Re: 日本語訳(初版) [IKKI] (2011/01/02 15:58)
 │     └登録してみました [Seaoak] (2011/01/04 21:11)
 │      ├Re: 登録してみました [IKKI] (2011/01/04 23:23)
 │      └Re: 登録してみました [IKKI] (2011/01/04 23:36)
 │       └Re: 登録してみました [Seaoak] (2011/01/05 18:42)
 │        └Re: 登録してみました [IKKI] (2011/01/05 18:50)
 │         └Re: 登録してみました [Seaoak] (2011/01/05 21:38)
 │          └コミットしました [Seaoak] (2011/01/15 13:30)
 │           └Re: コミットしました [IKKI] (2011/01/15 22:51)
 │            └Re: コミットしました [Seaoak] (2011/01/16 17:26)
 ├Re: YASnippet Hidemarized v1.0 [通りすがり] (2010/12/28 21:03)
 │└Re: YASnippet Hidemarized v1.0 [IKKI] (2010/12/31 00:31)
 └Re: YASnippet Hidemarized v1.0 [liki] (2014/06/16 23:46)
  ├Re: YASnippet Hidemarized v1.0 [liki] (2014/06/19 15:31)
  │├Re: YASnippet Hidemarized v1.0 [liki] (2014/06/19 16:18)
  │├削除 [] ()
  │└Re: YASnippet Hidemarized v1.0 [] (2015/12/01 22:30)
  └Re: YASnippet Hidemarized v1.0 [liki] (2014/06/20 13:21)
   └Re: YASnippet Hidemarized v1.0 [IKKI] (2015/05/23 04:39)
    └Re: YASnippet Hidemarized v1.0 [liki] (2015/05/23 07:33)
パスワード