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

\ses 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
progns 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-2paquetefuente
Esta es una modificación de lo que respondió PythonNut que no funcionó para mí (¿por qué?):
string-match-pdevolvió 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-pdevuelve 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-indentationle proporciona la columna que sigue los espacios en blanco iniciales, que se pueden comparar con la columna al final de la línea:fuente