emacs 23.2.1: посимвольное копирование из предыдущей строки кажется некорректным - PullRequest
2 голосов
/ 27 сентября 2011

После обновления до emacs 23.2.1 с Fedora 15 одна из моих функций emacs не работает, и я просто не могу найти проблему.Что-то должно было измениться, но я точно не могу найти это в документации по elisp.

Буду очень признателен за любые предложения!

Что он должен делать: Нажатие Ctl-дефис должно скопировать символ над курсором и переместить точку вперед на 1.

Что он делает: Продолжает копировать вышеуказанный символ без продвижения точки.ОДНАКО, вызывая его с помощью «Mx insert-char-from-previous-line» или нажимая стрелку вправо между Ctl-hypens, работает как надо.Добавление (forward-char 1) в конец скрипта не помогает.

(defun insert-char-from-previous-line ()
  "Copy previous line character by character"
   (interactive)
   (previous-line 1)
      (let ((char-above (following-char) ))
      (next-line 1)
   (if (not (char-equal char-above ?\n ))
       (insert char-above))))

(global-set-key [?\C--] 'insert-char-from-previous-line) ;copy char above

Ответы [ 2 ]

4 голосов
/ 27 сентября 2011

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

 (defun insert-char-from-previous-line ()
   "Copy previous line character by character"
   (interactive)
   (let ((curpoint (point))
    (curcolumn (current-column)))
      (forward-line -1)
      (forward-char curcolumn)
      (let ((char-above (following-char) ))
      (goto-char curpoint)
      (if (not (char-equal char-above ?\n ))
     (insert char-above)))))

Из документов по предыдущей строке:

Если вы думаете оиспользуя это в программе на Лиспе, рассмотрите возможность использования `forward-line 'с отрицательным аргументом.Обычно он проще в использовании и надежнее (не зависит от столбца цели и т. Д.).

 (describe-function 'previous-line)
0 голосов
/ 27 сентября 2011

не перемещайте точку для чего-то вроде этого:

(defun i-char (arg)
  (interactive "*p")
  (let ((start (+ (point-at-bol 0)
                  (current-column)))))
  (insert (buffer-substring-no-properties start (+ start arg))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...