Emacs ( / ˈ iː m æ k s / ), originalmente llamadoEMACS(acrónimo de "Editor Macros"),[1][2][3]es una familia deeditores de textoque se caracterizan por suextensibilidad.[4]El manual de la variante más utilizada,[5] GNU Emacs, lo 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][8]y el trabajo en GNU Emacs, descendiente directo del original, está en curso; su última versión es la 29.4[9] , lanzado en junio de 2024.
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 presentar 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, gestionar archivos , acceso remoto , [10] correo electrónico , esquemas , multimedia , integración de Git , feeds RSS , [11] y edición colaborativa , [12] así como implementaciones de ELIZA , Pong , Conway's Life , Snake , Dunnet y Tetris . [13]
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 . [14] [1] [2] [3] [15] Se inspiró en las ideas de los editores de macros TECO TECMAC y TMACS. [16]
La versión más popular y más portada de Emacs es GNU Emacs, que fue creada por Richard Stallman para el Proyecto GNU . [17] XEmacs es una variante que se derivó de GNU Emacs en 1991. GNU Emacs y XEmacs utilizan 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 es uno de los proyectos libres y de código abierto más antiguos que aún se encuentran en desarrollo. [18]
El desarrollo de Emacs comenzó durante la década de 1970 en el Laboratorio de Inteligencia Artificial del MIT , 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 usaba modos separados en los que el usuario agregaría texto, editaría texto existente o mostraría el documento. Uno no podía colocar caracteres directamente en un documento escribiéndolos en TECO, sino que en su lugar ingresaba un carácter ('i') en el lenguaje de comandos de TECO indicándole que cambiara al modo de entrada, ingresara los caracteres requeridos, tiempo durante el cual el texto editado no se mostraba en la pantalla, y finalmente ingresara un carácter (<esc>) para cambiar el editor nuevamente al modo de comando. (Se usó 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 [20] y vio el editor E del laboratorio , escrito por Fred Wright. [21] Quedó impresionado por el comportamiento intuitivo WYSIWYG (What You See Is What You Get) 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 añadido a TECO un modo combinado de visualización/edición llamado Control-R que permitía actualizar la visualización de la pantalla cada vez que el usuario introducía una pulsación de tecla. Stallman reimplementó este modo para que se ejecutara de forma eficiente y luego añadió una función macro al modo de visualización-edición 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 carecía TECO: la edición de acceso aleatorio. TECO era un editor secuencial de páginas que fue 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 solo una página a la vez de manera secuencial en el orden de las páginas del archivo. En lugar de adoptar el enfoque de E de estructurar el archivo para el acceso aleatorio de páginas en el disco, Stallman modificó TECO para manejar buffers 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 solo buffer. Casi todos los editores modernos utilizan este enfoque.
La nueva versión de TECO se hizo popular rápidamente en el Laboratorio de IA 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 después, Guy Steele se encargó del proyecto de unificar las diversas macros en un único conjunto. [22] La implementación final de Steele y Stallman incluía funciones para ampliar y documentar el nuevo conjunto de macros. [3] El sistema resultante se llamó EMACS, que significaba Editing MACroS o, alternativamente, E with MACroS . Stallman eligió el nombre Emacs "porque <E> no se usaba como abreviatura en ITS en ese momento". [23] Un koan hacker apócrifo alega que el programa recibió su nombre de Emack & Bolio's , una popular heladería de Boston . [24] El primer sistema EMACS operativo existió a fines de 1976. [25]
Stallman vio un problema en la excesiva personalización y la bifurcación de facto y estableció ciertas condiciones para su uso. [ cita requerida ] Más tarde escribió: [25]
EMACS se distribuyó sobre la base de compartir comunitariamente, lo que significa que todas las mejoras deben ser devueltas a mí para ser incorporadas y distribuidas.
El Emacs original, al igual que TECO, sólo se ejecutaba en el PDP-10 que ejecutaba ITS. Su comportamiento era lo suficientemente diferente al de TECO como para que pudiera considerarse un editor de texto por derecho propio, y rápidamente se convirtió en el programa de edición estándar en ITS. Mike McMahon trasladó 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. [26]
En los años siguientes, los programadores escribieron una variedad de editores similares a Emacs para otros sistemas informáticos. Estos incluyeron EINE ( EINE Is Not EMACS ) y ZWEI [27] ( ZWEI Was EINE Initially ), que fueron escritos para la máquina Lisp por Mike McMahon y Daniel Weinreb , y Sine ( Sine Is Not Eine ), [28] 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 completamente en Multics Lisp en el Cambridge Information Systems Lab de Honeywell . Multics Emacs fue mantenido más tarde por Richard Soley , quien continuó desarrollando el editor similar a Emacs NILE para el Proyecto NIL, y por Barry Margolin. Muchas versiones de Emacs, incluido GNU Emacs, adoptarían más tarde 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. El primer editor similar a Emacs que se ejecutó en Unix [ cita requerida ] , Gosling Emacs fue escrito en C y utilizó Mocklisp , un lenguaje con sintaxis similar a Lisp, como lenguaje de extensión.
Los primeros anuncios de CCA EMACS de Computer Corporation of America (Steve Zimmerman) [29] aparecieron en 1984. [30] Las comparaciones de 1985 con GNU Emacs, cuando salió, mencionaban gratis frente a 2.400 dólares. [31] [ cita irrelevante ]
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 la sustitución de Stallman de su intérprete Mocklisp por un verdadero intérprete Lisp requirió que casi todo su código fuera reescrito. Este se convirtió en el primer programa publicado 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, la primera publicación pública, se realizó el 20 de marzo de 1985. La primera versión ampliamente distribuida de GNU Emacs fue la versión 15.34, publicada más tarde en 1985. Las primeras versiones de GNU Emacs fueron numeradas como 1.xx , con el dígito inicial denotando 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 pasó del 1 al 13. [ 32] En septiembre de 2014, se anunció en la lista de correo GNU emacs-devel que GNU Emacs adoptaría una estrategia de lanzamiento rápido y que los números de versión aumentarían más rápidamente en el futuro. [33]
GNU Emacs ofrecía más funciones que Gosling Emacs, en particular un Lisp completo como lenguaje de extensión, y pronto reemplazó a Gosling Emacs como editor de facto de Emacs para Unix. Markus Hess explotó una falla de seguridad en el subsistema de correo electrónico de GNU Emacs en su ola de piratería de 1986, en la que obtuvo acceso de superusuario a computadoras Unix. [34]
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 aproximadamente el 70% de GNU Emacs está escrito en el lenguaje de extensión Emacs Lisp, [35] uno solo necesita portar el núcleo C que implementa el intérprete de Emacs Lisp. Esto hace que portar Emacs a una nueva plataforma sea considerablemente menos difícil que portar un proyecto equivalente que consista solo 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 y The Bazaar . Desde entonces, el proyecto ha adoptado una lista de correo de desarrollo pública y acceso CVS anónimo . El desarrollo se llevó a cabo en un único tronco CVS hasta 2008 y luego se cambió al DVCS de Bazaar . El 11 de noviembre de 2014, el desarrollo se trasladó a Git . [36]
Richard Stallman ha seguido siendo el principal mantenedor de GNU Emacs, pero ha dejado de desempeñar su función en ocasiones. Stefan Monnier y Chong Yidong fueron mantenedores desde 2008 hasta 2015. [37] [38] John Wiegley fue nombrado mantenedor en 2015 después de una reunión con Stallman en el MIT. [39] A principios de 2014, GNU Emacs ha tenido 579 colaboradores individuales a lo largo de su historia. [40]
Lucid Emacs, basado en una versión alfa temprana 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 ocurrió cuando las bases de código de las dos versiones de Emacs divergieron y los equipos de desarrollo separados cesaron los esfuerzos por fusionarlas nuevamente en un solo programa. [41] Desde entonces, Lucid Emacs ha sido renombrado 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 beta en 2013), mientras que GNU Emacs ha implementado muchas características que anteriormente solo estaban disponibles en XEmacs. [42] [ se necesita una mejor fuente ]
Otras bifurcaciones notables incluyen:
En el pasado, proliferaron los proyectos destinados a producir versiones pequeñas de Emacs. GNU Emacs se orientó inicialmente a ordenadores con un espacio de direcciones plano de 32 bits y al menos 1 MiB de RAM. [44] Estos ordenadores eran estaciones de trabajo y miniordenadores de gama alta en los años 1980, y esto dejó una necesidad de reimplementaciones más pequeñas que pudieran funcionar en el hardware de ordenadores personales comunes . Los ordenadores actuales tienen potencia y capacidad más que suficientes para eliminar estas restricciones, pero más recientemente se han diseñado clones pequeños para que quepan en discos de instalación de software o para su uso en hardware menos capaz. [45]
Otros proyectos tienen como objetivo implementar Emacs en un dialecto diferente de Lisp o en un lenguaje de programación totalmente diferente. Aunque no todos se mantienen en activo, estos clones incluyen:
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 al interactuar con programas externos como LaTeX , Ghostscript o un navegador web. Emacs proporciona comandos para manipular y mostrar de forma diferencial 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 ejecutar lotes de comandos de edición definidos por el usuario.
GNU Emacs es un editor de visualización en tiempo real , ya que sus modificaciones se muestran en pantalla a medida que se producen. 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 específico 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).
Casi toda la funcionalidad de Emacs, incluidas las operaciones de edición básicas 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 que GNU Emacs se pueda portar a una amplia variedad de sistemas operativos y arquitecturas sin modificar la semántica de implementación del sistema Lisp donde vive la mayor parte del 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 características principales del editor se compilan de forma asincrónica y se cargan en el entorno en vivo para reemplazar las definiciones existentes. El GNU Emacs moderno presenta compilación de código nativo y bytecode 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 consiste en 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 a, pero más simple y más general que, los conocidos como XML , JSON y YAML . De esta manera, hay poca diferencia en la práctica entre personalizar las características 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, por ejemplo, como VS Code , en el 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 los componentes internos de Emacs al usuario de Emacs durante el uso normal de la misma forma en que estarían expuestos al desarrollador de Emacs que trabaja en el árbol git , y eliminar lo más posible la distinción entre usar Emacs y programar Emacs, al mismo tiempo que se proporciona un entorno de edición estable, práctico y receptivo para usuarios novatos.
La principal estructura de datos de edición de texto es el buffer , una región de memoria que contiene datos (normalmente texto) con atributos asociados. Los más importantes son:
Los modos , en particular, son un concepto importante en Emacs, que proporciona un mecanismo para desagregar la funcionalidad de Emacs en conjuntos de comportamientos y combinaciones de teclas relevantes para los datos de buffers específicos. Los modos principales proporcionan un paquete general de funciones y comandos relevantes para los datos de un buffer y la forma en que los usuarios pueden interactuar con él (por ejemplo, editar el código fuente en un lenguaje específico, editar hexadecimal , ver el sistema de archivos, interactuar con git , etc.), y los modos secundarios definen colecciones subsidiarias de funcionalidad aplicable a muchos modos principales (como auto-save-mode
). Los modos secundarios se pueden activar o desactivar tanto localmente para cada buffer como globalmente para todos los buffers, mientras que los modos principales solo se pueden activar por buffer. Cualquier otro dato relevante para un buffer pero que no esté incluido en un modo se puede manejar simplemente enfocando ese buffer y modificando en vivo los datos relevantes directamente.
Cualquier interacción con el editor (como pulsaciones de teclas o clics en un botón del ratón) se realiza evaluando código Emacs Lisp, típicamente un comando , que es una función diseñada explícitamente para uso interactivo. Las teclas se pueden redefinir arbitrariamente y también se puede acceder a los comandos por nombre; algunos comandos evalúan código arbitrario de Emacs Lisp proporcionado por el usuario de varias maneras (por ejemplo, una familia de eval-
funciones, que operan en buffer
, region
o expression
). Incluso las entradas de usuario más simples (como caracteres imprimibles ) se efectúan como funciones Emacs Lisp, como self-insert-command
, vinculada por defecto a la mayoría de las teclas del teclado en un búfer de edición de texto típico, que se parametriza a sí misma con el carácter definido por la configuración regional asociado con la tecla utilizada para llamarla.
Por ejemplo, al presionar la ftecla en un buffer que acepta entrada de texto se evalúa el código , que inserta una copia de la constante de carácter en el punto . El , en este caso, está determinado por lo que Emacs llama el argumento universal : todo el 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 suministrarse mediante prefijos de comando, como + , o de manera más compacta + , que se expande a . Cuando no se suministra ningún prefijo, el argumento universal es : cada comando se ejecuta implícitamente una vez, pero puede llamarse multiplicar, o de una manera diferente, cuando se suministra con dicho prefijo. Dichos argumentos también pueden ser no positivos cuando tenga sentido que lo sean; depende de la función que acepta el argumento determinar, de acuerdo con su propia semántica, lo que significa un número dado para ella. Un uso común es que las funciones realicen acciones en sentido inverso simplemente verificando el signo del argumento universal, como un comando de ordenación que ordena en sentido inverso de manera predeterminada y en sentido inverso cuando se llama con un argumento negativo, usando el valor absoluto de su argumento como clave de ordenación (por ejemplo, ordenar en sentido inverso por índice de columna (o delimitador) 7), o deshacer/rehacer, que son simplemente negativos entre sí (recorrer hacia adelante y hacia atrás un historial recursivo de diferencias en una cierta cantidad de pasos a la vez).(self-insert-command 1 ?f)
?f
1
Controlu 7 fMeta7 f(self-insert-command 7 ?f)
1
-7
Debido a su vocabulario relativamente grande de comandos, Emacs cuenta con un lenguaje de comandos establecido 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 de mayúsculas y modificadoras: , , , , , y . Es posible que no todas estén presentes en un teclado de estilo IBM, aunque normalmente se pueden configurar como se desee. Estas se representan en lenguaje de comandos como los prefijos respectivos: , , , , , y . Las teclas cuyos nombres solo se pueden imprimir con más de un carácter se encierran entre corchetes angulares. Por lo tanto, un atajo de teclado como + + + (verificar fórmulas dependientes y calcular todas las celdas en todos los libros abiertos en Excel ) se representaría en lenguaje de comandos de Emacs como , mientras que un comando de Emacs como + + + (búsqueda incremental de archivos por expresión regular que coincida con el nombre de archivo ), se expresaría como . El lenguaje de comandos también se utiliza para expresar las acciones necesarias para invocar comandos sin un atajo asignado: 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 , y Emacs escaneará el espacio de nombres de los comandos contextualmente disponibles para devolver la secuencia más corta de pulsaciones de teclas que lo lexiquen de forma única.CtrlAlt⇧ ShiftMetaSuperHyperC-
A-
S-
M-
s-
H-
CtrlAlt⇧ ShiftF9C-A-S-<f9>
Metas f CtrlMetasM-s f C-M-s
scratch-buffer
M-x scra <return>
Debido a que Emacs es anterior a la terminología estándar moderna para interfaces gráficas de usuario , utiliza nombres algo divergentes para los elementos de interfaz familiares. Los buffers, los datos con los que interactúan los usuarios de Emacs, se muestran al usuario dentro de ventanas , que son porciones en mosaico de la pantalla del terminal o la ventana GUI, a las que Emacs se refiere como marcos ; en la 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 (generalmente muestra el nombre del buffer, los modos activos y la posición del punto del buffer, entre otros). La parte inferior de cada marco se usa para mensajes de salida (entonces llamado 'área de eco') y entrada de texto para comandos (entonces llamado 'minibuffer').
En general, los elementos de visualización de Emacs (ventanas, marcos, etc.) no pertenecen a ningún dato o proceso específico. Los buffers no están asociados con ventanas, y se pueden abrir múltiples ventanas en el mismo buffer, por ejemplo, para rastrear diferentes partes de un texto largo una al lado de la otra sin desplazarse hacia atrás y hacia adelante, y múltiples buffers 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 que muestren un solo 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 a través de ssh desde un sistema remoto y un marco gráfico que muestre el mismo proceso de Emacs a través del monitor del sistema local.
Así como los buffers no requieren ventanas, 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 interfaz gráfica y conectarse a él a través de un cliente que genere marcos. Este servidor puede entonces 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 y recordando el historial de deshacer del buffer, fragmentos de texto guardados, historial de comandos y otros estados del usuario entre sesiones de edición. En este modo de operación, Emacs se superpone a la funcionalidad de programas como screen y tmux .EDITOR
VISUAL
Debido a su separación de las preocupaciones de visualización de la funcionalidad de edición, Emacs puede mostrarse de manera aproximadamente similar en cualquier dispositivo más complejo que una terminal tonta , incluyendo la provisión de 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 un superconjunto estricto de las funciones de los marcos de terminales de texto.
(set-default-coding-systems 'utf-8)
(global-set-key (kbd "C-x C-b") 'ibuffer)
after-save-hook
)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 , ya 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 lo solicita, una práctica que posteriormente se extendió a los lenguajes de programación, incluidos Lisp , Java , Perl y Python . Este sistema de ayuda puede llevar a los usuarios al código real de cada función, ya sea desde una biblioteca incorporada o una biblioteca de terceros agregada.
Emacs también tiene un tutorial integrado . Emacs muestra instrucciones para ejecutar 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.
La Iglesia de Emacs , formada por Richard Stallman , es una religión parodia creada para los usuarios de Emacs. [52] Aunque 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 libre de vi no es un pecado sino una penitencia ". [53] ) La Iglesia de Emacs tiene su propio grupo de noticias , alt.religion.emacs , [54] que tiene publicaciones que pretenden apoyar a esta religión parodia. Los partidarios de vi han creado un Culto a vi en oposición .
Stallman se ha referido a sí mismo en broma como San Ignacio de Antioquía , un santo de la Iglesia de Emacs. [55] Esto es en referencia a Ignacio de Antioquía , un padre de la Iglesia primitiva venerado en el cristianismo.
La palabra emacs a veces se pluraliza como emacsen , por analogía fonética con boxen y VAXen , haciendo referencia a diferentes variedades de Emacs. [56]
Para que un editor se denomine "emacs", el requisito principal es que sea completamente extensible con un lenguaje de programación real, no sólo con un lenguaje de macros.
GNU Emacs es el editor más popular y extendido de la familia de editores Emacs.
Por último, si te sientes frustrado, intenta describir tus problemas a la famosa psicoterapeuta Eliza. Solo hazlo Mx doctor.
{{citation}}
: CS1 maint: URL no apta ( enlace )."EMACS como tal en realidad comenzó como un proyecto de estándares", escribe Guy Steele por correo electrónico.
Un novato arrogante le dijo una vez a Stallman: "Puedo adivinar por qué el editor se llama Emacs, pero ¿por qué el justificador se llama Bolio?". Stallman respondió con fuerza: "Los nombres son solo 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". Con su pregunta respondida, pero sin respuesta, el novato se dio vuelta para irse, pero Stallman lo llamó: "Ni Emacs ni Bolio tuvieron nada que ver con la heladería tampoco".
Escribí el segundo Emacs de la historia: 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é a partir de ahí. Hay MUCHO. Mike McMahon y yo pasamos horas interminables implementando tantos comandos para hacer ZWEI/Zmacs.
Computer Corporation of America (CCA)
EMACS, escrito por Steve Zimmerman
En retrospectiva, la versión 24.3 debería haberse llamado 25.1 y la 24.4 debería haberse llamado 26.1. El término
.N
debería conservarse solo para versiones que corrijan errores, y ni la 24.3, ni la 24.4, ni la 24.5, que estaba prevista anteriormente, son versiones que corrijan errores.
Veintinueve años de desarrollo continuo por no menos de 579 personas.
En aquella época, en 1985, había gente que tenía máquinas de un megabyte sin memoria virtual. Querían poder usar GNU Emacs. Esto significaba que tenía que mantener el programa lo más pequeño posible.
Las computadoras modernas tienen recursos más que suficientes para iniciar y ejecutar un Emacs completo en una fracción de segundo, y Emacs es probablemente lo que usted necesita. 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.