stringtranslate.com

Emacs

Emacs / ˈiːm æ ks / , originalmente llamado EMACS (acrónimo de "Editor Macros"), [1] [2] [3] es una familia de editores de texto que se caracterizan por su extensibilidad . [4] El manual de la variante más utilizada, [5] GNU Emacs , la describe como "el editor de visualización en tiempo real, extensible, personalizable y autodocumentado". [6] El desarrollo del primer Emacs comenzó a mediados de la década de 1970, [7] y el trabajo en GNU Emacs, descendiente directo del original, está en curso; su última versión es la 29.2, lanzada en enero de 2024. [8]

Emacs tiene más de 10.000 comandos integrados y su interfaz de usuario permite al usuario combinar estos comandos en macros para automatizar el trabajo. Las implementaciones de Emacs suelen incluir un dialecto del lenguaje de programación Lisp , lo que permite a los usuarios y desarrolladores escribir nuevos comandos y aplicaciones para el editor. Se han escrito extensiones para, entre otras cosas, administrar archivos , acceso remoto , [9] correo electrónico , esquemas , multimedia , integración de Git y canales RSS , [10] así como implementaciones de ELIZA , Pong , Conway's Life , Snake . , Dunnet y Tetris . [11]

El EMACS original fue escrito en 1976 por David A. Moon y Guy L. Steele Jr. como un conjunto de macros para el editor TECO . [12] [1] [2] [3] [13] Se inspiró en las ideas de los editores de macros TECO TECMAC y TMACS. [14]

La versión más popular y portada de Emacs es GNU Emacs, que fue creada por Richard Stallman para el Proyecto GNU . [15] XEmacs es una variante que se ramificó de GNU Emacs en 1991. GNU Emacs y XEmacs usan dialectos Lisp similares y son, en su mayor parte, compatibles entre sí. El desarrollo de XEmacs está inactivo.

GNU Emacs es, junto con vi , uno de los dos principales contendientes en las tradicionales guerras de editores de la cultura Unix . GNU Emacs se encuentra entre los proyectos gratuitos y de código abierto más antiguos que aún están en desarrollo. [dieciséis]

Historia

Emacs fue iniciado por Guy L. Steele Jr. como un proyecto para unificar los muchos conjuntos de comandos y combinaciones de teclas TECO divergentes en el MIT [2]
David A. Luna
La interfaz de Emacs fue influenciada por el diseño del teclado Space-cadet , que buscaba permitir a los usuarios escribir tantos tipos diferentes de entradas como fuera posible. [17]

El desarrollo de Emacs comenzó durante la década de 1970 en el MIT AI Lab , cuyas computadoras PDP-6 y PDP-10 usaban el sistema operativo Incompatible Timesharing System (ITS) que presentaba un editor de línea predeterminado conocido como Tape Editor and Corrector (TECO). A diferencia de la mayoría de los editores de texto modernos, TECO utilizaba modos separados en los que el usuario podía agregar texto, editar texto existente o mostrar el documento. No se pueden colocar caracteres directamente en un documento escribiéndolos en TECO, sino que se ingresa un carácter ('i') en el lenguaje de comando de TECO diciéndole que cambie al modo de ingreso, ingrese los caracteres requeridos, tiempo durante el cual el texto editado no se mostró en la pantalla y finalmente ingrese un carácter (<esc>) para volver el editor al modo de comando. (Se utilizó una técnica similar para permitir la sobreescritura). Este comportamiento es similar al del programa ed .

En la década de 1970, TECO ya era un programa antiguo, lanzado inicialmente en 1962. Richard Stallman visitó el Laboratorio de IA de Stanford en 1976 [18] y vio el editor E del laboratorio , escrito por Fred Wright. [19] Quedó impresionado por el comportamiento intuitivo WYSIWYG (Lo que ves es lo que obtienes) del editor, que desde entonces se ha convertido en el comportamiento predeterminado de la mayoría de los editores de texto modernos. Regresó al MIT, donde Carl Mikkelsen, un hacker del Laboratorio de IA, había agregado a TECO un modo combinado de visualización y edición llamado Control-R que permitía actualizar la visualización de la pantalla cada vez que el usuario pulsaba una tecla. Stallman volvió a implementar este modo para que se ejecutara de manera eficiente y luego agregó una función macro al modo de edición de pantalla de TECO que permitía al usuario redefinir cualquier pulsación de tecla para ejecutar un programa TECO. [3]

E tenía otra característica de la que TECO carecía: la edición de acceso aleatorio. TECO era un editor secuencial de páginas diseñado para editar cintas de papel en el PDP-1 en una época en la que la memoria de la computadora era generalmente pequeña debido al costo, y era una característica de TECO que permitía editar secuencialmente solo una página a la vez. en el orden de las páginas del archivo. En lugar de adoptar el enfoque de E de estructurar el archivo para acceso aleatorio a páginas en el disco, Stallman modificó TECO para manejar búferes grandes de manera más eficiente y cambió su método de administración de archivos para leer, editar y escribir el archivo completo como un único búfer. Casi todos los editores modernos utilizan este enfoque.

