2009-08-09 14 views
64

Obtengo un "argumento de tipo incorrecto: commandp, (lambda nil (forward-line 5))" aquí.Error de "tipo de argumento incorrecto: comandop" al vincular una lambda a una clave

(global-set-key [?\M-n] (lambda() (forward-line 5))) 

¿Cuál es el error? Estoy bastante seguro de que es simple & Me falta algo obvio.

+0

Falta un paréntesis de cierre. Probablemente no en tu código, solo en la pregunta. – hsribei

+0

Como nota al margen: cuando cites la función anónima no se compilará. Me imagino que no es gran cosa en tu caso, sin embargo. –

Respuesta

96

global-set-key espera un comando interactivo. (lambda() (interactive) (forward-line 5)) debería funcionar. Por supuesto, C-h f commandp es un buen punto de partida para errores como ese.

30

La forma correcta debe ser esto -

(global-set-key (kbd "M-n") (lambda() (interactive) (forward-line 5))) 

El problema era que se le olvidó poner (interactive) (como se ha mencionado Brendan).

Por cierto, notará que utilicé la función (kbd) para especificar el enlace de claves. Esa función es inmensamente útil ya que puedes poner las combinaciones de teclas casi literalmente.

Cuestiones relacionadas