私はC++プログラマーであり、そしてもちろん私たちの最愛のemacs(v24.2)で構成されるセットアップを使用していcc-mode
ますCEDET
。
私が見逃している機能は、引数のリストをすばやくポイント移動する関数です。この例を考えてみましょう。
void takesManyArgs( int a1, int a2, int a3, std::pair<int,int> a4, int a5 ){
// does something nifty!
}
// [...]
takesManyArgs( b1, b2, b3, make_pair( b4, b5 ), b6 );
ポイントが最初の直前にあるところint
。ここで、引数のリストをすばやく移動する簡単な方法、つまり、コンマ(引数の区切り文字)を過ぎた最初の非空白文字の直前に移動するforward-argument
(および同様の)関数を作成したいと思います。
私はそれを行う小さな関数を書きましたが、それは私が望む方法ではありません:backward-argument
(defun arg-forward ()
"Move point forward in the file until we hit an argument separator, i.e. comma, colon or semicolon."
(interactive)
(progn
(re-search-forward "[,]")))
原則として、この関数は次のコンマにジャンプするだけです。それは私が望む行動ではありません。
次のような関数が欲しいのですが。
- 編集:次の引数セパレーター(つまり、C ++の場合はコンマ)にジャンプし、その引数セパレーターの直後にポイントを配置します
- カンマの後に空白があるかどうかを確認します。存在する場合、ポイントは最初の非空白文字に移動されます(つまり、マークがポイント する場所の
,| int
ように見えます), |int
|
- 引数リストの最後で停止し、メッセージを出力します(例:「引数リストの最後」)
- その「スコープ」内にとどまります。つまり、マークが指す
|int b3
場所に|make_pair( int b4, int b5 )
移動します。|int a6
|
あなたのelisp
「ハッカー」からの助けは大歓迎です!
編集:いくつかの説明を追加しました。
Edit2:その例の「コード」を修正しました