On moccur-grep-find results, moccur-prev and moccur-next doesn't work correctly
meltedice opened this issue · comments
On moccur-grep-find results, n key (moccur-next) points wrong lines and skip some lines.
p key (moccur-prev) doesn't go up, behaves like moccur-next.
But following color-moccur.el 2.73 works well.
http://www.bookshelf.jp/elc/color-moccur.el
Emacs を 24.4.1 に上げて、.emacs を整理していて気づいたのですが、
Emacs 24.4.1 で moccur-grep-find が変な挙動をしているようです。
検索結果上を n/p で移動する際に n (moccur-next) が行をスキップして、
ファイル内の正しい位置を差してくれません。
また、p (moccur-prev) は上に移動せずに、moccur-next のように先に進んでしまいます。
bookshelf にある color-moccur.el 2.73、は今まで通り動作しているので、
こちらの color-moccur.el 2.71との間に何か違いがあるようです。
(中身まで確認していなくてすみません)
Environment:
- Emacs 24.4.1 + Mac OS X Yosemite
- Emacs 24.4.1 + Ubuntu 14.04
(Melpa への登録、ありがとうございます)
goto-line
を使うべき所にforward-line
を使っているのが問題と考えます。
以下の行でforward-line
をgoto-line
に変更し、byte-compileし直してみてください:
- 1268行目, 1271行目 (in
moccur-view-file
) - 2136行目 (in
moccur-grep-goto
) - 2934行目 (in
moccur-mode-goto-occurence
) - 3135行目 (in
moccur-mode-start-ee-switch-before-buffer
)
この変更でmoccur-grep-find
だけでなく、以下の不具合も修正できます:
(1) moccur bufferから、検索対象bufferの対応する場所へ飛べない
(2) moccur bufferのカーソル移動で、検索対象bufferの対応箇所に移動しない
なお、私の環境は:
- Emacs 24.3.1 w/ Ubuntu 14.04LTS (i386)
- Emacs 25.0.50.3 (a8856cb50b6a99c23664cdb3c66b480bf880edcf) w/ Debian Sid (x86_64)
です
遅くなってすみません。
goto-lineはマークリングを汚すので、forward-lineを残しながら修正してみました。
お試しください。
修正ありがとうございます。正しい動作を確認できました。
goto-lineはマークリングを汚す
goto-line
のdocumentをよく見たら:
This function is usually the wrong thing to use in a Lisp program.
とありました。適当過ぎるworkaroundですみませんでした。
反応が遅くなってしまってすみません。。
対応ありがとうございました。
こちらの環境でも、M-x auto-install で入れていたバージョンから、
cask 経由でインストールする方へ切り替えて問題なく動作していることを確認しました。
color-moccur.el、検索は遅いものの、ag.el + wgrep.el よりも UI が使いやすく重宝しているので助かりました。