Se você estiver escrevendo C / C ++ / Java / Emacs Lisp / Python, o modo semântico-função-pegajosa fará o que você deseja.
NOTA : Isso parece estar funcionando com o CEDET do Git, não com o estoque CEDET atualmente no Emacs 24.4. Para obter o Emacs no Git:
git clone http://git.code.sf.net/p/cedet/git cedet
E carregue o CEDET primeiro acima de tudo no seu arquivo init:
(load-file (concat user-emacs-directory "/cedet/cedet-devel-load.el"))
(add-to-list 'load-path (concat user-emacs-directory "cedet/contrib"))
(load-file (concat user-emacs-directory "cedet/contrib/cedet-contrib-load.el"))
Quando ativado, este modo mostra que o ponto de função está atualmente na primeira linha do buffer atual. Isso é útil quando você tem uma função muito longa que se espalha mais que uma tela e não precisa rolar para cima para ler o nome da função e, em seguida, rolar para baixo até a posição original.
Ele exibe a interface completa da função (tipo de retorno, nome da função e parâmetros), não apenas o nome da função.
Para habilitá-lo, coloque este código no seu arquivo init:
(require 'semantic)
(semantic-mode 1)
(global-semantic-stickyfunc-mode 1)
ATUALIZAÇÃO : Um dos problemas com a corrente semantic-stickyfunc-mode
é que ela não exibe todos os parâmetros espalhados em várias linhas. Para resolver esse problema, criei o pacote stickyfunc-enhancer .
DEMO :
Aqui está uma demonstração em C:
Aqui está uma demonstração no Emacs Lisp:
ATUALIZAÇÃO : Como alternativa, você pode usar leme-semântico-ou-imenu . Quando você está dentro de uma função e executa o comando, o cursor é colocado diretamente na função da lista, para que você sempre possa ver a interface completa da função. DEMO:
Primeiro, eu uso helm-semantic-or-imenu
para mover para a função helm-define-key-with-subkeys
e mover o ponto para lá.
Então, começo helm-semantic-or-imenu
novamente e helm-define-key-with-subkeys
é pré-selecionado.
Então, movo o ponto para a variável helm-map e executo helm-semantic-or-imenu
novamente em duas funções: helm-next-source e helm-previous-source. Desta vez, em vez de mostrar a marca semântica atual em que estou operando (que é o mapa do leme), ela mostra as outras duas marcas no buffer semântico de leme. Isso ocorre porque eu forneci um argumento de prefixo antes de executar o comando.
Além disso, esta demonstração está no Emacs Lisp, funciona também com C / C ++ e é mais flexível se você tiver uma interface de função realmente longa.