コードリーディング支援ツールglobalのトラブルシューティングです。
環境
gtags - GNU GLOBAL 6.2
GNU Emacs 21.3.1 (FreeBSD8.2)
事象
タグジャンプ候補が複数ある場合、ジャンプ先を選択するための"gtags-select-mode"が表示されます。ここで、「リターンキー」を使ってジャンプ先を選びたいのですが、キーを押下すると以下のようなエラーが表示されます。
Buffer is read-only: #<buffer *GTAGS SELECT* (D)tagname>
どうやら、"gtags-select-mode"で、リターンキーは改行扱いになっているようです。
設定ファイルの書き方
gtags-select-modeのときのみ、リターンキー(\C-m)が"gtags-select-tag"になるように、ローカルキーバインドします。
.emacs
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; For Global
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq load-path (cons "/usr/home/osada" load-path))
(autoload 'gtags-mode "gtags" "" t)
(global-set-key "\C-cg" 'gtags-mode)
(global-set-key "\C-cv" 'gtags-visit-rootdir)
(global-set-key "\C-ct" 'gtags-find-tag)
(global-set-key "\C-cr" 'gtags-find-rtag)
(global-set-key "\C-cs" 'gtags-find-symbol)
(global-set-key "\C-cm" 'gtags-select-tag)
;(define-key gtags-select-mode-map "\C-m" 'gtags-select-tag)
(setq gtags-rootdir "/usr/home/osada/ns-allinone-2.35")
; 以下を追加
(setq gtags-select-mode-hook
'(lambda ()
(local-set-key "\C-m" 'gtags-select-tag)
))
- 新しい環境(emacs ver.が23以上?)であれば、define-keyを使って、gtags-select-modeで有効になるキーマップを定義してあげるとよいそうです。(試していません。)
- global-set-keyで\C-mをgtags-select-modeにキーバインドすると、改行が常にできなくなり、悲しい気持ちになります。