Eu só quero verificar se a linha atual está vazia ou não (se ela contém apenas espaço em branco, ainda a considero vazia).
Aqui está a minha versão 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)))
Qual é a maneira mais fácil de verificar se a linha atual está vazia?
whitespace
ChillarAnand
fonte
fonte
\s
é equivalente a escrevers
. Talvez você quis dizer"^\\s*$"
.\\s-
vez de\\s
. Esse hífen é necessário no elisp regexp.Respostas:
Algo assim seria "mais fácil"?
fonte
Um método simples, próximo ao que você tem:
fonte
match-data
.\\s-
vez de\s
. Você já tentou essa solução?fonte
Eu sugiro:
(Observe que os
progn
s são de fato desnecessários porque as funções de ignorar nunca retornam nulo). Como Dan faz em sua resposta,skip-syntax-*
também pode ser usado.fonte
skip-syntax-*
é o conjunto certo de funções para usar aqui.Aqui está outra solução simples, retirada do
comment-dwim-2
pacotefonte
Esta é uma modificação do que o PythonNut respondeu que não funcionou para mim (por quê?):
string-match-p
retornou o índice da próxima linha sempre que a linha atual não estivesse em branco. Então eu verifiquei que o valor de retorno é 0.fonte
(thing-at-point 'line)
inclui a nova linha no final da linha. Se a linha atual não estiver em branco, a regexp corresponderá à nova linha. O único tempostring-match-p
retornado nulo aqui é na última linha do buffer (e Dario, sua versão não funciona na última linha se o buffer não terminar com uma nova linha).current-indentation
fornece a coluna a seguir aos espaços em branco à esquerda, que podem ser comparados com a coluna no final da linha:fonte