Как я могу найти окружающие символы в выбранной области в Emacs?
Мой вопрос возник из-за того, что я ожидаю, что функция могла бы преобразовать таблицу в режиме org в диаграмму ditaa. Что я пытаюсь сделать, это:
- найти "|" если есть "-" слева / справа / выше / ниже, измените его на "+"
- найти "+", если нет "|" Слева / справа / выше / ниже, измените его на "-"
Может кто-нибудь показать мне, как искать символ выше / ниже или всю функцию?
2 ответа
Вы можете использовать такую функцию, чтобы проверить, что находится в следующей строке:
(defun get-char-on-next-line (&optional point)
"Return the character one line down from POINT.
If POINT is nil or omitted, use the current position of point."
(save-excursion
(when point
(goto-char point))
(let ((column (current-column))
(line-move-visual nil))
;; next-line preserves the current column if possible
(next-line)
(when (= column (current-column))
(char-after)))))
замещать next
с previous
для противоположной функции.
Во-первых, скажите спасибо @legoscia за оригинальное решение.
Когда я пытаюсь (следующая строка)/(предыдущая строка) у меня возникают некоторые проблемы, такие как "конец буфера, начало буфера". Затем я искал в руководстве elisp. Он предлагает использовать прямую линию. Тогда я получил свое решение здесь:
(defun get-char-below (&optional point)
"Return the character one line down from POINT.
If POINT is nil or omitted, use the current position of point."
(save-excursion
(when point
(goto-char point))
(let ((column (current-column)))
(if (= (forward-line 1) 0)
(if (= column (move-to-column column))
(char-after)
nil)
nil))))