Wrt Icicles -
En su mayor parte, se trata de carámbanos minibuffer finalización. Hay algunos casos en los que ofrece algo para la finalización en el búfer (por ejemplo, código), pero se trata principalmente de la finalización del minibúfer.
Cuando la mayoría de las personas piensa acerca de la finalización del minibúfer, piensan en la finalización del nombre del archivo, la finalización del nombre del búfer y la finalización del nombre del comando. Pero hay un lote más a él.
Como programador de Emacs-Lisp, puede utilizar la finalización donde quiera que los usuarios tengan una opción de forma interactiva. ¡Eso es bastante general!
La finalización es realmente acerca de patrón de coincidencia para definir conjuntos, que luego puede manipular.
La mayoría de las personas piensan que el único objetivo de la finalización del minibúfer es elegir un solo nombre (archivo, búfer, comando, variable, ...). Pero el poder de la finalización es realmente filtrar y posiblemente clasificar el conjunto completo de nombres de archivos, nombres de búfer, etc. de diferentes maneras, y luego permitir que los usuarios hagan algo al conjunto (no necesariamente un solo objeto) .
Eso es lo que carámbanos está a punto: lo que le permite dinámicamente (incremental) definir conjuntos con el patrón de coincidencia, 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 (Anything), que los privilegios de objeto nombres más tipos de objetos y acciones como punto de partida, en carámbanos que suelen invocar un comando hacer algo a uno o más objetos de un determinado tipo (por ejemplo, almacenamientos intermedios) y luego delimita el conjunto de esos objetos, generalmente por coincidencia de nombres. A menudo es el caso en Icicles que puede actuar sobre esos objetos en formas múltiples pero relacionadas dentro del mismo comando.
En Helm (Cualquier cosa), en general, su entrada es emparejado por primera vez por el nombre del objeto contra todo el universo de objetos de todo tipo, y después se estrechan hacia abajo para recoger alguna operación (s) para llevar a cabo.
Finalmente, tenga en cuenta que cada uno de los diversos enfoques de finalización ofrece algo (por ejemplo, comandos) para los usuarios finales y algo (por ejemplo, características de finalización) para los programadores.
Si usted está haciendo código de finalización continuación, por lo general, sólo quieren completar el nombre en el punto. Lo principal interesante sobre la finalización del código es determinar cuáles son los candidatos apropiados. Para eso, el contexto textual (por ejemplo, el código) es típicamente de suma importancia. Para ofrecer opciones inteligentes, la función de finalización necesita analizar el contexto (código), incluido cualquier contexto abarcador (por ejemplo, código de proyecto).
La finalización del minibúfer por otro lado se puede utilizar para cualquier tipo de elección y acción, incluida la opción múltiple con múltiples acciones. Aquí, todas las partes son interesantes: qué candidatos ofrecer, qué puedes hacer con ellos, etc.
No sé si eso ayuda, pero esa es mi opinión de todos modos.
probablemente se refiera a http://cx4a.org/software/auto-complete/index.html, extraño que nadie lo haya mencionado. Es lo mejor en mi experiencia. – VitoshKa
Sí, me refiero a este paquete: siempre me olvido de qué contiene el signo '-' y cuál no ;-) –