La nueva versión de TECO rápidamente se hizo popular en el AI Lab y pronto acumuló una gran colección de macros personalizadas cuyos nombres a menudo terminaban en MAC o MACS , que significaba macro . Dos años más tarde, Guy Steele asumió el proyecto de unificar las diversas macros en un solo conjunto. [20] La implementación finalizada de Steele y Stallman incluyó instalaciones para ampliar y documentar el nuevo conjunto de macros. [3] El sistema resultante se llamó EMACS, que significa Editing MACroS o, alternativamente, E con MACroS . Stallman eligió el nombre Emacs "porque <E> no se utilizaba como abreviatura en ITS en ese momento". [21] Un koan hacker apócrifo alega que el programa lleva el nombre de Emack & Bolio's , una popular heladería de Boston . [22] El primer sistema EMACS operativo existió a finales de 1976. [23]

Stallman vio un problema en demasiada personalización y bifurcación de facto y estableció ciertas condiciones de uso. [ cita necesaria ] Más tarde escribió: [23]

EMACS se distribuyó sobre la base del intercambio comunitario, lo que significa que todas las mejoras me deben ser devueltas para que las incorpore y las distribuya.

El Emacs original, como TECO, se ejecutaba sólo en el PDP-10 con ITS. Su comportamiento era lo suficientemente diferente al de TECO como para considerarlo un editor de texto por derecho propio y rápidamente se convirtió en el programa de edición estándar en ITS. Mike McMahon portó Emacs de ITS a los sistemas operativos TENEX y TOPS-20 . Otros contribuyentes a las primeras versiones de Emacs incluyen a Kent Pitman , Earl Killian y Eugene Ciccarelli. En 1979, Emacs era el editor principal utilizado en el laboratorio de IA del MIT y su Laboratorio de Ciencias de la Computación. [24]

Implementaciones

Implementaciones tempranas

Zmacs , un Emacs para máquinas Lisp , una evolución de EINE y ZWEI
James Gosling escribió un editor similar a Emacs para ejecutarse en Unix ( Gosling Emacs ) en 1981.

En los años siguientes, los programadores escribieron una variedad de editores similares a Emacs para otros sistemas informáticos. Estos incluían EINE ( EINE Is Not EMACS ) y ZWEI [25] ( ZWEI Was EINE Inicialmente ), que fueron escritos para la máquina Lisp por Mike McMahon y Daniel Weinreb , y Sine ( Sine Is Not Eine ), [26] que fue escrito por Owen Theodore Anderson. EINE de Weinreb fue el primer Emacs escrito en Lisp. En 1978, Bernard Greenberg escribió Multics Emacs casi en su totalidad en Multics Lisp en el Laboratorio de Sistemas de Información de Cambridge de Honeywell . Multics Emacs fue posteriormente mantenido por Richard Soley , quien desarrolló el editor similar a NILE Emacs para el Proyecto NIL, y por Barry Margolin. Muchas versiones de Emacs, incluido GNU Emacs, adoptarían posteriormente Lisp como lenguaje de extensión.

James Gosling , quien más tarde inventaría NeWS y el lenguaje de programación Java , escribió Gosling Emacs en 1981. Gosling Emacs, el primer editor similar a Emacs que se ejecutó en Unix [ cita requerida ] , fue escrito en C y usó Mocklisp , un lenguaje con Lisp- como la sintaxis, como un lenguaje de extensión.

Los primeros anuncios de CCA EMACS de Computer Corporation of America (Steve Zimmerman) [27] aparecieron en 1984. [28] Las comparaciones de 1985 con GNU Emacs, cuando salió, mencionaban gratis frente a 2.400 dólares. [29] [ cita irrelevante ]

Emacs GNU

GNU Emacs ejecutándose en una consola de texto
GNU Emacs ejecutándose en Microsoft Windows

Richard Stallman comenzó a trabajar en GNU Emacs en 1984 para producir una alternativa de software libre al propietario Gosling Emacs. GNU Emacs se basó inicialmente en Gosling Emacs, pero el reemplazo por parte de Stallman de su intérprete Mocklisp con un verdadero intérprete Lisp requirió que se reescribiera casi todo su código. Este se convirtió en el primer programa lanzado por el naciente Proyecto GNU. GNU Emacs está escrito en C y proporciona Emacs Lisp , también implementado en C, como lenguaje de extensión. La versión 13, el primer lanzamiento público, se realizó el 20 de marzo de 1985. La primera versión ampliamente distribuida de GNU Emacs fue la versión 15.34, lanzada más tarde en 1985. Las primeras versiones de GNU Emacs estaban numeradas como 1.xx , y el dígito inicial indicaba la versión del núcleo C. El 1 se eliminó después de la versión 1.12, ya que se pensó que el número principal nunca cambiaría y, por lo tanto, la numeración saltó del 1 al 13 . [30] En septiembre de 2014, se anunció en la lista de correo de GNU emacs-devel que GNU Emacs adoptaría una estrategia de lanzamiento rápido y que los números de versiones aumentarían más rápidamente en el futuro. [31]

