Como excluir todo o espaço em branco até o primeiro caractere que não seja em espaço em branco?

7

Estou procurando uma função emacs que exclua todos os espaços em branco da posição do cursor (incluindo novas linhas) até o primeiro caractere que não seja espaço em branco.

Por exemplo, se meu cursor estiver posicionado no final da primeira linha:

main(arg1,
     arg2)

A função de exclusão resultaria em:

main(arg1,arg2)
Jeff Bauer
fonte

Respostas:

7

Você pode achar o hungry-deletepacote útil. Eu, pessoalmente, vinculo C-cdeletea excluir espaços em branco após o ponto e C-cbackspaceexcluir espaços em branco antes do ponto,

(global-set-key (kbd "C-c <backspace>") 'hungry-delete-backward)
(global-set-key (kbd "C-c <deletechar>") 'hungry-delete-forward)

update: a partir de 12.2018, as definições de função foram alteradas:

(global-set-key (kbd "C-c <backspace>") 'c-hungry-delete-backward)
(global-set-key (kbd "C-c <deletechar>") 'c-hungry-delete-forward)
Iqbal Ansari
fonte
4

Eu uso isso com bastante frequência:

(defun join-line* ()
  "Join this line with the next line deleting extra white space."
  (interactive)
  (join-line t))

(global-set-key (kbd "M-j") #'join-line*) ;; just key binding I use…
Mark Karpov
fonte
Eu acho que seria bom notar que isso é equivalente a baunilha C-u M-^.
Basil
Observe também que join-line(aka delete-indentation) geralmente deixa um caractere de espaço após ponto.
Basil
2

Mais uma solução

(defun foo ()
  (interactive)
  (delete-region (point)
                 (+ (save-excursion (skip-chars-forward " \n"))
                    (point))))
Nome
fonte