Em que classe, método ou função estou?


7

Ao navegar em um arquivo de origem com pesquisa incremental, muitas vezes me vejo pulando para algum contexto mais alto que a janela. Isso levanta a questão: "Em que classe estou?". Ou, se o desenvolvedor anterior estiver propenso a escrever métodos altos: "Em qual classe e método eu estou?"

Atualmente, respondo a essas perguntas interrompendo minha pesquisa para iniciar uma nova pesquisa de regex na direção reversa, depois cancelo essa pesquisa e C g, em seguida, faço o que for (geralmente retoma a pesquisa). Mas, isso acontece tantas vezes, que eu deveria ter um único comando para imprimir apenas o contexto de classe / método no minibuffer. Ou, melhor ainda, se esse contexto sempre estivesse visível. (Eu abriria mão de uma linha de janela para isso.)

Existe algum dispositivo Emacs que já arranha essa coceira? Ou apenas estou fazendo isso da maneira errada? Se isso importa, estou trabalhando em Python e Java.

Respostas:


9

which-function-mode exibe o nome do método atual.

A seguinte configuração, obtida do Emacs Redux , exibe o cabeçalho atual do método / função / modo orgmode na linha de cabeçalho superior, em vez da linha de modo:

;; Show the current function name in the header line
(which-function-mode)
(setq-default header-line-format
              '((which-func-mode ("" which-func-format " "))))
(setq mode-line-misc-info
            ;; We remove Which Function Mode from the mode line, because it's mostly
            ;; invisible here anyway.
            (assq-delete-all 'which-func-mode mode-line-misc-info))

Verifique o artigo vinculado para obter uma explicação completa de which-function-mode.


Obrigado. Eu ativei which-function-mode, mas não estou vendo nada em Python ou Java. No entanto, vejo algo para C ++. (Talvez minha Emacs é muito antiga.)
davidrmcharles

which-function-modenão funciona no modo Jython. Mas sair do modo Jython e entrar no modo Python não é tão simples.
Davidrmcharles
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.