Nautilus script から emacs で grep-find する

2020-06-26 Fri. 22:32:54 JST
linux
by kiyozzy

■ emacs の grep-find

emacsを使っていると grep-find を頻繁に使う場合がある。 その都度、

しているが、手間がかかりなんとかしたい。

■ コマンドラインから emacs の grep-find を実行する

コマンドラインから emacsclient を立ち上げて grep-find させるには次のように行う。
vi ~/bin/emacs_grep_cmd.sh

#!/bin/bash

ARG="$1"
if [ "$ARG" == "" ];then
  exit
fi

emacsclient -a "" -c --eval "(sleep-for 0.1)" "(set-frame-width nil 200)" "(grep-find \"find . -type f -exec grep  -nH --null \\\"$ARG\\\" \\\{\\\} \\\;\")" &
    

chmod a+x ~/bin/emacs_grep_cmd.sh しておく。
grep-find したいディレクトリで
emacs_grep_cmd.sh 検索ワード
すると、 emacsclient が起動し、指定した検索ワードで grep-find してくれる。
ちなみに "(sleep-for 0.1)" については、.emacs で少し時間がかかる処理をしているため、 "(set-frame-width nil 200)"については、.emacs でFrameの横幅を狭くしているので、 grep-findしたときに左右にWindowが配置され、右側のgrep-findの行をクリックすると 左側のWindowに該当箇所が表示されるよう、横幅を広くする命令を置いている。 不要ならば削除するとよい。

■ Nautilus(caja) script から emacs で grep-find する

Nautilus(caja)(- Windowsで言うエクスプローラみたいなアプリ) の右クリックから emacs の grep-find をできるようになれば、 ディレクトリ以下からgrepして内容を確認するのが快適になる。
Nautilus(caja)のscriptは端末から引数を指定するわけにはいかないので、 上記スクリプトの、検索ワードを引数から取っている所を GUIのダイアログにて代用する。
スクリプトの置き場所は使っている環境で異なるので調べてください。
Ubuntu MATE の caja だと ~/.config/caja/scripts/ です。chmod a+x してください。

#!/bin/bash

ARG=`zenity --entry`
if [ "$ARG" == "" ];then
  exit
fi

emacsclient -a "" -c --eval "(sleep-for 0.1)" "(set-frame-width nil 200)" "(grep-find \"find . -type f -exec grep  -nH --null \\\"$ARG\\\" \\\{\\\} \\\;\")" &
    

Nautilus(caja)で右クリック

検索ワード入力

emacsが立ち上がる

これで emacs の grep-find が 快適になる...といいな。

■ Nautilus(caja) script から emacs で find-name-dired する

find コマンドも、 emacsの find-name-dired でする場合は以下。

#!/bin/bash

ARG=`zenity --entry`
if [ "$ARG" == "" ];then
  exit
fi

emacsclient -a "" -c --eval "(sleep-for 0.1)" "(set-frame-width nil 200)" "(find-name-dired \".\" \"$ARG\")" &