ArgumentoUniversal

Difference between revision 3 and current revision

Summary: Rollback to 2008-09-05 00:16 UTC

No diff available.

Quando defines FunçõesInteractiva, podes querer que ela produza dois resultados diferentes, dependendo do que o utilizador quer. O método tradicional de lidar com isto é utilizando o prefixo do argumento universal: ‘C-u’. Podes, por exemplo, escrever uma função que mata um buffer se ele não tiver alterações que ainda não tenham sido guardadas e que mata um buffer mesmo que ele ainda não tenha sido guardado se o utilizador fornecer o prefixo ‘C-u’.

Aqui fica uma defun de teste que vai ajudar nas tuas experiências:

    (defun foo (arg)
      (interactive "P")
      (message "arg é %S" arg))

Ela define uma função com um argumento e mostra-o. E a declaração interactive torna-a interactiva para que a possas chamar com M-x e que a possas associar a uma tecla. O “P” diz ao Emacs que o argumento universal deverá ser utilizado para o ‘arg’.

M-x foo
Chama foo com o argumento a nill
C-u M-x foo
Chama foo com o argumento a ‘(4) – uma lista!
C-u C-u M-x foo
Chama foo com o argumento a ‘(16) – também uma lista!
C-u 3 M-x foo
Chama foo com o argumento a 3.

CategoriaCódigo