GNU Emacs ofrecía más funciones que Gosling Emacs, en particular un Lisp con todas las funciones como lenguaje de extensión, y pronto reemplazó a Gosling Emacs como el editor de facto de Unix Emacs. Markus Hess aprovechó una falla de seguridad en el subsistema de correo electrónico de GNU Emacs en su ola de craqueo de 1986 en la que obtuvo acceso de superusuario a computadoras Unix. [32]

La mayor parte de la funcionalidad de GNU Emacs se implementa a través de un lenguaje de programación llamado Emacs Lisp . Debido a que alrededor del 70% de GNU Emacs está escrito en el lenguaje de extensión Emacs Lisp, [33] solo es necesario portar el núcleo C que implementa el intérprete Emacs Lisp. Esto hace que portar Emacs a una nueva plataforma sea considerablemente menos difícil que portar un proyecto equivalente que consista únicamente en código nativo.

El desarrollo de GNU Emacs estuvo relativamente cerrado hasta 1999 y se utilizó como ejemplo del estilo de desarrollo Cathedral en The Cathedral and the Bazaar . Desde entonces, el proyecto ha adoptado una lista de correo de desarrollo pública y acceso anónimo a CVS . El desarrollo se llevó a cabo en una única troncal CVS hasta 2008 y luego se cambió a Bazaar DVCS . El 11 de noviembre de 2014, el desarrollo se trasladó a Git . [34]

Archivo C en Emacs 27 con el tema modus-operandi

Richard Stallman ha seguido siendo el principal mantenedor de GNU Emacs, pero en ocasiones se ha alejado de ese cargo. Stefan Monnier y Chong Yidong fueron mantenedores de 2008 a 2015. [35] [36] John Wiegley fue nombrado mantenedor en 2015 después de una reunión con Stallman en el MIT. [37] A principios de 2014, GNU Emacs ha tenido 579 confirmadores individuales a lo largo de su historia. [38]

XEmacs

XEmacs 21.5 en Linux

Lucid Emacs, basado en una de las primeras versiones alfa de GNU Emacs 19, fue desarrollado a principios de 1991 por Jamie Zawinski y otros en Lucid Inc. Una de las primeras bifurcaciones más conocidas en el desarrollo de software libre se produjo cuando las bases de código de las dos versiones de Emacs divergieron. y los equipos de desarrollo separados cesaron sus esfuerzos por fusionarlos nuevamente en un solo programa. [39] Desde entonces, Lucid Emacs pasó a llamarse XEmacs . Su desarrollo está actualmente inactivo, con la versión estable más reciente 21.4.22 lanzada en enero de 2009 (mientras que se lanzó una versión beta en 2013), mientras que GNU Emacs ha implementado muchas características que antes eran exclusivas de XEmacs. [40] [ se necesita una mejor fuente ]

Otras bifurcaciones de GNU Emacs

Otras bifurcaciones notables incluyen:

Varios editores de Emacs

uEmacs/Pk 4.0.15 en Linux
El editor mg tiny tipo Emacs en OpenBSD 5.3. Editando el código fuente de Ruby
JOVE ejecutándose en una caja Debian

En el pasado proliferaron los proyectos destinados a producir versiones pequeñas de Emacs. GNU Emacs estaba inicialmente dirigido a computadoras con un espacio de direcciones plano de 32 bits y al menos 1  MiB de RAM. [42] Estas computadoras eran estaciones de trabajo y minicomputadoras de alta gama en la década de 1980, y esto dejó la necesidad de reimplementaciones más pequeñas que se ejecutaran en hardware de computadora personal común . Las computadoras actuales tienen energía y capacidad más que suficiente para eliminar estas restricciones, pero más recientemente se han diseñado pequeños clones para caber en discos de instalación de software o para usarse en hardware menos capaz. [43]

Otros proyectos apuntan a implementar Emacs en un dialecto diferente de Lisp o en un lenguaje de programación completamente diferente. Aunque no todos se mantienen activamente, estos clones incluyen:

Editores con emulación de Emacs

Características

Emacs es principalmente un editor de texto y está diseñado para manipular fragmentos de texto, aunque es capaz de formatear e imprimir documentos como un procesador de textos interactuando con programas externos como LaTeX , Ghostscript o un navegador web. Emacs proporciona comandos para manipular y mostrar diferencialmente unidades semánticas de texto como palabras , oraciones , párrafos y construcciones de código fuente como funciones . También cuenta con macros de teclado para realizar lotes de comandos de edición definidos por el usuario.

GNU Emacs es un editor de visualización en tiempo real , ya que sus ediciones se muestran en pantalla a medida que ocurren. Este es un comportamiento estándar para los editores de texto modernos, pero EMACS fue uno de los primeros en implementarlo. La alternativa es tener que emitir un comando distinto para mostrar el texto (por ejemplo, antes o después de modificarlo). Esto era común en editores de línea y contexto anteriores (o simplemente más simples), como QED (BTS, CTSS, Multics), ed (Unix), ED (CP/M) y Edlin (DOS).

Arquitectura general

