Developer's Blog

【Emacs】【Objective-C】ファイル内のメソッド一覧を表示してジャンプする

こんにちは。Sleipnir (iOS / Mac) 開発担当の宮本です。

Xcode にはエディタ部分の上にファイルやメソッドにジャンプできるジャンプバーがあります。 Emacs ではファイル移動は楽なのですが、メソッドへの移動は isearch とかでやっていると、少し面倒ですね。 せっかく Emacs を使っているのですから、ないものは作ってしまいましょう!

anything なら簡単に作れる!

anything-config.el に headline という機能があって、指定した正規表現にマッチした行を anything で表示できます。
実際のコードはこんな感じです。

(require 'anything)
(require 'anything-config)

(defvar anything-c-source-objc-headline
  '((name . "Objective-C Headline")
    (headline  "^[-+@]\\|^#pragma mark")))

(defun objc-headline ()
  (interactive)
  ;; 全メソッドが絞り込まなくても表示できるように500にしておく
  (let ((anything-candidate-number-limit 500))
    (anything-other-buffer '(anything-c-source-objc-headline)
                           "*ObjC Headline*")))

Xcode ではセパレータなどになる、#pragma mark も表示するようにしています。 クラスの構成がパッと確認できるので、きれいなコードを書き易くなりますね。 ジャンプバーでは関数もでるのですが、正規表現で書くのが辛かったので、この elisp では関数は表示されません。 ただ、それほど C の関数を書くこともないので、困らないはずです。

Objective-C でなくても正規表現さえ書けば、色々応用できるので、anything の headline はオススメです。

Copyright © 2019 Fenrir Inc. All rights reserved.