私はGmrunが大好きです。
Mihai Bazonさん、すばらしいソフトウェアを作ってくれてありがとうございます。
さて、前回の「☆gmrun で Ctrl+PをUp、Ctrl+NをDownキーと同じように動作させる」に引き続き、
2つだけBashのキーバインドを付け加えてみました。
Ctrl+K、Ctrl+Uです。文字列を選択した状態はBashではありえない状態なので、
どういう仕様にするか迷ったのですがコーディングが楽な使用にしました。
パッチはこれです。
適用の手順は下記の通りです。
/usr/bin/gmrunだけ圧縮したアーカイブも用意しました。gmrun_0.9.1-4_i386.msll-patched.20100505.tar.gz
開発環境を入れたくない方はapt-getでgmrunを導入した後、/usr/bin/gmrunだけ入れ替えればOKです。
(ビルドしたパッケージをdpkgで導入すると更新がなくてもupdate-managerで
更新対象としてリストされるので、自分でビルドした場合でも一旦apt-getでgmrunを導入してから、
/usr/bin/gmrunだけ入れ替える方が良いかもしれません。
ちゃんとパッケージした方法で作れば良いのでしょうが、方法がわからず...)
ソース、パッチの取得とビルド
$ mkdir gmrun $ apt-get source gmrun $ sudo apt-get build-dep gmrun $ wget http://sites.google.com/site/midspeclowload/files/gmrun-0.9.1-4.msll-20100505.patch?attredirects=0&d=1 $ patch -p1 < gmrun-0.9.1-4.msll-20100505.patch $ cd gmrun-0.9.1/ $ debuild -r
gmrun-0.9.1-4.msll-20100505.patch
--- a/gmrun-0.9.1/src/gtkcompletionline.cc 2003-06-22 08:14:34.000000000 +0900
+++ b/gmrun-0.9.1/src/gtkcompletionline.cc 2010-05-05 22:14:05.296882925 +0900
@@ -975,6 +975,34 @@
STOP_PRESS;
return TRUE;
+ case GDK_K:
+ case GDK_k:
+ if (event->state & GDK_CONTROL_MASK) {
+ int pos = gtk_editable_get_position(GTK_EDITABLE(cl));
+ int len = gtk_entry_get_text_length(GTK_ENTRY(cl));
+ gtk_editable_delete_text(GTK_EDITABLE(cl), pos, len);
+ gtk_editable_select_region(GTK_EDITABLE(cl), pos, pos);
+ if (MODE_SRC)
+ search_off(cl);
+ return TRUE;
+ } else goto ordinary;
+
+ case GDK_U:
+ case GDK_u:
+ if (event->state & GDK_CONTROL_MASK) {
+ int pos = gtk_editable_get_position(GTK_EDITABLE(cl));
+ gtk_editable_delete_text(GTK_EDITABLE(cl), 0, pos);
+ gtk_editable_select_region(GTK_EDITABLE(cl), 0, 0);
+ if (MODE_SRC)
+ search_off(cl);
+ return TRUE;
+ } else goto ordinary;
+
+ case GDK_P:
+ case GDK_p:
+ if (event->state & GDK_CONTROL_MASK) {
+ ;/* fall to 'case GDK_Up:'*/
+ } else goto ordinary;
case GDK_Up:
if (cl->win_compl != NULL) {
int &item = cl->list_compl_items_where;
@@ -1010,6 +1038,11 @@
}
return FALSE;
+ case GDK_N:
+ case GDK_n:
+ if (event->state & GDK_CONTROL_MASK) {
+ ;/* fall to 'case GDK_Down:'*/
+ } else goto ordinary;
case GDK_Down:
if (cl->win_compl != NULL) {
int &item = cl->list_compl_items_where;
0 件のコメント:
コメントを投稿