Estou tendo alguns problemas com o leme, por isso me debug-on-error
esforcei para localizar o problema. Agora, sempre que o problema ocorre, o *Backtrace*
buffer aparece como esperado, mas ainda estou em um dos principais modos do leme e não consigo navegar no buffer de backtrace e depurar normalmente.
O modo principal ainda está usando o minibuffer e também parece estar "roubando" minhas seqüências de teclas e me impedindo de depurar. Quando saio do helm-mulit-occur
em andamento, o buffer de backtrace é limpo e não consigo continuar a depuração.
Existe uma maneira de "pausar" um modo principal enquanto mantém o depurador elisp em execução para que eu possa depurar normalmente?
debug-on-entry
onhelm
(a depuração por erro não seria acionada porque não havia erros) e ainda consigo depurar.helm-multi-occur
e o erro específico que está ocorrendo algum tempo após o leme estar sendo executado com êxito éhelm-interpret-value: Symbol must be a function or a variable
.other-window
não faz nada neste modo, e o minibuffer parece sempre ter foco.C-h m
é mapeado para o comandohelm-help
, mas rodando manualmentedescribe-mode
me diz que eu estou nominibuffer-inactive-mode
.Respostas:
O comando
helm-toggle-suspend-update
está vinculadoC-!
por padrão. Ele não fecha o leme ou encerra a atualização recursiva, mas temporariamente torna o modo de leme muito menos "invasivo". Suspender atualizações impedirá o leme de "roubar" todas as entradas do teclado e do mouse, o que pode permitir que você depure o processo do leme em outra janela.fonte
Não é possível "pausar" um modo principal, mas, como sugerido nos comentários das suas perguntas, deve ser possível afastar-se do buffer que acionou o erro e para o buffer de retorno. Se o modo do buffer em que o erro ocorreu substituir as ligações globais normais para mover para outro buffer, a inclusão explícita da chave em seu mapa de teclas poderá devolver a capacidade de selecionar outro buffer.
No entanto, também é possível que o modo leia a entrada do usuário de uma maneira mais sofisticada, tornando impossível se afastar. No caso de um modo / buffer de conclusão como
helm
esse, poderia fazer sentido.No entanto, você pode simplesmente sair
helm
e ir para*Backtrace*
. O buffer não será mais exibido em uma janela, mas ainda deve existir e conter o backtrace mais recente. Você menciona que o "buffer de backtrace é limpo"; o buffer simplesmente desaparece ou seu conteúdo é realmente limpo? No último caso, convém abrir um problema nohelm
repositório, pois isso pode ser considerado um bug.fonte
M-x other-window
diretamente, mas nenhuma delas me permitirá desviar o foco do minibuffer de conclusão do leme. Quando o buffer de backtrace aparece pela primeira vez, é a janela ativa, mas quase todo pressionamento de tecla é "roubado" pelo leme e me leva de volta ao modo de conclusão. Quando eu saio do leme comC-g
o buffer de backtrace é limpo, sem informações desfazer.(elisp)Recursive Editing
. Faz sentido para um pacote como,helm
mas também significa que sairhelm
(invocando regularmente um comando ou abortando no seu caso) retornará ao nível anterior, o que faz com que o retorno ao nível atual seja perdido. Então você estava completamente no caminho certo. Talvez o leme já forneça uma solução para isso, verifique suas perguntas frequentes, caso contrário abra um problema.M-x fundamental-mode
Também pode funcionar, embora também seja possível que isso mude o modo no buffer errado.