Casi toda la funcionalidad de Emacs, incluidas las operaciones básicas de edición, como la inserción de caracteres en un archivo, se logra mediante funciones escritas en un dialecto del lenguaje de programación Lisp . El dialecto utilizado en GNU Emacs se conoce como Emacs Lisp (Elisp) y fue desarrollado expresamente para portar Emacs a GNU y Unix . La capa Emacs Lisp se asienta sobre un núcleo estable de servicios básicos y abstracción de plataforma escritos en el lenguaje de programación C , lo que permite portar GNU Emacs a una amplia variedad de sistemas operativos y arquitecturas sin modificar la semántica de implementación del sistema Lisp, donde se encuentra la mayoría de los sistemas operativos. vive el editor. En este entorno Lisp, las variables y funciones se pueden modificar sin necesidad de reconstruir o reiniciar Emacs, e incluso las versiones recientemente redefinidas de las funciones principales del editor se compilan y cargan de forma asincrónica en el entorno en vivo para reemplazar las definiciones existentes. El GNU Emacs moderno presenta compilación de código de bytes y código nativo para Emacs Lisp.

Toda la configuración se almacena en variables, clases y estructuras de datos, y se modifica simplemente actualizándolas en vivo. El uso de un dialecto Lisp en este caso es una ventaja clave, ya que la sintaxis Lisp consta de las llamadas expresiones simbólicas (o sexprs), que pueden actuar como expresiones de código evaluables y como un formato de serialización de datos similar, pero más simple y más. generales que los conocidos como XML , JSON y YAML . De esta manera, en la práctica hay poca diferencia entre personalizar funciones existentes y escribir otras nuevas, las cuales se logran de la misma manera básica. Esto es operativamente diferente de la mayoría de los editores extensibles modernos, como VS Code , en los que se utilizan lenguajes separados para implementar la interfaz y las características del editor y para codificar su configuración y opciones definidas por el usuario. El objetivo del diseño abierto de Emacs es exponer de forma transparente las partes internas de Emacs al usuario de Emacs durante el uso normal de la misma manera que estarían expuestas al desarrollador de Emacs que trabaja en el árbol git , y colapsar la distinción tanto como sea posible. entre el uso de Emacs y la programación de Emacs, sin dejar de proporcionar un entorno de edición estable, práctico y responsivo para usuarios novatos.

Datos interactivos

La estructura principal de datos de edición de texto es el búfer , una región de memoria que contiene datos (generalmente texto) con atributos asociados. Los más importantes de ellos son:

Los modos , en particular, son un concepto importante en Emacs, ya que proporcionan un mecanismo para desagregar la funcionalidad de Emacs en conjuntos de comportamientos y combinaciones de teclas relevantes para datos de buffers específicos. Los modos principales proporcionan un paquete general de funciones y comandos relevantes para los datos de un búfer y la forma en que los usuarios pueden interactuar con ellos (por ejemplo, editar el código fuente en un idioma específico, editar hexadecimal , ver el sistema de archivos, interactuar con git , etc.), y Los modos menores definen colecciones subsidiarias de funcionalidades aplicables en muchos modos principales (como auto-save-mode). Los modos menores se pueden activar o desactivar tanto localmente en cada búfer como globalmente en todos los búfer, mientras que los modos principales solo se pueden activar por búfer. Cualquier otro dato relevante para un búfer pero que no esté incluido en un modo se puede manejar simplemente enfocando ese búfer y modificando en vivo los datos relevantes directamente.

Cualquier interacción con el editor (como presionar teclas o hacer clic en un botón del mouse) se realiza evaluando el código Emacs Lisp, generalmente un comando , que es una función diseñada explícitamente para uso interactivo. Las claves se pueden redefinir arbitrariamente y también se puede acceder a los comandos por nombre; algunos comandos evalúan código Emacs Lisp arbitrario proporcionado por el usuario de varias maneras (por ejemplo, una familia de eval-funciones, operando en buffer, regiono individualmente expression). Incluso las entradas de usuario más simples (como caracteres imprimibles ) se efectúan como funciones de Emacs Lisp, como self-insert-command, vinculadas de forma predeterminada a la mayoría de las teclas del teclado en un búfer de edición de texto típico, que se parametriza con el carácter definido por la configuración regional asociado con la tecla utilizada. para llamarlo.

Por ejemplo, presionar la ftecla en un búfer que acepta entrada de texto evalúa el código , que inserta una copia del carácter constante en el punto . En este caso, está determinado por lo que Emacs llama el argumento universal : todo código de comando de Emacs acepta un valor numérico que, en su uso más simple, indica la repetición de una acción, pero en casos más complejos (donde la repetición no tiene sentido ) puede producir otros comportamientos. Estos argumentos pueden proporcionarse mediante prefijos de comando, como + o, de manera más compacta , + , que se expande a . Cuando no se proporciona ningún prefijo, el argumento universal es : cada comando se ejecuta implícitamente una vez, pero puede llamarse multiplicar, o de otra manera, cuando se proporciona dicho prefijo. Dichos argumentos también pueden ser no positivos cuando tiene sentido que lo sean: corresponde a la función que acepta el argumento determinar, de acuerdo con su propia semántica, qué significa para ella un número determinado. Un uso común es que las funciones realicen acciones a la inversa simplemente verificando el signo del argumento universal, como un comando de clasificación que ordena en anverso de forma predeterminada y a la inversa cuando se llama con un argumento negativo, usando el valor absoluto de su argumento como la clave de clasificación (por ejemplo, ordenar a la inversa por índice de columna (o delimitador) 7), o deshacer/rehacer, que son simplemente negativos entre sí (atravesando hacia adelante y hacia atrás a través de un historial recursivo de diferencias en una cierta cantidad de pasos a la vez) .(self-insert-command 1 ?f)?f 1Controlu 7 fMeta7 f(self-insert-command 7 ?f)1-7

