Emacs: Salta para a próxima linha com o mesmo recuo

3

Muitas vezes, eu estou preso procurando o final de loops e métodos e classes e acabo peneirando todo o código que é demorado e frustrante. Eu preferiria pular para ir para a próxima linha com o mesmo recuo.

Existe algum atalho no emacs para fazer isso?

    
por HindK 23.12.2015 / 08:30

2 respostas

4

Uma pequena melhora na resposta de Stefan :

(defun jump-to-same-indent (direction)
  (interactive "P")
  (let ((start-indent (current-indentation)))
    (while
      (and (not (bobp))
           (zerop (forward-line (or direction 1)))
           (or (= (current-indentation) 0)
           (> (current-indentation) start-indent)))))
  (back-to-indentation))

Essa função recebe um argumento de prefixo (por exemplo, + 1 / -1) que designa o número de linhas a serem movidas ao procurar por uma linha com o mesmo recuo. Também salta linhas vazias. Finalmente, pode-se vincular as pesquisas para frente e para trás usando atalhos de teclado semelhantes a M-{ e M-} para parágrafos:

(global-set-key [?\C-{] #'(lambda () (interactive) (jump-to-same-indent -1)))
(global-set-key [?\C-}] 'jump-to-same-indent)
    
por 04.03.2016 / 03:37
2

Eu não sei de nada, mas algo como

(defun jump-to-next-same-indent ()
  (interactive)
  (let ((start-indent (current-indentation)))
    (while
      (and (not (bobp))
           (zerop (forward-line 1))
           (> (current-indentation) start-indent))))
  (back-to-indentation))

deve funcionar, o que você poderia ligar por exemplo para M-p com

(global-set-key [?\M-p] #'jump-to-next-same-indent)
    
por 12.01.2016 / 17:39

Tags