Рассмотрим аналогию с положением точки: пользователь хочет, чтобы точка двигалась только тогда, когда он запускает команду перемещения точки. Было бы очень неприятно, если бы случайные операции, такие как блокировка шрифта, перемещали точку. Отсюда и рекомендация обернуть функциональные тела в (save-excursion ...)
.
Если ваша функция явно устанавливает для пользователя отметку , это нормально. (В этом случае я предлагаю вызывать вашу функцию примерно как sql-mark-column-value
, чтобы было ясно, что установка метки - это одна из вещей, которые она делает.) Суть документации, которую вы процитировали, заключается в том, что команды не должны случайно устанавливать метку в результате чего-то другого.
Если ваша функция просто устанавливает метку, когда пользователь ставит точку на имени столбца в выражении SQL, это, вероятно, не очень удобно. Представьте себе случай использования кого-то, кто пытается вырезать или скопировать часть оператора SQL; каждый раз, когда они пытаются переместить точку в утверждении, их отметка становится забитой! Для этого варианта использования вы, вероятно, захотите предоставить отдельную команду, например sql-goto-column-value
, вместо того, чтобы полагаться на exchange-point-and-mark
.
Конечно, если это чисто для вашего собственного использования, все идет.