トップ «前の日記(2004-04-06 (Tue)) 最新 次の日記(2004-04-08 (Thu))» 編集   RSS 1.0 FEED  

Journal InTime


2004-04-07 (Wed) [長年日記]

_ tags-searchの検索文字列のデフォルト値

会社で「Emacs上である関数が使われている箇所を探す時どうするか」と いう話になった。 以前は、同じファイル内だけ探す時はisearch、複数のファイルを探す grepだったのだが、最近tags-searchを使うようになった。

後輩は検索のたびに関数名をコピーしてからミニバッファでペーストし て検索しているらしい。曰く、「長い関数名いちいちタイプするの面倒 臭くないですか?」 そういえば、そうだよな。でもコピー&ペーストもけっこう面倒だぞ。

tags-searchの検索文字列のデフォルト値に現在位置の識別子を渡す (find-tagみたいに)のがラクそうだなと思って、defadviceで拡張してみ た。

(defadvice tags-search (before default-value activate compile)
  "Provide default values."
  (interactive
   (list
    (let ((default (funcall
                    (or find-tag-default-function
                        (get major-mode 'find-tag-default-function)
                        'find-tag-default))))
      (read-string
       (format "Tags search (default %s): " default)
       nil nil default t)))))

ついでにtags-query-replaceも。

(defun tags-query-replace-read-args (string regexp-flag)
  (let ((from nil)
        (to nil)
        (default (funcall
                    (or find-tag-default-function
                        (get major-mode 'find-tag-default-function)
                        'find-tag-default))))
    (if query-replace-interactive
	(setq from (car (if regexp-flag regexp-search-ring search-ring)))
      (setq from (read-string (format "%s (default %s): " string default)
                              nil query-replace-from-history-variable
                              default t)))
    (setq to (read-from-minibuffer (format "%s %s with: " string from)
				   nil nil nil
				   query-replace-to-history-variable from t))
    (if (and transient-mark-mode mark-active)
	(list from to current-prefix-arg (region-beginning) (region-end))
      (list from to current-prefix-arg nil nil))))

(defadvice tags-query-replace (before default-value activate compile)
  "Provide default values."
  (interactive (tags-query-replace-read-args "Tags query replace (regexp)" t)))

ちなみに、自分は以下のキーに割り当てている。

(global-set-key "\M-s" 'tags-search)
(global-set-key "\M-r" 'tags-query-replace)

最近ラクするのを怠けていたので、もっと頑張ってラクをしようと思う。

_ tDiaryのテーマ

ふと思い立って微妙に変えてみた。

_ グーグル、反ユダヤ論争に巻き込まれる

「Googleは、複数のコンピュータアルゴリズムだけをもとにして、検索結果の順位を決定する。基本的にウェブでの人気度を反映している」とKraneは述べる。「人間はGoogleの検索結果を操作しない。検索結果を手動で変えることはできない」(Krane)

[グーグル、反ユダヤ論争に巻き込まれるより引用]

あれ、そうだったんですか、ふーん。

Tags: その他
本日のツッコミ(全2件) [ツッコミを入れる]
_ kose (2004-04-07 (Wed) 11:36)

関数名上にカーソルを置いて C-u M-x grep ってのも便利ですよ。

_ shugo (2004-04-07 (Wed) 12:02)

おお、知りませんでした。これは便利ですね。