C-c C-x C-vchama a org-toggle-inline-images
função. Com a tecla prefix, ele passa alguns argumentos para essa função (não sei qual).
Como posso mapear a função com argumentos para o F12botão para que faça o mesmo que C-u C-c C-x C-v?
fonte
C-c C-x C-vchama a org-toggle-inline-images
função. Com a tecla prefix, ele passa alguns argumentos para essa função (não sei qual).
Como posso mapear a função com argumentos para o F12botão para que faça o mesmo que C-u C-c C-x C-v?
C-u
é o argumento do prefixo universal. É frequentemente usado para comandos que possuem apenas dois estados (com e sem argumento), embora também possa ser interpretado como um prefixo numérico (4).
Nesse caso, observando o código-fonte, org-toggle-inline-images
vejo que ele apenas verifica se o argumento está definido para que o valor específico que você passa não importe.
Você pode definir uma função que chama (org-toggle-inline-images t)
. Para fazer isso com uma lambda:
(define-key org-mode-map (kbd "<f12>")
(lambda () (interactive) (org-toggle-inline-images t)))
Isso liga F12 no modo organizacional, deixando a ligação global no lugar para outros modos.
Para mais informações sobre as combinações de teclas, é uma boa leitura: Dominando as associações de teclas no Emacs . E é claro que existem muitos detalhes no manual Emacs Lisp .
A resposta em geral é olhar para o código que define o comando. Em particular (mas não necessariamente apenas) as interactive
especificações.
O que você procura é o que a função faz com um prefixo arg. E então você define um comando que faz a mesma coisa.
Normalmente, o prefixo arg é usado para definir algum valor que é passado no código para outra função. Você só precisa chamar essa outra função, passando o argumento que seria fornecido pelo prefixo arg no comando original. IOW, você normalmente pode usar o mesmo código, apenas passando um valor no lugar do valor que seria determinado a partir do prefixo arg.
C-u
prefixo com este:(let ((current-prefix-arg '(4))) (call-interactively #'whatever-command))
. Isso pode ser útil se você não conseguir descobrir o que o comando que está chamando está fazendo com seu argumento.C-u
. Não é apropriado se o comando tiver um comportamento diferente, dependendo de se plainC-u
é usado ou não (por exemplo, distinção deC--
ouC-3
ouC-u C-u
apenasC-u
. Meu conselho é sempre verificar como o comando realmente trata um prefixo arg.'(4)
para o comando (sem se preocuparcall-interactively
). (Mas isso não vai funcionar, por exemplo, se o comando não tem um parâmetro que corresponde ao prefixo arg, mas em vez disso testacurrent-prefix-arg
no corpo de comando.)