Функция emacs ведет себя по-разному, когда привязана к раскладке - PullRequest
0 голосов
/ 12 ноября 2011

Впервые на elisp и нужна помощь.

У меня есть простая функция, которая просматривает документ, когда кадр разбит на два окна:

(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)))))

В левом окне есть текстовый документ с этой функцией. В правом окне есть PDF-файл с открытым docview.

Когда я нажимаю C-M-v, он работает правильно в первый раз, а затем неправильно во второй раз. Кажется, что поочередно выполняется переход на страницу вниз, а затем на страницу вверх, поэтому я никогда не перехожу на следующую страницу.

Когда я запускаю эту функцию в интерактивном режиме с M-x noteview-pagedown, она работает.

Будем благодарны за любые подсказки, почему это не сработает из макроса клавиатуры.

Ответы [ 2 ]

1 голос
/ 12 ноября 2011

Вы определили

noteview-режим-карта

, но нет

noteview режим

. Я не уверен, что эта свисающая карта может когда-либо делать что-либо, если только вы не определили второстепенный режим где.

Это ни в коем случае не должно быть второстепенным режимом, вы, похоже, хотите, чтобы C-M-v прокручивал другое окно, даже когда оно показывает буфер просмотра документов?

(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 голосов
/ 01 января 2012

Я ничего не знаю о doc-view, но я только что сделал C-h f doc-view-scroll-up-or-next-page, и, кажется, он говорит, что для того, чтобы он перешел на следующую страницу, вы должны иметь не ноль 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.

...