Solo quiero verificar si la línea actual está vacía o no (si contiene solo espacios en blanco, entonces todavía la considero vacía).
Aquí está mi versión inicial:
(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)))
¿Cuál es la forma más fácil de verificar si la línea actual está vacía?
whitespace
ChillarAnand
fuente
fuente
\s
es equivalente a escribirs
. Quizás quisiste decir"^\\s*$"
.\\s-
lugar de\\s
. Ese guión se requiere en elisp regexp.Respuestas:
¿Algo como esto sería "más fácil"?
fuente
Un método simple, cercano a lo que tienes:
fuente
match-data
.\\s-
lugar de\s
. ¿Has probado esa solución?fuente
Yo sugiero:
(Tenga en cuenta que los
progn
s de hecho son innecesarios porque las funciones de omisión nunca devuelven nil). Como lo hace Dan en su respuesta,skip-syntax-*
también podría usarse en su lugar.fuente
skip-syntax-*
es el conjunto correcto de funciones para usar aquí.Aquí hay otra solución simple para ello, tomada del
comment-dwim-2
paquetefuente
Esta es una modificación de lo que respondió PythonNut que no funcionó para mí (¿por qué?):
string-match-p
devolvió el índice de la siguiente línea cuando la línea actual no estaba en blanco. Así que verifiqué que el valor de retorno es 0.fuente
(thing-at-point 'line)
incluye la nueva línea al final de la línea. Si la línea actual no está en blanco, la expresión regular coincide en esa nueva línea. El único momento questring-match-p
devuelve nil aquí es en la última línea del búfer (y Dario, su versión no funciona en la última línea si el búfer no termina con una nueva línea).current-indentation
le proporciona la columna que sigue los espacios en blanco iniciales, que se pueden comparar con la columna al final de la línea:fuente