読者です 読者をやめる 読者になる 読者になる

簡易suggest機能を追加するプラグインを作ってみた

trac javascript

あんまりsuggestしてないけど( ´ω`)
最近はtracを自分用まとめサイトとして使ったりしてるわけなんだけど、wikiページに日本語名を使っていると、wiki:ページ名 と入力しないとリンクが張られない。結構めんどくさい。
じゃあ英語名にすればいいかというとそういうわけでもなく、ページ名を覚えてないとリンクが張れない。なので wiki: とか入力するとwikiページをsuggestしたりするプラグインを作ってみた。PythonJavaScriptの勉強を兼ねてたはずなんだけど、ほとんどの機能はJavaScriptで実現していてPythonはあまり使ってない。


ここからどうぞ → ダウンロード(Avast 4.7 Home ウィルスデータベース0619-2 でチェック済み)
何もないのもあれなので、ライセンスは trac と同じで縛りの少ない修正BSDライセンスにしておく。


今のところ WinXP + firefox 1.5 でしか動かない。IE6は動作しなかった。ほかの環境は不明だけど、少なくともIE6には対応する予定。

インストール方法

  1. ダウンロードしたzipを解凍。
  2. ezSuggest-0.1-py2.3.egg を $TracEnv$/plugins にコピー。
  3. $TracEnv$/htdocs/js に prototype-1.4.0.js と ezsuggest.js をコピー。
  4. $TracEnv$/templates に site_header.cs をコピー。修正しているなら記述内容を追加してもかまわない。
  5. apahce を再起動

使い方

Wiki 編集画面内の TextArea 内で使う。

  • wiki: と入力すると wiki ページ一覧が表示される。ただし trac のデフォルトページは除く。
  • milestone: と入力すると milestone 一覧が表示される。

候補一覧が表示されているとき、

  • 文字を入力すると一覧を絞り込む。
  • 矢印上下キーで選択候補を上下する。
  • TABキーまたはEnterキーで選択候補をカーソル位置に挿入する。

基本はこんな感じ。
ついでに Ctrl + space を押すと trac の wiki 記法とかよく使うマクロが表示されるようにしてみた。FootNoteマクロ以外は trac 0.9.5なら標準で用意されているはず。カーソルを囲むやつは、文字を選択してる状態で実行すると選択文字列を囲んだ状態で入力される。

wiki
カーソル位置に wiki と入力
milestone
カーソル位置に milestone と入力
bold
ボールド。カーソルを ''' で囲む
bolditalic
ボールドイタリック。カーソルを ''''' で囲む
del
取り消し線。カーソルを ~~ で囲む
footnote
FootNote記述マクロ。カーソルを [[FootNote()]] で囲む
footnoteReference
FootNote表示マクロ。カーソル位置に [[FootNote]] と入力
image
Imageマクロ。カーソルを [[Image()]] で囲む
italic
イタリック。カーソルを '' で囲む
monospace
モノスペース。カーソルを {{{ と }}} で囲む
newline
改行。カーソル位置に [[BR]] と入力
outline1
見出し第1レベル。カーソルを = で囲む
outline2
見出し第2レベル。カーソルを == で囲む
outline3
見出し第3レベル。カーソルを === で囲む
pageoutline
アウトラインマクロ。カーソル位置に [[PageOutline]] と入力
sub
上付き文字。カーソルを ^ で囲む
sup
下付き文字。カーソルを ,, で囲む
timestamp
Timestampマクロ。カーソル位置に [[Timestamp]] と入力
underline
アンダーライン。カーソルを __ で囲む

これは ezsuggest.js の __wikiFormat で指定しているので自分で追加可能。

既知の問題とかTODOのようなもの

不具合

  • 候補一覧に長い文字列があると suggest の表示がおかしくなる → suggest を可変にすればいいけど面倒。
  • チケット編集可能だと、チケットの詳細で suggest の表示がおかしくなる → どうしよう。
  • 画面の下のほうで suggest を表示すると下のほうが見えない → 全部表示できないときは描画位置を変えればいいけど面倒。

TODO

  • IE対応。 → suggest の表示位置とか描画がおかしいのを直す。

できたらいいなというもの

  • source パスの補完
  • 添付ファイル名の補完
  • egg をコピーするだけで動くようにする

やる気のしないもの、というか多分やらない