秀丸っぽい談話室

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)

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 のドキュメントの日本語訳に挑戦中

YASnippet_doc_jp.20101215a.zip YASnippet_doc_jp.20101215a.zip
本家 YASnippet のドキュメント:
http://yasnippet.googlecode.com/svn/trunk/doc/index.html

の翻訳にチャレンジしてみることにしました!

翻訳はまったくの素人ですが、英語の勉強と一石二鳥をねらってます。

で、まだ途中で、ぜんぜん推敲もしていない状態ですが、
「こんな感じでいかがでしょう?」
というわけで upload してみます。

「こんな風に書いてほしい」という要望とか、
用語の使い方で気になるところとか、
HTML の構造とかスタイルシートの指定とか、
なんでも気軽に言ってください♪

Re: 本家 YASnippet のドキュメントの日本語訳に挑戦中

Seaoak さん、こんにちは。どうもありがとうございます。

# Seaoak さんが Twitter で
# http://twitter.com/seaoak2003/status/14313129374650368
# などと迂闊なことをつぶやいていらしたので、私がそこへ付け込んで
# 本家 YAS のドキュメントの翻訳をお願いしてみたのです。:-P

ざっと目を通してみました。Good job です。(^^)b
文学的ではないにせよ、技術文書として十分な品質だと思います。
完成したらご自分のサイトに載せて、本家からリンクしてもらってはいかがでしょう。
# 元の文書は MIT License なので問題ないかと。

まだ全部読んでないのでコメントは控えますが、今後気づいた点があれば指摘させていただきます。
この「編集会議」の場所はどこがいいですかね? この掲示板でもいいし、Seaoak さんのブログでもいいし。
Twitter でやるなら時間を決めてチャットみたくした方がいいかもしれません?

推敲版が完成したらまた貼り付けてください。楽しみにしています。(^^)/

Re: 本家 YASnippet のドキュメントの日本語訳に挑戦中

> まだ全部読んでないのでコメントは控えますが
とか言いつつ気づいてしまったので一点。

snippet-organization.html の最終段落
This means a snippet without a # key: directive wont have a tab trigger.
これは、# key: ディレクティブが書かれていないスニペットは tab trigger を持たない (メニューから選択するしかない) ことを意味します。
ですね。

日本語訳(初版)

こんばんわです〜

YASnippet 本家のドキュメントの日本語訳ですが、
とりあえずひととおり訳してみました。

http://seaoak.cocolog-nifty.com/read/2010/12/yasnippet-f5fa.html
http://www.seaoak.jp/YASnippet_doc_jp/

編集会議用の掲示板も作ってみました↓

http://www.seaoak.jp/YASnippet_doc_jp/editors_room/

たぶんヘンなところがたくさんあるので、ツッコミお願いします。
あと、公開方法についても、アドバイスがあれば、ぜひ。

Re: 日本語訳(初版)

こんばんは、お疲れさまです〜〜

> 編集会議用の掲示板も作ってみました↓
掲示板! そうきたか!!
いやー私はてっきり Google Code か GitHub にリポジトリ建てて
 ・編集協力者がフォークして修正してコミット
 ・Seaoak さんが diff を見てマージ/却下
 ・変更点は BTS で管理
という流れで行くのかと思ってました。
って、そんなら先に言っとけって話ですねスミマセン。

> あと、公開方法についても、アドバイスがあれば、ぜひ。
Google Code も GitHub もリポジトリ内の HTML ファイルを直接公開できるはずなので、バージョン管理機能付き無料ウェブサーバとして使うのもアリかと思います。

> たぶんヘンなところがたくさんあるので、ツッコミお願いします。
1 日 1 ページぐらい?のペースでぼちぼち読ませていただきます。
ざっとみた限りではあまりツッコミどころが見当たらない感じでした。

Re: 日本語訳(初版)

あー、ぼくも「今の時代に掲示板はないかなー」と思ったのですが、
とりあえず慣れてるモノを流用してしまいましたw

いずれにしても版数管理は必要で、自前のサーバでリポジトリを公開するのもめんどいので、
素直に Google Code か GitHub を使おうと思いますー

本家が Google Code なので Google Code がいいかな・・・

Re: 日本語訳(初版)

