Попробуйте что-то вроде этого.
(defun dupchar ()
(interactive)
(let ((char-above (save-excursion
(line-move -1)
(following-char))))
(unless (eq char-above ?\n)
(insert char-above))))
(define-key global-map [(meta \")] 'dupchar)
Несколько комментариев к функции, которую вы написали:
Вам нужно использовать (interactive)
в противном случае вы не можете связать
функция клавиши.
Это не очень хорошая идея, чтобы просто
случайные setq
вещи - которые создают
глобальная переменная. В этом случае вы
вообще не нужна переменная; вы
может использовать возвращаемое значение
от save-excursion
. (В более поздней версии этого мне нужно было использовать let.)
Скобки вызывают функцию в
(e) lisp, так что вам нужно использовать -1
вместо (-1)
.
2-й-4-й аргументы 'line-move
по умолчанию будут nil
, поэтому их не нужно указывать.
(Примечание: я изменил это, чтобы остановить в конце строки; опять трудно понять, что вы написали, но это мое лучшее предположение.)