Lenguaje de comando

Debido a su vocabulario relativamente amplio de comandos, Emacs presenta un lenguaje de comandos establecido desde hace mucho tiempo , para expresar de manera concisa las pulsaciones de teclas necesarias para realizar una acción. Este lenguaje de comandos reconoce las siguientes teclas mayúsculas y modificadoras: , , , , y . Es posible que no todos estén presentes en un teclado estilo IBM, aunque generalmente se pueden configurar como se desee. Estos se representan en el lenguaje de comandos como los prefijos respectivos: , , , , y . Las claves cuyos nombres sólo se pueden imprimir con más de un carácter están entre corchetes angulares. Por lo tanto, un método abreviado de teclado como + + + (verificar fórmulas dependientes y calcular todas las celdas en todos los libros abiertos en Excel ) se representaría en el lenguaje de comandos de Emacs como , mientras que un comando de Emacs como + + + (búsqueda incremental de archivos mediante coincidencia de nombres regexp ), se expresaría como . El lenguaje de comandos también se utiliza para expresar las acciones necesarias para invocar comandos sin atajos asignados: por ejemplo, el comando (que inicializa un búfer en la memoria para el almacenamiento y manipulación temporal de texto), cuando lo invoca el usuario, se informará como , con Emacs escaneando el espacio de nombres de los comandos disponibles contextualmente para devolver la secuencia más corta de pulsaciones de teclas que lo lexican de forma única.CtrlAlt⇧ ShiftMetaSuperHyperC-A-S-M-s-H-CtrlAlt⇧ ShiftF9C-A-S-<f9>Metas f CtrlMetasM-s f C-M-sscratch-bufferM-x scra <return>

visualización dinámica

Debido a que Emacs es anterior a la terminología estándar moderna para interfaces gráficas de usuario , utiliza nombres algo divergentes para elementos de interfaz familiares. Los buffers, los datos con los que interactúan los usuarios de Emacs, se muestran al usuario dentro de las ventanas , que son partes en mosaico de la pantalla del terminal o la ventana GUI, a las que Emacs se refiere como marcos ; en terminología moderna, un marco de Emacs sería una ventana y una ventana de Emacs sería una división. Dependiendo de la configuración, las ventanas pueden incluir sus propias barras de desplazamiento, números de línea, a veces una "línea de encabezado" generalmente para facilitar la navegación y una línea de modo en la parte inferior (que generalmente muestra el nombre del búfer, los modos activos y la posición del punto del búfer, entre otros). ). La parte inferior de cada cuadro se utiliza para mensajes de salida (entonces llamados 'área de eco') y entrada de texto para comandos (entonces llamados 'minibúfer').

En general, los elementos de visualización de Emacs (ventanas, marcos, etc.) no pertenecen a ningún dato o proceso específico. Los búferes no están asociados con ventanas y se pueden abrir varias ventanas en el mismo búfer, por ejemplo, para rastrear diferentes partes de un texto largo, una al lado de la otra, sin desplazarse hacia adelante y hacia atrás, y varios búferes pueden compartir el mismo texto, por ejemplo para aprovechar diferentes modos principales en un archivo de lenguaje mixto. De manera similar, las instancias de Emacs no están asociadas con marcos particulares, y se pueden abrir múltiples marcos mostrando un único proceso de Emacs en ejecución, por ejemplo, un marco por pantalla en una configuración de múltiples monitores, o un marco de terminal conectado vía ssh desde un sistema remoto y una interfaz gráfica. marco que muestra el mismo proceso de Emacs a través del monitor del sistema local.

Así como los buffers no requieren Windows, la ejecución de procesos de Emacs no requiere ningún marco, y un patrón de uso común es implementar Emacs como un servidor de edición : ejecutarlo como un demonio sin cabeza y conectarse a él a través de un cliente que genera marcos. Este servidor puede estar disponible en cualquier situación en la que se requiera un editor, simplemente declarando que el programa cliente es del usuario o variable. Dicho servidor continúa ejecutándose en segundo plano, administrando cualquier proceso secundario, acumulando stdin de tuberías abiertas, puertos o fifos, realizando acciones periódicas o preprogramadas, recordando el historial de deshacer del búfer, fragmentos de texto guardados, historial de comandos y otros estados del usuario. entre sesiones de edición. En este modo de operación, Emacs superpone la funcionalidad de programas como screen y tmux .EDITORVISUAL

Debido a su separación entre los aspectos de visualización y la funcionalidad de edición, Emacs puede visualizar de forma más o menos similar en cualquier dispositivo más complejo que un terminal tonto , incluso proporcionando elementos gráficos WIMP típicos en terminales de texto con suficientes funciones, aunque los marcos gráficos son el modo de visualización preferido, proporcionando una superconjunto estricto de las características de los marcos de terminales de texto.

