как узнать, что в текущем буфере установлена ​​метка - PullRequest
1 голос
/ 20 декабря 2009

есть ли способ узнать, есть ли начало установленной метки и где находится начальная точка запроса в lisp

Ответы [ 2 ]

3 голосов
/ 20 декабря 2009

Используйте переменную mark-active:

mark-active is a variable defined in `C source code'.
Its value is nil
Local in buffer whole-line-or-region.el; global value is nil

  Automatically becomes buffer-local when set in any fashion.

Documentation:
Non-nil means the mark and region are currently active in this buffer.

Возможно, вы также захотите проверить, если отметка === указывает, действительно ли вы ищете регион:

(if (and mark-active
    (/= (point) (mark)))

Если вы хотите написать функцию, которая требует определения региона, вы можете использовать interactive, например, так:

(defun my-fn-that-requires-a-region (beg end)
  "Some documentation string mentioning BEG and END."
  (interactive "r")
  (message "%d / %d" beg end))

Если вызывается в интерактивном режиме, должна быть установлена ​​метка или сгенерирована ошибка. Вызывается программно, любые два значения должны быть переданы; проверка параметров не производится.

1 голос
/ 20 декабря 2009

Я бы рекомендовал включить transient-mark-mode

(setq transient-mark-mode t)

transient-mark-mode выделит область между отметкой и вашей текущей точкой.

В качестве альтернативы, вы можете нажать C-x C-x для перехода между текущей точкой и отметкой, чтобы увидеть, где установлена ​​отметка.

...