:TOhtml - VimのスクリーンイメージをHTMLに変換
先日、コメントをいただいた記事に行番号が追加されていたのを見て、
Re: オプションをトグルする関数 - bugfix - while ("im the true Vim master"); - vimグループ
どうやってるんだろうと疑問に感じたため。
ソースプログラムに対して行番号を追加するスタイルシートを
使っているのかと思ったけれど、そうでもないらしく。
まさか手打ちで行番号を追加したのかな、と思ったけれど
それは面倒だと思ったり。
# はてなのスーパーpre記法を有効にしつつ、
# 行番号も色が変わっている配色だし・・・
Vim-users.jpの過去ログを読んでいたら、
http://vim-users.jp/2009/06/hack23/
それっぽいのを発見したので、多分これだろうと推測。
先日の記事に対して、使ってみる。
1 " 関数の概要
オプションをトグルする関数 - bugfix
2 " void Toggle_option(String)
3 " Stringで与えられたbooleanオプションをトグルする。
4 " 使い方:
5 " Toggle_option('number')
6 " Toggle_option('nonumber')
7 function! Toggle_option(target_opt)
8 " 次の場合エラーになる可能性がある
9 " 1. a:target_optが'no'から始まるが、その後に続く文字列が
10 " Vimのオプションに存在するものでない場合
11 " a:target_optの例) noabcdefg
12 " 2. a:target_optが'no'から始まらず、文字列全体が
13 " Vimのオプションに存在するものでない場合
14 " a:target_optの例) abcdefg
15 if (a:target_opt =~# "no.*")
16 let s:target_inv_opt = a:target_opt[2:]
17 let s:opt_added_amp = '&' . eval('s:target_inv_opt')
18 else
19 let s:target_inv_opt = 'no' . a:target_opt
20 let s:opt_added_amp = '&' . eval('a:target_opt')
21 endif
22
23 if eval(s:opt_added_amp)
24 execute 'setlocal' s:target_inv_opt
25 else
26 execute 'setlocal' a:target_opt
27 endif
28 unlet s:target_inv_opt
29 unlet s:opt_added_amp
30 endfunction
それっぽく見える。きっとこれだろう。
ちなみに:TOhtmlで出力されたHTMLの
カラースキームとかをデフォルトにしてから出力することで、
はてダで現在使ってるテーマのスーパーpre記法と、
同じハイライトになるのかもしれないな。