Personalización y extensibilidad

Autodocumentación

El primer Emacs contenía una biblioteca de ayuda que incluía documentación para cada comando, variable y función interna. Debido a esto, los defensores de Emacs describieron el software como autodocumentado en el sentido de que presenta al usuario información sobre sus características normales y su estado actual. Cada función incluye una cadena de documentación que se muestra al usuario cuando la solicita, una práctica que posteriormente se extendió a lenguajes de programación como Lisp , Java , Perl y Python . Este sistema de ayuda puede llevar a los usuarios al código real de cada función, ya sea de una biblioteca integrada o de una biblioteca agregada de terceros.

Emacs también tiene un tutorial incorporado . Emacs muestra instrucciones para realizar comandos de edición simples e invocar el tutorial cuando se inicia sin ningún archivo para editar. El tutorial es de Stuart Cracraft y Richard Stallman.

Cultura

Iglesia de Emacs

La Iglesia de Emacs , formada por Richard Stallman , es una religión parodia creada para los usuarios de Emacs. [50] Si bien se refiere a vi como el editor de la bestia (vi-vi-vi es 6-6-6 en números romanos), no se opone al uso de vi; más bien lo llama anatema del software propietario . ("Usar una versión gratuita de vi no es un pecado sino una penitencia ." [51] ) La Iglesia de Emacs tiene su propio grupo de noticias , alt.religion.emacs , [52] que tiene publicaciones que pretenden apoyar esta religión parodia. Los partidarios de vi han creado un Culto de vi opuesto .

Stallman se ha referido en broma a sí mismo como St I  GNU  cius , un santo de la Iglesia de Emacs. [53] Esto es en referencia a Ignacio de Antioquía , un padre de la Iglesia primitiva venerado en el cristianismo.

meñique de emacs

Hay folklore que atribuye una lesión por esfuerzo repetitivo coloquialmente llamada meñique de Emacs a la fuerte dependencia de Emacs de las teclas modificadoras, [54] aunque no se han realizado estudios que demuestren que Emacs causa más problemas de este tipo que otros programas informáticos con mucho teclado.

Los usuarios han abordado este problema mediante varios enfoques. Algunos usuarios recomiendan simplemente usar las dos teclas Control en los teclados típicos de PC, como las teclas Shift, mientras escriben al tacto para evitar forzar demasiado el meñique izquierdo; un uso adecuado del teclado reducirá el RSI. [55] Los métodos del lado del software incluyen: [56]

Las soluciones de hardware incluyen teclados especiales como el teclado contorneado de Kinesis , que coloca las teclas modificadoras donde pueden ser operadas fácilmente con el pulgar , o el teclado natural de Microsoft , cuyas grandes teclas modificadoras están colocadas simétricamente a ambos lados del teclado y pueden presionarse con la palma de la mano. [54] También se pueden utilizar pedales.

El meñique de Emacs es un desarrollo relativamente reciente. El teclado Space-cadet en el que se desarrolló Emacs tenía teclas de control de gran tamaño adyacentes a la barra espaciadora y fáciles de alcanzar con el pulgar. [sesenta y cinco]

Terminología

La palabra emacs a veces se pluraliza como emacsen , por analogía fonética con boxen y VAXen , en referencia a diferentes variedades de Emacs. [66]

Ver también

