2011-11-11 4 views
0

elispの新機能であり、ヘルプが必要です。emacs関数はキーマップにバインドされたときの動作が異なります

(defun noteview-pagedown() 
    (interactive) 
    (with-selected-window (other-window-for-scrolling) 
    (doc-view-scroll-up-or-next-page nil))) 

(defconst noteview-mode-keys 
    '(("C-M-v" . noteview-pagedown))) 

; lifted from android-mode.el 
(defvar noteview-mode-map (make-sparse-keymap)) 
(add-hook 'noteview-mode-hook 
      (lambda() 
      (dolist (spec noteview-mode-keys) 
       (define-key 
       noteview-mode-map 
       (read-kbd-macro (concat noteview-mode-key-prefix " " (car spec))) 
       (cdr spec))))) 

左ウィンドウが定義されたこの機能でテキストドキュメントを持っています

は私がページdocviewダウンフレームは、2つのウィンドウに分割され、単純な機能を持っています。右のウィンドウにはdocviewが開いたpdfがあります。

私はC-M-vを押すと正しく動作し、2回目は正しく動作しません。ページダウンをしてからページアップを交互に行うようですので、次のページに進むことはありません。

私はこの機能をM-x noteview-pagedownと対話的に実行すると機能します。

これはキーボードマクロからはうまくいかないというヒントがあれば幸いです。

+0

上記コードを実行した後、 'C-h k C-M-v'の出力は何ですか?また、 'noteview-mode-key-prefix'はどこかで定義されていますか? –

答えて

1

あなたは

noteviewモード

noteviewモードマップに

、ない

を定義しました。あなたがマイナーモードを他の場所に定義していない限り、このぶら下がりマップは何でもできることは確信できません。

これはマイナーモードではないはずですが、C-M-vがdoc-viewバッファを表示しているときでも、他のウィンドウをスクロールさせたいと思われますか?

(defun my-scroll-up (arg) 
    (interactive "P") 
    (with-selected-window (other-window-for-scrolling) 
    (if (eq 'doc-view-mode major-mode) 
     (doc-view-scroll-up-or-next-page arg) 
     (scroll-up arg)))) 

(define-key (current-global-map) [remap scroll-up] 'my-scroll-up) 
0

私は、doc-ビューについて何も知らないが、私はちょうどC-h f doc-view-scroll-up-or-next-pageをしたし、次のページに移動するためにあなたが非nilのdoc-view-continuousを持たなければならないと言っているようです。それは事実ですか?ドキュメントは次のとおりです:

Scroll page up ARG lines if possible, else goto next page. 
When `doc-view-continuous' is non-nil, scrolling upward 
at the bottom edge of the page moves to the next page. 
Otherwise, goto next page only on typing SPC (ARG is nil). 

HTHです。

関連する問題