Article View: es.comp.os.linux.programacion
Article #7517Re: Entornos de desarrollo
From: Pascal Bourguignon
Date: Fri, 21 Feb 2003 21:20
Date: Fri, 21 Feb 2003 21:20
72 lines
3692 bytes
3692 bytes
EnigmaaASI <bagpipeQUITAESTO@ono.com> writes:
> Wenas. Tengo que hacer un programa en C y otro en Java que demuestre
> el funcionamiento de un programa tipo vim o emacs, pero no se por
> donde empezar. Alguno de vosotros seria tan amable de darme alguna
> idea para el comienzo de este?.
Necesitas escribir un editor de texto.
�Porqu� no lees las fuentes de uno de ellos?
- hemlock (un emacs escrito enteramente en Common-Lisp),
- emacs (escrito parte en C parte en Lisp),
- vim,
o quizas, para empezar, seria m�s simple estudiar las fuentes de:
- pico,
- nano,
- ed.
Nota que los editores tipo emacs son en efecto una biblioteca de
funciones para manipular texto, con solo un interfaz que permite
invocar estas funciones con presi�n de una sequencia de teclas. Asi
que puedes empezar por esto, y poner el interfaz luego. Y como la
mayoria (o todas en el caso de Hemlock) de estas funciones son
escritas en Lisp, el usuario puede cambiar las y personalisar su
editor facilmente.
Primero, tienes que decidir como guardas el texto en memoria. Hay dos
grandes maneras de considerar el texto: como una unica sequencia de
letras, o como una sequencia de l�neas. (Antiguamente, o en case de
querer hacer un editor de "graficos" ASCII, se puede tanbien guardar
el texto como una tabla de letras de dos dimensiones).
Una vez que tienes decidido las estructuras de datos, hay que escribir
funciones para manipular los:
- insertar una letra,
- quitar una letra,
- insertar una nueva l�nea,
- suprimir una l�nea,
- hacer sustituciones,
- seleccionar una region,
- quitar una region,
- monstrar l�neas de texto en la pantalla,
- cargar un archivo texto en memoria,
- guardar un texto en un archivo,
- etc.
Finalmente, solamente falta conectar estas funciones con el teclado.
Es decir, en lugar de programar en duro la correspondencia, si pasas
por una tabla, es m�s facil y m�s configurable:
"a" --> insertar-la-propria-letra
"b" --> insertar-la-propria-letra
...
"^B" --> buscar-texto
"^S" --> hacer-una-sustitution
"^G" --> guardar-archivo
"^C" --> cargar-archivo
...
Una pena que debes hacer lo en C o Java, porque eso no permite al
usuario de personalizar mucho el editor. O tiendrias que reescribir
un Lisp en C o Java. Seria mejor hacer lo en Lisp desde en comienzo.
--
__Pascal_Bourguignon__ http://www.informatimago.com/
----------------------------------------------------------------------
There is a fault in reality. Do not adjust your minds. -- Salman Rushdie
Technical Details
Message-ID:
<87fzqh1gba.fsf@thalassa.informatimago.com>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!fu-berlin.de!uni-berlin.de!213.220.35.225!not-for-mailReferences:
<3E55E7BC.3070908@ono.com>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,da91a6602af3de70 X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2003-02-21 13:20:46 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!fu-berlin.de!uni-berlin.de!213.220.35.225!not-for-mail From: Pascal Bourguignon <pjb@informatimago.com> Newsgroups: es.comp.os.linux.programacion Subject: Re: Entornos de desarrollo Date: 21 Feb 2003 22:20:41 +0100 Organization: informatimago.com Lines: 72 Sender: pascal@thalassa.informatimago.com Message-ID: <87fzqh1gba.fsf@thalassa.informatimago.com> References: <3E55E7BC.3070908@ono.com> NNTP-Posting-Host: 213.220.35.225 Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: fu-berlin.de 1045862445 53517034 213.220.35.225 (16 [41911]) User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2