LoginSignup
2
1

More than 5 years have passed since last update.

"Buffer is read-only: #<buffer *GTAGS SELECT* (D)tagname>"の解決方法

Last updated at Posted at 2016-08-23

コードリーディング支援ツール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にキーバインドすると、改行が常にできなくなり、悲しい気持ちになります。
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1