narrowing

narrowing

Emacs のもっともおいしい機能の一つですよお。
なにかをスプレー塗装するとき、余計なところは新聞紙とかテープでマスキングしますよね?narrowing って、あれじゃないかなぁとか。

narrow-to-c-function

開発がお仕事だったころは、こんなのを使ってました

(defun mark-c-function ()
  "Put mark at end of C function, point at beginning."
  (interactive)
  (save-excursion
    (push-mark (point))
    (end-of-defun)
    (push-mark (point))
    (beginning-of-defun)
    (backward-paragraph)))
(define-key c-mode-map "\C-c " 'mark-c-function)

(defun narrow-to-c-function ()
  "Narrow to C function"
  (interactive)
  (let (begin end)
    (beginning-of-defun)
    (backward-paragraph)
    (setq begin (point))
    (end-of-defun)
    (setq end (point))
    (narrow-to-region begin end)))
(define-key c-mode-map "\C-cn" 'narrow-to-c-function)

C ソース見てて、「む」と思ったらすかさず C-c n
その関数以外は一切見えなくなるから、検索も置換もやりたい放題

目が冴えてしまってそのまま会社へ。やばい。いまごろねむい。