> いずれにしても版数管理は必要で、自前のサーバでリポジトリを公開するのもめんどいので、
> 素直に Google Code か GitHub を使おうと思いますー
それじゃあ、リポジトリができるのを待ってます o(^^)o

> 本家が Google Code なので Google Code がいいかな・・・
ですねー。
そしたら本家にコミッタとして参加させてもらうのも簡単ですし。

Re: 日本語訳(初版)

yas-doc-ja.rev1.zip yas-doc-ja.rev1.zip
リポジトリマダー?(・∀・ )っ/凵⌒☆チンチン

全部チェックしたので、修正候補版をとりあえず貼っておきますね。
意味レベルの修正も表現レベルの修正も区別せずに上書きしちゃったので、 diff をかけて修正点を吟味してみてください。
Seaoak さん宛のメモは【】内に書いてあります。

Emacs 界の用語法に私が慣れていないため、Emacser にとっては自然な表現を変な風に直しちゃってるかもしれません。
「束縛」という日本語が読者にどの程度受け入れられるのか、とか。
# Emacser が全員 Lisper なわけではないですよ…ね……?

Re: 日本語訳(初版)

あー、細かい話はそちらの編集会議用掲示板でやるべきなのでしょうけど、
リポジトリを作ったら掲示板は消しちゃうのかもしれないので、とりあえずここに書いときます。

snippet-expansion.html (436):
原案: DISPLAY-FN で適切に整形できるものでなければなりません。
修正案: DISPLAY-FN で適切に整形されたものでなければなりません。

これは、Lisp の関数が遅延評価であることを踏まえると、原案の方が適切なのかもしれません。
よろしくお取り計らいください。

Re: 日本語訳(初版)

あけましておめでとうございます。
今年もよろしくお願いします♪

リポジトリの作成が遅くなっちゃっててすみません〜^^;
年末はなんだかんだ言って忙しかった・・・

すばやいチェックありがとうございます。
とりあえず初版をリポジトリに登録して、
それに IKKI さん修正案を一カ所ずつ個別に
コミットしていくようにしようと思います。

余力があったら、Issue List に登録してからコミット、
みたいにするかもですが、まぁ、いくつか試してみます。
議論の余地のあるモノだけ登録するかもしれません。

もっと長い冬休みがほしいです・・・

Re: 日本語訳(初版)

新年あけましておめでとうございました。
引き続きよろしくお付き合いください。m(_ _)m

> 年末はなんだかんだ言って忙しかった・・・
あいやー、急かしてるように聞こえたらゴメンナサイ。
リアルライフ優先でのんびりやるのがオープンソース長持ちの秘訣です♪

> それに IKKI さん修正案を一カ所ずつ個別に
> コミットしていくようにしようと思います。
ドキュメントの変更点管理ってどうするのがいいんでしょうね。
1 か所ずつコミットするのはいかにも面倒そうだと思ったけど、
まとめてコミットしちゃったらこんどは取捨選択が面倒そうだし…。

