Я просто хочу проверить, является ли текущая строка пустой или нет (если она содержит только пробелы, то я все еще считаю ее пустой).
Вот моя первоначальная версия:
(defun strip-text-properties(txt)
(set-text-properties 0 (length txt) nil txt)
txt)
(defun is-current-line-empty ()
(interactive)
(setq c-line (thing-at-point 'line))
(string-match "^\s*$" (strip-text-properties c-line)))
Какой самый простой способ проверить, пуста ли текущая строка?
whitespace
ChillarAnand
источник
источник
\s
эквивалентна записиs
. Возможно, вы имели в виду"^\\s*$"
.\\s-
вместо\\s
. Этот дефис требуется в регулярном выражении elisp.Ответы:
Будет ли что-то вроде этого "проще"?
источник
Простой метод, близкий к тому, что у вас есть:
источник
match-data
.\\s-
вместо\s
. Вы пробовали это решение?источник
Я предлагаю:
(Обратите внимание, что
progn
s на самом деле не нужны, потому что функции пропуска никогда не возвращают ноль). Как Дэн в своем ответе,skip-syntax-*
также может быть использован вместо.источник
skip-syntax-*
это правильный набор функций для использования здесь.Вот еще одно простое решение, взятое из
comment-dwim-2
упаковкиисточник
Это изменение ответа PythonNut, которое у меня не сработало (почему?):
string-match-p
возвращал индекс следующей строки всякий раз, когда текущая строка не была пустой. Поэтому я проверил, что возвращаемое значение равно 0.источник
(thing-at-point 'line)
включает перевод строки в конце строки. Если текущая строка не пуста, регулярное выражение совпадает с этой новой строкой. Единственное время, когдаstring-match-p
здесь возвращается ноль, - это последняя строка буфера (и Дарио, ваша версия не работает на последней строке, если буфер не заканчивается новой строкой).current-indentation
дает столбец после первых пробелов, который можно сравнить со столбцом в конце строки:источник