ラベル XYZZY の投稿を表示しています。 すべての投稿を表示
ラベル XYZZY の投稿を表示しています。 すべての投稿を表示

2011年6月12日日曜日

dabbrevのポップアップにXTAGSの関数リストを追加する

普段XYZZYで開発をしています。
文字補完にdabbrevを利用しているわけですが、dabbrevは表示バッファしか候補リストに表示してくれないので、補完リストに表示させるためだけに編集しないファイルを開いたりしなければいけなくって結構に面倒に感じていました。
関数が補完候補にあがってきてくれればいいので、関数のタグジャンプ機能を利用する際に生成されるファイル(XTAGS)をdabbrev実行時に読み込んで、関数を補完リストに表示させるようにしました。
仕事でつかっているのがPHP4(というか関数しかつかってないPHP)なので、そういった環境での利用を想定しています。

2011年6月11日土曜日

[XYZZYTIPS]PHPDoc風関数コメントとコメントを生成するマクロ

仕事でPHPを利用しているのですが、PHPは型の指定を一切しないのに、PHPDoc用の関数コメントには型を明記しないといけないんですよね。それとインデントをそろえるのが面倒くさくて関数とコメントを生成するマクロを作成してみました。


具体的には、

これはテスト用の関数です。
@test_function param:array:配列 return:string

という入力を
/**
* これはテスト用の関数です。
*
* @param  array  param 配列
* @return string       
*/
function test_function($param) {



}

に変更します。



これは次のような手順で実現しています。

2011年5月5日木曜日

【XYZZYTips】タブキー押下時に囲み文字を抜ける

Eclipseだと文字列を書いたりしている場合に、タブキーを押すと文字列(「"」で囲まれた範囲)から抜けることができるのですが、それと似たようなことをXYZZYでもできないだろうかということで、タブキーを押したときに隣にある文字列が囲み文字列(「"」、「'」、「>」)などのときは、カーソルを一つさきにすすめるというマクロを作ってみました。

2010年11月14日日曜日

【XYZZYTips】「""」などの囲み文字を連続して入力したらカーソルを文字の間に移動させる

自分は開発作業で「XYZZY」というエディタを利用しているのですが、ネットとか見てると意外と利用者が多そうなので、自分で作ったスクリプトをちょっと公開してみようかと。

新人の頃に「"」などの囲み文字は「""」というように最初に対の形で入力して、その後に中身を書いていくという癖を付けられました。まあ、囲み文字を閉じ忘れるのにはいいと思うのですが、如何せんカーソルを一度戻して入力を続けるというのが結構面倒なんですよね。
今はPHPで仕事をしてるんですけど、PHPなんで当然HTMLタグとかも書いたりしてると、囲み文字が結構あって、その都度カーソル戻って入力するのが、結構嫌だった。

そこでXYZZYで「""」や「<>」と入力すると勝手に1文字分カーソルが戻ってくれるようなマクロを作りました。
こちらがソースになります。
;;囲み文字を入力したら、カーソルを戻して囲み文字の間にカーソルが入るようにする
(setq *backword-char-item-list* '((#\) "()") (#\] "[]") (#\} "{}") (#\' "\'\'") (#\" "\"\"") (#\> "<>")))
(defun backword-char-command-hook (list)
   (if (consp list)
      (let ((last-command (first (first list))) (back-key (first (rest (first list)))))
         (add-hook '*post-command-hook*
            #'(lambda()
               (if (and (eq *last-command-char* last-command)
                     (looking-back back-key)
                   ) (backward-char)))
         )
         (backword-char-command-hook (rest list))
      )
    ))
(backword-char-command-hook *backword-char-item-list*)
つたないコードですが、誰かの参考になれば幸いです。