GNU Emacs

GNU Emacs Descripción de la imagen GNU Emacs 26.2 screenshot.png. Información
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 .

Desarrollo

Historia

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).

Derechos de código

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

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:
  • Soporte nativo para números enteros de tamaño arbitrario;
  • Analizador de archivos JSON nativo;
  • Adición de un paso de personalización del usuario muy temprano en el inicio ( early-init )  ;
  • Soporte nativo de manipulación de imágenes sin ImageMagick
26,3 28 de agosto de 2019 Versión de mantenimiento.
26,2 12 de abril de 2019 Algunas características nuevas:
  • Los modelos de Emacs ahora se pueden compilar fuera de la raíz de Emacs;
  • Emacs respeta la versión 11.0 del estándar Unicode;
  • En un búfer Dired, el comando 'Z' se usa para comprimir todos los archivos en la carpeta.
26,1 28 de mayo de 2018 Muchas características nuevas, que incluyen:
  • un nuevo método para iniciar sesión en Google Drive para TRAMP;
  • Soporte de color codificado de 24 bits para los terminales que lo soportan;
  • una reescritura completa del paquete flymake.
25,3 11 de septiembre de 2017
  • Se corrigió un problema de seguridad en el modo Texto enriquecido .
25,2 21 de abril de 2017
  • Principalmente correcciones de errores.
25,1 17 de septiembre de 2016
  • Carga dinámica de módulos. Seguridad mejorada (validez de los certificados TLS / SSL), inserción de caracteres Unicode mejorada.
24,5 10 de abril de 2015
  • Actualización menor para corregir algunos errores
24,4 20 de octubre de 2014
  • Integración de un navegador web (Mx eww ), soporte de menú en modo terminal, nombre único de búferes con uniquify, & c.
24,3 11 de marzo de 2013
  • Nuevo modo principal para Python, biblioteca de emulación Common Lisp actualizada
24,2 27 de agosto de 2012
  • Actualización menor corrigiendo errores
24,1 10 de junio de 2012
23,3 10 de marzo de 2011
  • Correcciones de errores y mejoras, incluidos los modos VC y Rmail
23,2 8 de mayo de 2010
  • Integración de un nuevo modo para JavaScript (modo js2)
23,1 29 de julio de 2009
  • Soporte mejorado para Unicode (uso de UTF-8 internamente)
  • La representación de fuentes anti- aliasing usando Fontconfig y XFT , puede diferir de un búfer a otro.
  • Modo de servidor mejorado para administrar terminales y ventanas gráficas en la misma sesión
  • Nuevos modos para ver documentos PostScript o PDF , o validar código XML sobre la marcha ...
  • Soporte de lenguaje Ruby.
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
  • Soporte multilingüe
19.28 15 de septiembre de 1997
  • Soporta múltiples ventanas usando X
  • Nueva interfaz para administrar el software de administración de versiones (VC)
18.24 2 de octubre de 1986
17,36 20 de diciembre de 1985
  • Archivos de respaldo numerados
16.56 15 de julio de 1985
15.10 11 de abril de 1985
13,0? 20 de marzo de 1985


Distribución

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.

GNU ELPA

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.

Usando GNU Emacs

Pedidos

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.

Minibúfer

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.

Gestión y visualización de archivos

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.

Modos principales

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:

Modos menores

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.

"Por lotes"

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.

Manuales

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.

Internacionalización

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.

Extensibilidad

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:

Plataformas

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.

Bibliografía

Notas y referencias

Referencias

  1. (en) Eli Zaretskii, Lanzamiento de Emacs 27.2  " ,25 de marzo de 2021(consultado el 25 de marzo de 2021 )
  2. (in) Introducción al manual GNU Emacs
  3. (en) Stefan Monnier y Chong Yidong son los nuevos mantenedores del proyecto desde principios de 2008.
  4. Extracto de la catedral y el bazar traducido por Sébastien Blondeel
  5. http://mail.gnu.org/archive/html/bug-gnu-emacs/2000-09/msg00065.html
  6. (en) http://www.gnu.org/software/emacs/CONTRIBUTE
  7. https://www.gnu.org/software/emacs/history.html
  8. http://www.jwz.org/doc/emacs-timeline.html
  9. https://www.gnu.org/software/emacs/news/NEWS.27.2
  10. https://www.gnu.org/savannah-checkouts/gnu/emacs/news/NEWS.27.1
  11. (en) Mickey Petersen, "  ¿Qué hay de nuevo en Emacs 27.1?  » , En masteringemacs.org
  12. https://www.gnu.org/savannah-checkouts/gnu/emacs/news/NEWS.26.3
  13. https://www.gnu.org/savannah-checkouts/gnu/emacs/news/NEWS.26.2
  14. https://www.gnu.org/software/emacs/news/NEWS.26.1
  15. https://www.gnu.org/software/emacs/news/NEWS.25.3
  16. https://lists.gnu.org/archive/html/emacs-devel/2017-04/msg00619.html
  17. https://www.gnu.org/software/emacs/index.html#Releases
  18. https://lists.gnu.org/archive/html/emacs-devel/2016-09/msg00451.html
  19. http://lists.gnu.org/archive/html/info-gnu-emacs/2015-04/msg00002.html
  20. http://lists.gnu.org/archive/html/info-gnu-emacs/2014-10/msg00002.html
  21. http://lists.gnu.org/archive/html/info-gnu-emacs/2013-03/msg00001.html
  22. http://lists.gnu.org/archive/html/info-gnu-emacs/2012-08/msg00000.html
  23. http://lists.gnu.org/archive/html/info-gnu-emacs/2012-06/msg00000.html
  24. El directorio de Git también está disponible, pero aún no está actualizado.
  25. (en) Sección 1.1 de la introducción de las Preguntas frecuentes de GNU Emacs para Windows , escrito por Richard Stallman en septiembre de 2010.
  26. (en) Phil Hagelberg, ruby-mode.el SE HA mudado, ruby-forum.com,16 de diciembre de 2008( leer en línea ).
  27. (en) "  GNU Emacs Lisp Package Archive  " en gnu.org ,29 de marzo de 2012(consultado el 29 de marzo de 2012 )
  28. (en) Chong Yidong, elpa.gnu.org disponible ahora , info-gnu,24 de agosto de 2010( leer en línea ).
  29. (en) Tom Tromey, "  ELPA - Emacs Lisp Package Archive  " en tromey.com ,29 de marzo de 2012(consultado el 29 de marzo de 2012 )
  30. (en) Sacha Chua, "  Emacs 24 y el administrador de paquetes  " en sachachua.com ,15 de enero de 2011(consultado el 29 de marzo de 2012 )

Notas

  1. autores primero deben publicar sus paquetes en el repositorio, pero este es un nuevo uso bastante extendido dentro de la comunidad de Emacs.

Apéndices

Artículos relacionados

enlaces externos