Pregunta

Parece que hay muchos mecanismos alternativos de terminación automática de Emacs. Sin una búsqueda exhaustiva, la siguiente vienen a la mente: ido, el auto-completar, carámbanos, en la terminación de amortiguamiento, minibuffer terminación y salida estándar de la finalización de la caja. Y luego está la finalización de código. Montones. Y en gran parte depende del idioma. Sería muy útil tener un gurú de Emacs, o tres, resumir los beneficios de los principales actores en el código y no código de auto-completado. Y siendo desbordamiento de pila, no hace falta decir que sería bueno identificar los modos de terminación de automóviles que funcionan mejor para Emacs de IDE-como mecanismos.

Actualizar : acabo de descubrir la página de finalización de Emacs Wiki cuales amplifica mi pregunta básica:? de todas estas opciones, lo que es bueno, lo que es menos bueno y si sólo se podía jugar con 2-3, que me recomiendan

¿Fue útil?

Solución

Yo generalmente uso dos paquetes de terminación (distintos de la incorporada en la implementación del tabulador en el minibúfer y tampones COMINT).

pabbrev.el - que proporciona una sugerencia en el cursor (presione TAB ) para aceptar. Las elecciones se hacen mirando a la frecuencia de palabras. Me gusta a causa de la indicación visual de lo que se completaría -. Pero sobre todo funciona para un solo finalización

hippie-expand - la cual es en general, con destino a M - / en lugar de dabbrev porque hace todo lo que hace dabbrev y más. Esto funciona bien cuando puede que tenga que pasar por algunas de las alternativas, o si desea completar un nombre de archivo o algo más.

Me gustan los dos, ya que no requiere ningún movimiento del ratón y el trabajo rápidamente.

Otros consejos

carámbanos -

En su mayor parte, se trata de carámbanos minibuffer finalización. Hay algunos casos en los que ofrece algo para (código de ejemplo) la terminación de tampón, pero es principalmente acerca de la finalización minibuffer.

Cuando la mayoría de la gente piensa acerca de la finalización minibuffer que piensan de finalización de nombre de archivo, nombre de buffer-finalización, y nombre-comando finalización. Pero hay una gran cantidad de más a él.

Como un programador Emacs-Lisp, se puede usar el completado dondequiera que usted quiera dar a los usuarios una opción de forma interactiva. Eso es bastante general,!

Finalización es realmente acerca de coincidencia de patrón para definir conjuntos , que luego se puede manipular.

La mayoría de la gente piensa que el único objetivo de finalización minibuffer es elegir un solo nombre (archivo, buffer, comando, variable, ...). Pero el poder de finalización es realmente para filtrar y posiblemente ordenar el conjunto completo de nombres de archivo, buffer nombres, etc., en diferentes formas, y luego dejar que los usuarios hagan algo en o con lo que resulta Set (no necesariamente un objeto individual).

Eso es lo que carámbanos es acerca de:. Lo que le permite dinámicamente (incremental) definir conjuntos utilizando coincidencia de patrones , y luego actuar sobre los miembros seleccionados o todos los miembros de esos grupos

Esto no es tanto el objetivo de Ido o los otros paquetes de terminación, con la posible excepción de Helm (Cualquier cosa) .

A diferencia Helm (Cualquier cosa) , que privilegia objeto nombres más tipos de objetos y acciones como punto de partida, en carámbanos normalmente invocar un comando para hacer algo a uno o más objetos de un tipo dado ( por ejemplo, tampones), y después a optimizar el conjunto de esos objetos, normalmente por su nombre de coincidencia. A menudo es el caso en el carámbanos que se puede actuar sobre esos objetos en múltiples formas, pero relacionados, dentro del mismo comando.

Helm (Cualquier cosa) , en general, su entrada es emparejado por primera vez por el nombre del objeto en contra de todo el universo de objetos de todo tipo, y después a optimizar para recoger alguna operación (s) para realizar.

Por último, tenga en cuenta que cada uno de los diversos enfoques de la finalización ofertas tanto algo (por ejemplo, comandos) para los usuarios finales y algo (por ejemplo, características de terminación) para los programadores.

Si usted está haciendo finalización de código a continuación, por lo general, sólo quieren completar el nombre en el punto . Lo principal interesante acerca de la finalización de código es determinar cuáles son los candidatos adecuados. Para ello, el texto (por ejemplo código) contexto es normalmente lo más importante. Para ofrecer opciones inteligentes, las necesidades función de finalización para analizar el contexto (código), incluyendo cualquier contexto que abarca (por ejemplo, código de proyecto).

finalización Minibuffer por otro lado se puede utilizar para cualquier tipo de elección y acción, incluyendo opción múltiple con múltiples acciones. Aquí, todas las partes son interesantes:. Lo que los candidatos a la oferta, lo que puede hacer con ellos, etc.

No sé si eso ayuda, pero esa es mi opinión de todos modos.

Yo uso pestaña estándar de terminación en el minibúfer para nombres de archivo, comandos M-x y otras cosas.

Yo también utilizan con frecuencia la combinación de teclas M-/ (dabbrev-expand) para la terminación dinámica de cualquier palabra en cualquiera de sus búferes de Emacs. Es fantástico, especialmente para los nombres largos de variable. Aquí está la documentación:

M-/ runs the command dabbrev-expand, which is an interactive
autoloaded Lisp function in `dabbrev.el'.

It is bound to M-/.

(dabbrev-expand ARG)

Expand previous word "dynamically".

Expands to the most recent, preceding word for which this is a prefix.
If no suitable preceding word is found, words following point are
considered.  If still no suitable word is found, then look in the
buffers accepted by the function pointed out by variable
`dabbrev-friend-buffer-function'.

A positive prefix argument, N, says to take the Nth backward *distinct*
possibility.  A negative argument says search forward.

If the cursor has not moved from the end of the previous expansion and
no argument is given, replace the previously-made expansion
with the next possible expansion not yet tried.

The variable `dabbrev-backward-only' may be used to limit the
direction of search to backward if set non-nil.

See also `dabbrev-abbrev-char-regexp' and C-M-/.

Puede buscar a la compañía o de modo paquete de autocompletar, que podrían utilizar diferentes fuentes de terminación, incluyendo CEDET, y también permitirá definir nuevas fuentes de finalización ... Para algunos lenguajes de programación, puede utilizar directamente CEDET ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top