2012-10-10 40 views
8

me gustaría utilizar C-u en una función (por ejemplo, expresión regular), donde llamándolo con C-u tiene un efecto diferente. ¿Cómo puedo hacer esto en Emacs? La documentación no muestra cómo hacer esto con Emacs Lisp.Emacs: argumento universal (C-u) en una función

(defun test() 
    (interactive) 
    (align-regexp)) ; I would like to add the C-u prefix to this. 

Respuesta

10
(defun my/test() 
    (interactive) 
    (let ((current-prefix-arg 4)) ;; emulate C-u 
    (call-interactively 'align-regexp) ;; invoke align-regexp interactively 
    ) 
) 

Espero que ayude.

+0

Excelente. Hace lo que tiene que hacer y con alguna explicación. – PascalVKooten

+2

Tenga en cuenta que el valor de argumento necesario para emular 'C-u' * varía *, según las expectativas de la función original (es decir, su argumento para' interactive'). Si acepta un argumento de prefijo "en bruto", querrá pasar la lista ''(4)' en lugar del valor numérico '4'. Ver 'C-h i g'' (elisp) Prefijo Argumentos de Comandos' 'RET' – phils

Cuestiones relacionadas