Creador | Richard Stallman |
---|---|
Desarrollado por | Proyecto GNU |
Primera versión | 1984 |
Última versión | 27,2 (25 de marzo de 2021) |
Depositar | git.savannah.gnu.org/cgit/emacs.git |
Escrito en | C , Emacs Lisp y Lisp |
Interfaz | API de Windows , Cocoa y GTK |
Sistema de explotación | GNU / Linux , BSD ( d ) , Microsoft Windows y macOS |
Tipo | Editor de texto |
Licencia | GPL-3.0 + ( d ) |
Documentación | www.gnu.org/software/emacs/manual/html_node/emacs/index.html |
Sitio web | www.gnu.org/software/emacs |
GNU Emacs es una de las dos versiones más populares del editor de texto de Emacs (la otra versión es XEmacs ). Estas dos versiones son en su mayoría compatibles y tienen muchos puntos en común, descritos en el artículo de Emacs .
El manual dice que es la "encarnación GNU del editor de pantalla completa avanzado, autodocumentado, personalizable y extensible que es Emacs".
GNU Emacs, desarrollado por Richard Stallman desde 1984 como parte del proyecto GNU , se basa en el lenguaje Emacs Lisp .
GNU Emacs es parte del Proyecto GNU . En 1984 , Stallman inició el proyecto en sistemas Unix . Quiere una alternativa gratuita a Emacs .
En 1991 , a raíz de diferencias de opinión sobre el desarrollo, una bifurcación llamada Epoch produjo el software Lucid Emacs , que más tarde pasaría a llamarse XEmacs . Cuando se lanzó, este software se destacó con una interfaz gráfica y una amplia funcionalidad. El Proyecto GNU continúa desarrollando GNU Emacs. La mayoría de las características destacadas en XEmacs ahora se encuentran en GNU Emacs. Los dos proyectos se sincronizan regularmente entre sí.
Después de un largo período de desarrollo, la primera versión de Emacs para la rama 22, la versión 22.1, fue lanzada el 2 de junio de 2007. Richard Stallman proporcionó el desarrollo de esta versión . Esta versión trae una gran cantidad de características, así como un rediseño de la interfaz gráfica, ahora basada en la biblioteca GTK + .
La 22 de febrero de 2008, Richard Stallman anuncia su voluntad de retirarse del mantenimiento de Emacs. Deja espacio para Stefan Monnier y Chong Yidong.
Su desarrollo permanece activo. La mayoría de sus desarrolladores están afiliados a la Free Software Foundation (FSF).
Hasta 1999 , el desarrollo de GNU Emacs fue relativamente estrecho, hasta el punto de que sirvió de ejemplo para el estilo "Catedral" en el libro La Catedral y el Bazar . Desde entonces, el proyecto adoptó una lista de correo de desarrollo público y abrió el acceso anónimo a CVS .
Como ocurre con todos los proyectos GNU, existe una regla especial para aceptar una parte significativa del código: el titular de los derechos del código propuesto debe cederlos a la FSF. Sin embargo, hay una excepción notable: el código de MULE (para "Extensión MULtilingual" ), porque es propiedad del gobierno japonés y la asignación de derechos de autor no era posible.
Esta regla no se aplica a contribuciones menores o correcciones de errores. No existe una definición rigurosa de lo que es una contribución menor , pero se acostumbra considerar una contribución de menos de 15 líneas como menor.
Esta regla está destinada a facilitar el cumplimiento del copyleft , de modo que la FSF pueda defender el software en los tribunales si es necesario. Se sabe que tal obligación tiene efectos negativos sobre las contribuciones. Algunos afirman que incluso afecta el rendimiento; por ejemplo, la incapacidad de GNU Emacs para manejar archivos grandes de manera eficiente se debería a este requisito, lo que desalentaría a los desarrolladores más serios. Pero según Richard Stallman, es más importante que GNU Emacs sea libre que poderoso.
El estricto cumplimiento de esta regla ayuda a establecer la confianza legal que se puede otorgar a la licencia libre GNU Emacs (la GPL ) y al software libre en sí mismo, que es el trabajo intelectual de muchos posibles titulares de derechos y contribuyentes.
Historial de versiones de GNU Emacs.
Versión | Fecha de lanzamiento | Principales cambios |
---|---|---|
27,2 | 25 de marzo de 2021 | Versión de mantenimiento con corrección de errores sin nueva funcionalidad. |
27,1 | 10 de agosto de 2020 | Muchos cambios, que incluyen:
|
26,3 | 28 de agosto de 2019 | Versión de mantenimiento. |
26,2 | 12 de abril de 2019 | Algunas características nuevas:
|
26,1 | 28 de mayo de 2018 | Muchas características nuevas, que incluyen:
|
25,3 | 11 de septiembre de 2017 |
|
25,2 | 21 de abril de 2017 |
|
25,1 | 17 de septiembre de 2016 |
|
24,5 | 10 de abril de 2015 |
|
24,4 | 20 de octubre de 2014 |
|
24,3 | 11 de marzo de 2013 |
|
24,2 | 27 de agosto de 2012 |
|
24,1 | 10 de junio de 2012 |
|
23,3 | 10 de marzo de 2011 |
|
23,2 | 8 de mayo de 2010 |
|
23,1 | 29 de julio de 2009 |
|
22,2 | 26 de marzo de 2008 | |
22,1 | 2 de junio de 2007 | |
21,1 | 20 de octubre de 2001 |
|
20,1 | 17 de septiembre de 1997 |
|
19.28 | 15 de septiembre de 1997 |
|
18.24 | 2 de octubre de 1986 | |
17,36 | 20 de diciembre de 1985 |
|
16.56 | 15 de julio de 1985 | |
15.10 | 11 de abril de 1985 | |
13,0? | 20 de marzo de 1985 |
GNU Emacs es software libre distribuido bajo los términos de la Licencia Pública General GNU .
El código fuente y los archivos binarios están disponibles en el servidor FTP del proyecto GNU ( ver más abajo ) y en la plataforma colaborativa GNU Savannah . Los desarrolladores pueden recuperar las fuentes utilizando GNU Bazaar , el sistema de control de versiones descentralizado del proyecto GNU Emacs.
GNU Emacs también está integrado en todos los sistemas libres, incluidos GNU / Linux , FreeBSD . También funciona en muchos sistemas propietarios para convencer a sus usuarios de que migren a soluciones gratuitas.
Emacs se definió desde el principio como un editor extensible. Si bien los complementos más populares a menudo se encuentran integrados, la mayoría están disponibles en Internet . Todos los paquetes de terceros ahora son accesibles desde Emacs a través de un repositorio de código fuente exclusivo para extensiones Emacs Lisp . Llamado GNU ELPA (del inglés “ GNU Emacs Lisp Package Archive ”), el proyecto ha estado en producción desde 2010. Su nombre proviene de una plataforma similar iniciada por el llamado Tom Tromey y el administrador de paquetes “ package.el ” d 'un tal Phil Hagelberg.
En su modo de edición normal, GNU Emacs se comporta como otros editores de texto y permite al usuario insertar caracteres con las teclas correspondientes y mover el punto de edición con las teclas de flecha. Escapar de las pulsaciones de teclas o presionar la tecla Ctrl y / o la tecla meta, la tecla Alt o las teclas Super junto con una tecla normal produce secuencias de teclas modificadas que invocan funciones del entorno Lisp de Emacs. Los comandos como save-buffer y save-buffers-kill-emacs combinan múltiples pulsaciones de teclas modificadas.
Algunos comandos de GNU Emacs funcionan invocando un programa externo, como ispell para la revisión ortográfica o GNU Compiler Collection (gcc) para compilar programas, analizar los resultados del programa y mostrar el resultado en GNU Emacs. Emacs también soporta "procesos inferiores" - procesos de larga ejecución que interactúan con un búfer de Emacs. Esto se utiliza para implementar el modo de shell, ejecutar un shell de Unix como un proceso inferior, así como los modos de lectura-evaluación-impresión-bucle (REPL) para varios lenguajes de programación. El soporte de Emacs para procesos externos lo convierte en un entorno atractivo para la programación interactiva en líneas Interlisp o Smalltalk.
Los usuarios que prefieren las claves de tipo IBM Common User Access pueden usar cua-mode, un paquete que originalmente era un complemento de terceros, pero que se ha incluido en GNU Emacs desde la versión 22.
Emacs usa el "mini-buffer", normalmente la línea más baja, para presentar el estado y solicitar información, funciones que normalmente serían realizadas por cuadros de diálogo en la mayoría de las GUI. El mini-búfer contiene información como el texto al que apuntar en una búsqueda o el nombre de un archivo para leer o guardar. Opcionalmente, la finalización de la línea de comandos está disponible usando las teclas de tabulación y espacio.
Emacs almacena texto en estructuras de datos llamadas búferes. Los búferes pueden mostrarse o no en la pantalla, y toda la funcionalidad del búfer es accesible tanto para un programa Emacs Lisp como para la interfaz de usuario. El usuario puede crear nuevos búferes y rechazar los fallidos , y pueden existir muchos búferes al mismo tiempo. No hay límite superior para la cantidad de búferes que permite Emacs, aparte de los límites de memoria de hardware. Los usuarios avanzados pueden recopilar cientos de sellos abiertos de diferentes tipos relacionados con su trabajo actual. Emacs se puede configurar para guardar la lista de búferes abiertos al salir y volver a abrir esa lista al reiniciar.
Algunos sellos contienen texto cargado desde archivos de texto, que el usuario puede editar y guardar en un almacenamiento permanente. Se dice que estos búferes son archivos "visitantes". Los búferes también se utilizan para mostrar otros datos, como la salida de comandos de Emacs, listados de directorios dired, cadenas de documentación mostradas por la biblioteca de "ayuda" y mensajes de notificación que en otros editores se mostrarían en un cuadro de diálogo. Algunas de estas notificaciones se muestran brevemente en el minibúfer, y GNU Emacs proporciona un búfer de * Mensajes * que mantiene el historial de las notificaciones más recientes de este tipo. Cuando el minibúfer se utiliza para la salida de Emacs, se denomina "área de eco". Las notificaciones más largas se muestran en búferes limpios. La longitud máxima de los mensajes que se mostrarán en el minibúfer es, por supuesto, configurable.
Los búferes también pueden servir como áreas de entrada y salida para un proceso externo como un shell o un REPL. Los búferes creados por Emacs generalmente se nombran con asteriscos en cada extremo, para distinguirlos de los búferes de usuario. La lista de búferes abiertos se muestra en este tipo de búfer.
La mayoría de las pulsaciones de teclas de Emacs seguirán funcionando en cualquier búfer. Por ejemplo, la función estándar Ctrl-s isearch se puede utilizar para buscar nombres de archivo en búferes dired, y la lista de archivos se puede guardar en un archivo de texto como cualquier otro búfer. los búferes dired se pueden cambiar a un modo de escritura, en el que los nombres y atributos de los archivos se pueden editar literalmente; Cuando se guarda el búfer, los cambios se escriben en el sistema de archivos. Esto permite cambiar el nombre de varios archivos utilizando las funciones de búsqueda y reemplazo de Emacs. Cuando está equipado, Emacs muestra archivos de imagen en búferes. Emacs es binario seguro y limpio de 8 bits.
Emacs puede dividir el área de edición en secciones separadas llamadas "ventanas", una característica disponible desde 1975, anterior a la interfaz gráfica de usuario de uso común. En la terminología de Emacs, "Windows" es similar a lo que otros sistemas llaman "marcos" o "paneles", una parte rectangular de la pantalla del programa que se puede actualizar e interactuar de forma independiente. Cada ventana de Emacs tiene una barra de estado llamada "línea de modo" que se muestra por defecto en la parte inferior de la ventana. Las ventanas de Emacs están disponibles en modo gráfico y terminal de texto y permiten la visualización simultánea de múltiples búferes o partes de un búfer. Las aplicaciones comunes son mostrar un búfer directo con el contenido de los archivos en el directorio actual (hay modos especiales para que el búfer de archivos siga al archivo resaltado), mostrar el código fuente de un programa, un shell de búfer con los resultados de la compilación el programa, para ejecutar un depurador con un búfer de shell que ejecuta el programa, para trabajar en el código mientras visualiza una página de manual u otra documentación (posiblemente cargada en la World Wide Web, en ellos navegadores web) o simplemente para mostrar varios archivos para editar en al mismo tiempo, como un encabezado y su archivo de implementación para lenguajes basados en C. Además, hay un modo de seguimiento, un modo menor que encadena las ventanas para mostrar partes no superpuestas de un búfer. Con el modo de seguimiento, se puede mostrar un solo archivo en varias ventanas una al lado de la otra que se actualizan adecuadamente a medida que se desplaza. Las ventanas de Emacs están en mosaico y no pueden aparecer "encima" o "debajo" de sus compañeros. Emacs puede lanzar múltiples "marcos", que se muestran como ventanas individuales en un entorno gráfico. En un terminal de texto, se muestran varias imágenes apiladas para llenar todo el terminal y se pueden cambiar usando comandos estándar de Emacs.
GNU Emacs puede mostrar o editar diferentes tipos de texto y adaptar su comportamiento ingresando modos adicionales llamados "modos principales". Hay modos principales por una variedad de razones, incluida la edición de archivos de texto ordinarios, el código fuente para muchos lenguajes de programación y marcado, y la visualización de páginas web, listados de directorios y otra información del sistema. Cada modo principal involucra un programa Emacs Lisp que extiende el editor para que se comporte más fácilmente para el tipo de texto especificado. Los modos principales generalmente proporcionan algunas o todas las siguientes funciones comunes:
El uso de "modos menores" permite una personalización adicional. Un búfer de edición de GNU Emacs solo puede usar un modo mayor a la vez, pero varios modos menores pueden ejecutarse simultáneamente. Estos pueden funcionar directamente en documentos, como en el caso en el que el modo principal del lenguaje de programación C define un modo menor separado para cada uno de sus estilos de sangría populares, o puede cambiar el entorno de edición. Los ejemplos de este último incluyen un modo que agrega la capacidad de revertir los cambios de configuración de la ventana y otro que realiza la verificación de sintaxis sobre la marcha. También hay un modo menor que permite usar múltiples modos principales en un solo archivo, para mayor comodidad al editar un documento en el que están incrustados múltiples lenguajes de programación.
GNU Emacs admite la capacidad de usarlo como intérprete para el lenguaje Lisp Emacs sin mostrar la interfaz de usuario del editor de texto. En modo batch, la configuración del usuario no se carga y los caracteres de interrupción del terminal Cc y Cz tendrán el efecto habitual de salir del programa o interrumpir la ejecución en lugar de llamar a los atajos de teclado d 'Emacs. GNU Emacs tiene opciones de línea de comandos para especificar un archivo para cargar y ejecutar, o se puede pasar una función Emacs Lisp desde la línea de comandos. Emacs se inicia, ejecuta el archivo o la función pasada, imprime los resultados y luego sale. La línea shebang #! / Usr / bin / emacs --script permite la creación de scripts independientes en Emacs Lisp. El modo por lotes no es un modo Emacs per se, pero describe otro modo de ejecución para el programa Emacs.
Aparte de la documentación incorporada, GNU Emacs tiene un manual particularmente largo y detallado. Una copia electrónica del Manual GNU Emacs, escrito por Richard Stallman, se incluye con GNU Emacs y se puede ver con el navegador integrado. Se incluyen dos manuales adicionales, el Manual de referencia de Emacs Lisp de Bil Lewis, Richard Stallman y Dan Laliberte, así como una Introducción a la programación en Emacs Lisp de Robert Chassell. Los tres manuales también se publican en forma de libro por la Free Software Foundation. El manual de XEmacs es similar al manual de GNU Emacs, a partir del cual se generó junto con el software XEmacs de GNU Emacs.
GNU Emacs admite muchos alfabetos, scripts, sistemas de escritura y convenciones culturales, y proporciona corrección ortográfica para muchos lenguajes llamando a programas externos como ispell. La versión 24 agregó soporte para texto bidireccional y dirección de escritura de izquierda a derecha y de derecha a izquierda para idiomas como árabe, persa y hebreo.
Se admiten muchos sistemas de codificación de caracteres, incluido UTF-8. GNU Emacs usa UTF-8 para su codificación desde GNU 23, mientras que las versiones anteriores usaban su propia codificación internamente y realizaban conversiones al cargar y guardar. La codificación interna utilizada por XEmacs es similar a la de GNU Emacs pero difiere en los detalles.
La interfaz de usuario de GNU Emacs se originó en inglés y, con la excepción del tutorial para principiantes, no se ha traducido a otro idioma.
Un subsistema llamado Emacspeak permite a los usuarios ciegos y con discapacidad visual controlar el editor a través de comentarios de audio.
El comportamiento de GNU Emacs se puede cambiar y ampliar casi ilimitadamente incorporando programas Lisp Emacs que definen nuevos comandos, nuevos modos de almacenamiento en búfer, nuevos mapas de teclas, opciones de línea de comandos, [30], etc. Muchas extensiones que proporcionan funcionalidad orientada al usuario definen un modo principal (ya sea para un nuevo tipo de archivo o para crear una interfaz de usuario sin cambiar el texto); otros definen solo comandos o modos menores, o proporcionan funciones que mejoran otra extensión.
Muchas extensiones vienen con la instalación de GNU Emacs; otros se descargaron como archivos masivos (el grupo de noticias Usenet gnu.emacs.sources era una fuente tradicional) pero ha habido un desarrollo de paquetes administrados y sitios de descarga de paquetes desde la versión 24, con un administrador de paquetes integrado para descargarlos, instalarlos y actualizarlos .
Algunos ejemplos incluyen:
GNU Emacs se ha convertido en uno de los programas informáticos no triviales más comunes y se ejecuta en una amplia variedad de sistemas operativos, incluidos DOS, Windows y OpenVMS. Está disponible para la mayoría de los sistemas operativos similares a Unix, como Linux, varios BSD, Solaris, AIX, HP-UX y macOS, y a menudo se incluye en los paquetes de instalación del sistema. Existen puertos nativos GNU Emacs para Android y Nokia Maemo.
GNU Emacs se ejecuta tanto en terminales de texto como en entornos gráficos. En sistemas operativos similares a Unix, GNU Emacs puede usar el sistema X Window para producir su interfaz gráfica, ya sea directamente usando los widgets de Athena o usando un "juego de herramientas de widgets" como Motif o GTK + . GNU Emacs también puede usar sistemas gráficos nativos de macOS y Windows para proporcionar barras de menú, barras de herramientas, barras de desplazamiento y menús contextuales más consistentes con la apariencia de cada plataforma.