> もっと長い冬休みがほしいです・・・
……えー、ご多幸をお祈りしておりますぅ (^^;;;

登録してみました

とりあえず、Google Code に登録してみました〜
http://code.google.com/p/yasnippet-doc-jp/

でも、まだ HTML がうまく表示できません・・・
http://yasnippet-doc-jp.googlecode.com/svn/trunk/doc-jp/index.html

初版だけコミットしてみたので、修正案はおいおい反映していきます。

IKKI さんもプロジェクトの Owner に登録させていただきたいので、
よろしければ seaoak2003あっとGmail までメールください。
あるいは、Twitter の DM でもいいです。

よろしくお願いしますー

Re: 登録してみました

おつかれさまです〜
こちらのアドレスをメールしました。

> でも、まだ HTML がうまく表示できません・・・
Content-Type が text/plain になってますね…。
どっかで設定できなかったかな? 思い出したら連絡します。

> あるいは、Twitter の DM でもいいです。
Twitter の DM は Google 検索に引っかかりまっせ (^^;

Re: 登録してみました

> でも、まだ HTML がうまく表示できません・・・

わかったお
http://webos-goodies.googlecode.com/svn/trunk/blog/articles/50977305/index.html
このページの「HTML のアップロード」を参照。
Subversion 側で MIME タイプを指定するらしい

Re: 登録してみました

調べていただいてありがとうございます〜

さっそく mime-type を設定してコミットしてみたら、
うまく表示されるようになりました!
http://yasnippet-doc-jp.googlecode.com/svn/trunk/doc-jp/index.html

あと、IKKI さんを committer に登録させていただきました。

とりいそぎ、ご報告まで。

Re: 登録してみました

乙です〜
コミット自体は任せちゃっていいのかしらん?

Re: 登録してみました

> コミット自体は任せちゃっていいのかしらん?

やりますー

いただいた修正案を順次コミットしていきます。たぶん。近日中に。

コミットしました

いただいた修正案をひととおり取り込んでコミットしました。
ちょっと時間がかかってしまってすみません〜

あと、いくつか Issue を登録してみました(思いつきで

気になるところとかあったらどんどん言ってください。
Issue を登録していただいても OK です。
もちろんコミットしていただいても!

よろしくお願いします〜

Re: コミットしました

Good job です (^^)b
業務じゃないしマイペースでやったらいいと思います。

っと、今さらですが、今回の翻訳結果を Yashippet Hidemarized のドキュメントに
一部 (そのままではないにせよ) 引用させていただいてもよろしいでしょうか?
# MIT ライセンスの物に許可を求めるのもおかしいか (^^;

たぶんその過程でまた気づいた点が出てくるので、随時コミットしたいと思います。

Re: コミットしました

> っと、今さらですが、今回の翻訳結果を Yashippet Hidemarized のドキュメントに
> 一部 (そのままではないにせよ) 引用させていただいてもよろしいでしょうか?
> # MIT ライセンスの物に許可を求めるのもおかしいか (^^;

もちろん OK ですよー
ご活用いただければうれしいですっ

> たぶんその過程でまた気づいた点が出てくるので、随時コミットしたいと思います。

こちらもぜひお願いします〜

Re: YASnippet Hidemarized v1.0

「YASnippet 秀丸」でググっていたらここにたどり着きました。
早速使わせてもらいます。

#emacsが色々うらやましい・・・

Re: YASnippet Hidemarized v1.0

> 「YASnippet 秀丸」でググっていたらここにたどり着きました。
> 早速使わせてもらいます。
どもども。
本家の機能を全部実装してるわけじゃないのであまり期待なさいませんよう。
ハックしたら気軽にフォーク & コミットしちゃってください〜

> #emacsが色々うらやましい・・・
んー、まあ。でも括弧の海に溺れたいとも思わないですねぇ…。

Re: YASnippet Hidemarized v1.0

まだ、使い始めたばかりですが、編集中のファイルの文字コードがUTF-8だとうまくいかないようなのです。

Re: YASnippet Hidemarized v1.0

TeXファイルを編集するためlatex-modeを使用してみましたが、スニペットに¥が入っているとだめなようです。
¥が挿入されません。

# name: begin
# key: begin
# --
\begin{${1:environment}}
$0
\end{$1}

begin{environment}

end{}

Re: YASnippet Hidemarized v1.0

とりあえず、スニペットを編集して¥¥としてみた。
これでうまくいくものもあるが、やはりだめなものもある。
例えば、includegraphics は何も表示されない。
それとifに関しては最後のENDIFだけは、¥がひとつでないとだめ。
# -*- mode: snippet -*-
# name: if
# key: if
# --
\\IF {$${1:cond}$}
$0
\\ELSE
\ENDIF

ちなみにtexファイルの文字コードはUTF-8です。

削除

この記事は削除されました

Re: YASnippet Hidemarized v1.0

Re: YASnippet Hidemarized v1.0

スニペット定義ファイルの最後に改行を追加したら、icludegraphicsなどもうまくいった。
ただし、変換後に余分な改行がされてしまう。

if の最後のENDIFだけは¥¥がそのまま¥¥になるので、¥をひとつにする必要があるのが、なぜなのか不明。

Re: YASnippet Hidemarized v1.0

liki さん、すみません。長らく放置していましたが…
YASnippet Hidemarized は実は作者も使っていないもので、せっかくご報告いただきましたが、調査する予定がありません。
ソースは GitHub にありますので、Fork & Pull Request は歓迎します。
よろしくお願いします。

Re: YASnippet Hidemarized v1.0

ありがとうございます。