Referencias

  1. ^ ab Greenberg, Bernard S. (1979). Multics Emacs: historia, diseño e implementación.
  2. ^ a b "Preguntas frecuentes sobre GNU Emacs".
  3. ^ abcd Adrienne G. Thompson. "MACSimizando TECO". Archivado desde el original el 24 de octubre de 2013 . Consultado el 26 de febrero de 2012 .
  4. ^ "Un tutorial de introducción a GNU Emacs". Para que un editor se llame "emacs" el principal requisito es que sea totalmente extensible con un lenguaje de programación real, no sólo un lenguaje de macros.
  5. ^ "Referencia de bolsillo de GNU Emacs". GNU Emacs es el más popular y extendido de la familia de editores Emacs.
  6. ^ "Manual de GNU Emacs". FSF . Consultado el 24 de noviembre de 2012 .
  7. ^ Zawinski, Jamie (29 de octubre de 2007). "Cronología de Emacs". www.jwz.org . Consultado el 31 de julio de 2023 .
  8. ^ "Lanzamiento de Emacs 29.2". listas.gnu.org . Consultado el 18 de enero de 2024 .
  9. ^ "Manual del usuario de Tramp". Fundación de Software Libre . Consultado el 4 de abril de 2009 .
  10. ^ "Presentación de Elfeed, un lector de feeds web de Emacs".
  11. ^ "Diversiones". Finalmente, si te sientes frustrado, intenta describir tus problemas a la famosa psicoterapeuta Eliza. Solo haz Mx doctor.
  12. ^ Zawinski, Jamie (21 de junio de 2005) [1999]. "Cronología de Emacs" . Consultado el 11 de agosto de 2015 .
  13. ^ A Richard Stallman a menudo se le acredita como otro cocreador, pero como escribió Daniel Weinreb : "El Emacs original (basado en TECO) fue creado y diseñado por Guy L. Steele Jr. y David Moon. Después de que lo tuvieron funcionando, y se había establecido como el editor de texto estándar en el laboratorio de IA, Stallman se hizo cargo de su mantenimiento." El propio Moon respondió: "Todo es cierto, hasta donde puedo recordar. Pero para ser justos, debo decir que Stallman mejoró enormemente Emacs después de que lo "liberó" de Guy y de mí". Véase Weinreb, Dan (11 de noviembre de 2007), "Refutación a la historia de Stallman sobre la formación de simbólicos y LMI", blog de Dan Weinreb: software e innovación , archivado desde el original el 1 de enero de 2009..
  14. ^ "Una historia de Emacs". Manual de componentes internos de XEmacs . 2006-12-11 . Consultado el 22 de agosto de 2007 .
  15. ^ Allombert, Bill. "Concurso de popularidad de Debian". Informe de los editores . Debian . Consultado el 22 de noviembre de 2011 .
  16. ^ "Los 10 programas de código abierto más antiguos e importantes". ZDNet .
  17. ^ Raymond, Eric S.; Cameron, Debra; Rosenblatt, Bill (1996). Aprendizaje de GNU Emacs, segunda edición. Sebastopol, CA: O'Reilly. págs. 408–409. ISBN 1-56592-152-6.
  18. ^ Williams, Sam (2002). Libre como en libertad: la cruzada de Richard Stallman por el software libre. Sebastopol, CA: O'Reilly Media. pag. 82.ISBN _ 0-596-00287-4.
  19. ^ Arthur Samuel (marzo de 1980). "E esencial" (PDF) . Consultado el 19 de abril de 2020 .
  20. ^ "EMACS vs. vi: La interminable 'guerra santa' geek'". Archivado desde el original el 26 de noviembre de 2014 . Consultado el 30 de mayo de 2014 ."EMACS como tal en realidad comenzó como un proyecto de estándares", envía un correo electrónico a Guy Steele
  21. ^ Stallman, Richard M. (1987). "El editor de pantalla completa de EMACS". TRABAJO . No. Maj 1987. Lysator, Universidad de Linköping. págs. 8-11 . Consultado el 14 de septiembre de 2007 .
  22. ^ Reynolds, Craig (10 de febrero de 1992). Wiseman, David G. (ed.). "El Koan del nombre de Emac Bolio". David G. Wiseman: Historias del folclore informático . Archivado desde el original el 16 de enero de 2003. Un novato engreído le dijo una vez a Stallman: "Puedo adivinar por qué el editor se llama Emacs, pero ¿por qué el justificante se llama Bolio?". Stallman respondió enérgicamente: Los nombres no son más que nombres, Emack & Bolio's es el nombre de una popular heladería en la ciudad de Boston. Ninguno de estos hombres tuvo nada que ver con el software. Respondida a su pregunta, aún sin respuesta, el novicio se giró para irse, pero Stallman lo llamó: "Ni Emacs ni Bolio tampoco tuvieron nada que ver con la heladería".
  23. ^ ab Stallman, Richard (26 de marzo de 1981). EMACS: el editor de visualización extensible, personalizable y autodocumentado (PDF) (Reporte técnico). Laboratorio de IA del MIT. Memorando AI 519a . Consultado el 7 de enero de 2011 .
  24. ^ Leigh Klotz (29 de agosto de 2007). "correo electrónico citado en" Tenga cuidado con lo que bromea"". Los New York Times . Consultado el 1 de mayo de 2010 .
  25. ^ "Comentario del autor de ZWEI, Dan Weinreb". Escribí el segundo Emacs: la implementación de la máquina Lisp, cuya especificación era "hacer lo que hace el Emacs PDP-10 (original) de Stallman", y luego progresé desde allí. Hay MUCHO de eso. A Mike McMahon y a mí nos llevó horas interminables implementar tantos comandos para crear ZWEI/Zmacs.
  26. ^ Owen Theodore Anderson (enero de 1979). "El diseño y la implementación de un sistema de redacción de editor orientado a visualización" (PDF) . Consultado el 9 de septiembre de 2012 .
  27. ^ Christopher Kelty; Mario Biagioli; Peter Jaszi; Martha Woodmansee (2015). Hacer y deshacer la propiedad intelectual . Computer Corporation of America (CCA) EMACS, escrito por Steve Zimmerman
  28. ^ "Emacs". 17 de diciembre de 2017.
  29. ^ "Diferencias entre GNU Emacs y CCA Emacs".
  30. ^ "Una historia de Emacs".
  31. ^ "mensaje de desarrollo de emacs 00872 (29 de septiembre de 2014)". En retrospectiva, 24.3 debería haberse denominado 25.1 y 24.4 debería haberse denominado 26.1. La cosa .N realmente debería conservarse solo para versiones de corrección de errores y ni 24.3, 24.4 ni la 24.5 planificada anteriormente son versiones de corrección de errores.
  32. ^ Stoll, Clifford (1988). "Acosando al astuto hacker". Comunicaciones de la ACM . 31 (5): 484–497. doi : 10.1145/42411.42412 . S2CID  6956966.
  33. ^ "GNU Emacs". Centro abierto . Consultado el 25 de noviembre de 2017 .
  34. ^ Raymond, Eric (12 de noviembre de 2014). "El nuevo repositorio de Git está activo" . Consultado el 25 de noviembre de 2017 .
  35. ^ Stallman, Richard (22 de febrero de 2008). "Re: Buscando un nuevo mantenedor o equipo de Emacs". Lista de correo de gnu.org . Consultado el 25 de noviembre de 2017 .
  36. ^ McNamara, Paul (25 de febrero de 2008). "Stallman sobre la entrega de GNU Emacs, su futuro y la importancia de la nomenclatura". Mundo de la Red . Consultado el 25 de noviembre de 2017 .
  37. ^ Chirgwin, Richard (5 de noviembre de 2015). "Emacs consigue un nuevo mantenedor cuando Richard Stallman firma". El registro . Consultado el 25 de noviembre de 2017 .
  38. ^ Raymond, Eric (29 de marzo de 2014). "La conversión... de repositorio... más fea... jamás vivida" . Consultado el 25 de noviembre de 2017 . veintinueve años de desarrollo continuo por nada menos que 579 personas
  39. ^ Stephen J., Turnbull. "XEmacs frente a GNU Emacs" . Consultado el 2 de octubre de 2012 .
  40. ^ "XEmacs ha muerto. ¡Larga vida a XEmacs!".
  41. ^ FrontPage - Meadow Wiki Archivado el 16 de febrero de 2012 en Wayback Machine.
  42. ^ "Mis experiencias con Lisp y el desarrollo de GNU Emacs". Había gente en aquella época, en 1985, que tenía máquinas de un megabyte sin memoria virtual. Querían poder utilizar GNU Emacs. Esto significaba que tenía que mantener el programa lo más pequeño posible.
  43. ^ "GNU Zile (Zile es Lossy Emacs) - Resumen". Las computadoras modernas tienen recursos más que suficientes para iniciar y ejecutar un Emacs completo en una fracción de segundo, y probablemente Emacs sea lo que desea. Zile es un clon de Emacs pequeño, rápido y potente. Es útil para instalaciones que ocupan poco espacio (por ejemplo, en disquete), máquinas con poca memoria o sesiones de edición rápidas, especialmente en máquinas remotas o como un usuario diferente, por ejemplo, root.
  44. ^ "Página de inicio del software Lugaru".
  45. ^ "Sistema de texto cacao".
  46. ^ "Configuración de combinaciones de teclas para la ventana de comandos y el editor". Blogs de Mathworks . 2007-05-11 . Consultado el 18 de agosto de 2019 .
  47. ^ Bolsky, Morris I.; Korn, David G. (1989). "Agradecimientos". El lenguaje de programación y comando KornShell. Englewood Cliffs, Nueva Jersey: Prentice Hall. págs.xii. ISBN 0-13-516972-0.
  48. ^ "Archivo de inicio".
  49. ^ "Archivo de inicio temprano".
  50. ^ "San IGNUcio - Richard Stallman" . Consultado el 29 de enero de 2015 .
  51. ^ "La transcripción selectiva íntegra de la charla de Richard M Stallman en la ANU". Archivado desde el original el 4 de octubre de 2011 . Consultado el 29 de enero de 2015 .
  52. ^ grupo de noticias alt.religion.emacs
  53. ^ "San IGNUcio - Richard Stallman". www.stallman.org . Consultado el 27 de marzo de 2018 .
  54. ^ ab "Cómo evitar el problema del meñique de Emacs". Xahlee.org . Consultado el 8 de noviembre de 2009 .
  55. ^ "Emacs: por qué no debería intercambiar las teclas {Bloq Mayús, Control}". En la mecanografía táctil, los modificadores vienen en pares, como la tecla ⇧ Shift. La forma ergonómica aceptada de presionar combinaciones de modificadores es usar una mano para presionar la tecla modificadora y la otra para presionar la tecla de letra. El uso de 2 manos evita forzar su músculo con una sola mano.
  56. ^ "EmacsWiki: lesiones por esfuerzo repetido" . Consultado el 29 de enero de 2015 .
  57. ^ "Mover la tecla Ctrl". EmacsWiki . Consultado el 8 de noviembre de 2009 .
  58. ^ "Página de inicio de ErgoEmacs" . Consultado el 1 de septiembre de 2018 .
  59. ^ "Diseño de Keymacs". GitHub . 15 de septiembre de 2022.
  60. ^ "EmacsWiki: salto as" . Consultado el 29 de enero de 2015 .
  61. ^ "Spacemacs". GitHub . Consultado el 20 de abril de 2015 .
  62. ^ BayleShanks (7 de octubre de 2009). "Modificadores adhesivos". EmacsWiki . Consultado el 8 de noviembre de 2009 .
  63. ^ "Modo Víbora". EmacsWiki . Consultado el 8 de noviembre de 2009 .
  64. ^ "Modificador en casa de Evdev" . Consultado el 14 de abril de 2015 .
  65. ^ "Por qué los atajos de teclado de Emacs son dolorosos".
  66. ^ "VAXen". Catb.org . Consultado el 8 de noviembre de 2009 .

Bibliografía

enlaces externos