Ответ 1
Я не думаю, что конец предложения сделает то, что вам нужно. Вы действительно нуждаетесь в регулярных выражениях для этого, и Emacs не поддерживает их.
Вы можете перевернуть свою собственную функцию, чтобы делать то, что вам нужно. Я не понимаю всех ваших требований, но вот начало:
(defun my-next-sentence ()
"Move point forward to the next sentence.
Start by moving to the next period, question mark or exclamation.
If this punctuation is followed by one or more whitespace
characters followed by a capital letter, or a '\', stop there. If
not, assume we're at an abbreviation of some sort and move to the
next potential sentence end"
(interactive)
(re-search-forward "[.?!]")
(if (looking-at "[ \n]+[A-Z]\\|\\\\")
nil
(my-next-sentence)))
(defun my-last-sentence ()
(interactive)
(re-search-backward "[.?!][ \n]+[A-Z]\\|\\.\\\\" nil t)
(forward-char))
В большинстве ваших настроек вам необходимо сосредоточиться на регулярном выражении, чтобы убедиться, что он поражает все возможные условия конечного предложения, в которых вы нуждаетесь. Было бы относительно легко изменить его, чтобы переместить курсор в определенные места в зависимости от того, что он находит: оставьте это, если это нормальное предложение, перейдите мимо следующего {если вы в латексной команде или что вам подходит.
Как только у вас это получится, вы можете привязать функции к M-a и M-e, возможно, используя режим-крючки, если вы не хотите использовать их для каждого режима.