В последних двух вызовах функций в анонимной функции, назначаемой вами клавише, есть круглые скобки, из-за чего Emacs Lisp думает, что вы хотите вызвать функцию с именем (search-backward "." nil t)
. Попробуйте
(add-hook 'text-mode-hook
(lambda ()
(local-set-key (kbd "s-p")
(lambda ()
(interactive)
(search-backward "." nil t)
(forward-char)))))
Проблема, с которой я столкнулся бы, заключается в том, что она не повторяется. Если вы запустите его во второй раз, он найдет тот же период, который вы только что нашли. Возможно, вы захотите проверить, является ли предыдущий символ точкой, и если это так, пропустите его. Кроме того, вы можете немного упростить его, используя define-key
для явного добавления привязки к таблице ключей text-mode
:
(define-key text-mode-map (kbd "s-p")
(lambda ()
(interactive)
(if (looking-back "\.")
(backward-char))
(search-backward "." nil t)
(forward-char)))