2008-12-24 15 views
8

Pregunta: ¿Cómo puedo averiguar los comandos equivalentes de Mx para realizar operaciones basadas en GUI en Emacs, en los casos en que mi variante Emacs utiliza la funcionalidad de escritorio específica del sistema operativo? ?Comandos Emacs Mx para invocar menús "GUI-style"

Antecedentes: comprensión convencional afirma que todo en Emacs es un comando, y que los comandos pueden ser invocados a través de M-x, siempre y cuando se conoce el nombre del comando. Suponiendo que esta afirmación es correcta, ¿cuál es la forma de encontrar el nombre de los comandos utilizados para activar los menús "GUI-style" en una variante de Emacs basada en "escritorio"?

Por ejemplo, si tuviera que seleccionar con el mouse el menú Archivo para abrir un archivo, aparece el diálogo de abrir archivo de estilo de "GUI" específico del sistema operativo, esperando mi entrada.

¿Cómo puedo averiguar el comando equivalente M-x para hacer exactamente lo mismo?

I pensaron que describen llave me decía lo que necesitaba saber, pero es indicación de usar:

M-x menu-find-file-existing 

no invoca el cuadro de diálogo de abrir fichero de estilo "GUI". En su lugar, utiliza la variante interna no compatible con GUI-OS de Emacs.

Respuesta

7

Es necesario engañar a Emacs para que piense que el teclado no se estaba usando, lo cual no es tan intuitivo como engañarlo para que piense que el mouse era usado. :)

(defadvice find-file-read-args (around find-file-read-args-always-use-dialog-box act) 
    "Simulate invoking menu item as if by the mouse; see `use-dialog-box'." 
    (let ((last-nonmenu-event nil)) 
    ad-do-it)) 

probado en Emacs 22.2.1 en WinXP. Creo que el paradigma ha existido por un tiempo, sin embargo, por lo que debería funcionar en Emacs más antiguos. No hay pista si XEmacs funciona de manera similar o no.

3

Guau, me alegra que haya preguntado eso. He estado pensando por un tiempo en buscarlo yo mismo.

C-h k seguido de la opción de menú le dirá esto. Aquí, por ejemplo, es lo que se obtiene a partir de la elección de menú/editar/pegar:

 
<menu-bar> <edit> <paste> runs the command clipboard-yank 
    which is an interactive compiled Lisp function in `menu-bar.el'. 
It is bound to <paste>, <f18>, <menu-bar> <edit> <paste>. 
(clipboard-yank) 
Insert the clipboard contents, or the last stretch of killed text. 

Si desea que los detalles, siga el enlace para menu-bar-el a la fuente LISP:

(defun menu-find-file-existing() 
    "Edit the existing file FILENAME." 
    (interactive) 
    (let* ((mustmatch (not (and (fboundp 'x-uses-old-gtk-dialog) 
        (x-uses-old-gtk-dialog)))) 
    (filename (car (find-file-read-args "Find file: " mustmatch)))) 
    (if mustmatch 
    (find-file-existing filename) 
     (find-file filename)))) 
+0

Si no me equivoco, M-x describe-key es equivalente a Emacs default C-h k. Es genial saber que puede describir más que solo enlaces de teclas. Desafortunadamente, no parece describir las variaciones específicas de la GUI para activar diálogos específicos del sistema operativo. – dreftymac

Cuestiones relacionadas