[ Lo más nuevo... al final ] --------------------From hmr Fri Aug 14 21:38 MDT 1987 He terminado la revision 2.5 de sce. -Ahora es capaz de leer lÕneas de mayor longitud que la pantalla y editarlas (con algÇn truco). -El contenido de memoria es independiente de lo que hay en pantalla: se cambia mucho mÄs deprisa de pÄgina y el "borrar pantalla" muestra el contenido real del fichero. -La tecla "Inserta lÕnea" funciona. -El programa define ahora las teclas de funciÆn, dando acceso de esta manera a 14 nuevos comandos: Acciones de bloque: Marca p. : marca principio de bloque. Marca f. : marca final de bloque. Las marcas aparecen subrayando el carÄcter marcado. Copia B. : Copia el bloque marcado adonde indica el cursor. Mueve B. : Mueve " " " " " " " . Lee B. : Lee bloque de fichero (sin implementar) Escrib.B : Escribe el bloque marcado en fichero. Borra B. : Borra el bloque marcado. Acciones de posicionamiento: Posic. : Posiciona en la lÕnea cuyo nÇmero se le da. Para ir al final del fichero dar un nÇmero muy grande. Busca : Busca a partir de onde esta el cursor el string dado. Rep.Busq : Repite busqueda anterior. Substi. : Sustituye (sin implementar). Varios: Shell : Ejecuta los comandos dados en un subshell. Para terminar "exit". No se puede cambiar de directorio. Autoind. : Pone o quita la opcion de autoindent. Otro Men : Cambia la definicion de las teclas para pasar de de un menu a otro. ------------------ Revision 3.2 de SCE (Octubre 1987) -Ahora SCE expande todos los posibles tabs del fichero input, y avisa si existen en el caracteres de control (si ocurre esto ultimo NO hay grantia de los resultados si se editan lineas con dichos caracteres). -SCE tiene ahora capacidad para un numero indeterminado de lineas. El maximo numero de lineas por defecto es 3000. Si se desean mas, especificar el nuevo maximo como segundo argumento al llamar a SCE. -Se han resuelto todos los problemas detectados en la edicion de lineas largas, y se ha dotado a SCE de la capacidad de efectuar "scroll" horizontal de la pantalla durante la edicion de las mismas. -Ahora es posible cambiar de directorio mediante el comando SHELL, tambien es posible abandonar la edicion utilizando "abandon" como comando SHELL (para pantallas sin "Interrupt"). -Se han cambiado la definicion de las teclas de usuario. Ahora estan mas accesibles los comandos mas usuales y el menu vuelve al estado inicial una vez pulsada cualquiera de las teclas de segundo nivel. -Se ha introducido un nuevo comando: SAVE, que salva el contenido de la memoria escribiendola en el fichero (La version inicial del fichero se pierde!!). -Se ha implementado el comando READ_BLOCK, que inserta en la posicion actual el contenido del fichero indicado. -El comando REPLACE, que busca y substituye un string por otro, ha sido implementado con tres modos de funcionamiento: en todo el fichero, en el bloque, o a partir de la posicion actual, pidiendo confirmacion cada vez. -Ahora el CR en modo "machaque" (no insercion) hace scroll si se utiliza en la ultima linea de pantalla. -Los tabuladores de relativos (incrementaban a decrementaban 10 posiciones), han pasado a ser absolutos (con relacion a la pantalla), cada 8 posiciones. *En caso de agotarse la memoria, ahora SCE avisa ANTES de realizar la operacion, dejando el fichero en estado coherente. *Se ha optimizado la representacion en pantalla de los comandos COPY_BLOCK y DELETE_BLOCK. *Ahora las marcas no se corren cuando se edita la linea en la que hay una de ellas. *Se ha optimizado el comando MOVE_BLOCK. En la fase de copia SOLO duplica los punteros (antes tambien duplicaba las lineas). *Los avisos y marcas aparecen ahora en video inverso. ---------------- SCE revision 3.6 (Diciembre 1988) - Se han definido las softkeys cons su valor estandar, para que sean compatibles con la definicion presente en "terminfo" a partir de la revision 6.2 del HP-UX. - El comando Position tiene ahora un posible parametro "e" que lleva directamente al final del fichero. - Se ha corregido el Autoindent de manera que no autoindente cuando el cursor esta antes del principio no "blanco" de la linea. Ademas de ser un comportamiento mas intuitivo elimina uno de las posibles causas de "abandon" del editor al no poder ya salirse la nueva linea de la maxima longitud al agnadir los espacios del autoindent. - Se ha corregido la causa de los "substitute" recursivos, que llenaba un fichero con todo igual al sustituir un string por otro que lo contiene. - Ahora el editor lleva a cabo un filtrado eficaz de los caracteres de control: ya no es posible introducir en el texto un caracter de control por accidente. - Un "abandon" que esporadicamente se producia al crear un fichero con el editor ha sido corregido (O debe estarlo: No se ha podido reproducir). - Ya no es posible hacer abortar al editor escribiendo mas alla de la maxima longitud de linea: El editor no deja ir mas alla. - Los tabuladores se han vuelto absolutos al FICHERO (cada 8 posiciones del mismo) y no como antes a la pantalla. - El posicionamiento en el "substitute" es ahora correcto en todos los casos. RevisiÆn 4.0, Enero 1989 - Al reemplazar dos items iguales y seguidos ya no se salta uno. - sce ya no utiliza la librerÕa CURSES, por lo tanto: * El tama·o del programa ejecutable se ha reducido a la mitad. * Los refrescos de pantalla son considerablemente mÄs rÄpidos. * Ya es posible utilizar los caracteres de cÆdigo ascii mayor que 127, en particular acentos y ·. * Los caracteres de cÆdigo ascii menor que 32 (caracteres de control) se manejan sin dificultad. El Çnico carÄcter prohibido es el nulo (ascii 0). - Los caracteres de control son visibles ahora como la letra correspondiente en mayÇsculas y subrayada (Ej: CTRL-J aparece como J subrayada). - Ahora es posible cancelar todas las operaciones de lectura interactiva; antes, una vez iniciado un comando se debÕa llegar hasta el final. - En todo punto se puede ahora a·adir un carÄcter ascii de cÆdigo dado, tecleando CTRL-C (o el comando "Ascii") y 3 las tres cifras del cÆdigo en decimal. - Se ha a·adido un tercer nivel de menÇ, con el comando Ascii y el ABANDON. - El comando "position" ahora tiene un submenu que permite moverse hasta el final o principio del fichero, o bien volver hasta la posiciÆn en la que se estaba antes del Çltimo "position". - Se ha sustituÕdo la lectura de las opciones del replace por un submenu. - Ahora es posible, en una lectura interactiva, anular (borrar) el valor por defecto (tecla de borrar lÕnea). - sce ya no expande los tabs al leer el fichero, pero tampoco los expande en ediciÆn: muestra el carÄter de control correspondiente (CTRL-I). - sce cuenta los tabs y caracteres de control del fichero al entrar, escribiendo cuÄntos hay nada mÄs empezar. -------------------SCE Revision 4.2 (Enero 1990) - Adaptacion del editor para que funcione en 4.2 Berkeley (de SUN), ademas de Sytem V. - Version del SCE para pantallas vt220 de digital (mayoria de emuladores de terminal del mercado). - Ya no se pierde todo lo editado si se dice CANCEL al salvar un fichero no escribible. - Las Keys del menu ya no se apagan cada vez que se cambian las etiquetas (muy desagradable en X11 windows). - A veces al salir escribia mal el nombre del fichero. Corregido. - Mejorada deteccion de errores al salvar: Si abre, pero hay error al escribir, avisa (lo que no se puede evitar es que el fichero quede machacado). !!Esto puede ocurrir si se llena el espacio en disco!!. Te da la oportunidad de salvar en otro fichero/disco. - Se ha mejorado el dialogo del REPLACE. Ahora obliga a que se seleccione una opcion con las teclas de funcion (no supone que return significa CONFIRM). A cada sustitucion del confirm pregunta YES (antes era CONFIRM). Revision 4.2: - Se han a·adido 2 nuevos comandos: INSCOL (Inserta Columna) y DELCOL (Borra Columna), para facilitar indentar y desindentar bloques de texto. La columna se define entre las marcas de bloque (que ahora son de bloque y/o columna): BLOQUE: COLUMNA: ----------------- ----------------- ----#......... ----#........ .................. ----.............--- ....... ----... ................#---- ----............#------ ------------------------ -------------------------- --------- ---------- Insertar columna inserta una columna vacia (llena de espacios) en el lugar y con el tama·o indicado. Borrar columna borra la columna indicada. --------------------Rev 4.3 de "sce" (Enero 1991) -Corregido el problema que causaba la perdida de los ultimos caracteres enviados por el programa, al salirse o a cada comando de la opcion "shell", cuando se lanzaba el editor en otro ordenador y se utilizaba a traves de la red desde un HP9000. -Se ha cambiado TODA la definicion de las teclas "control" (CTRL-) para hacerla lo mas similar posible al "emacs" (y por lo tanto al editor de linea del ksh). -Ahora existe una secuencia "CTRL-T CTRL-T" para abortar el editor cuando se entra por equivocacion en un emulador de pantalla inadecuado. -Corregido un error en el comando "DELETE BLOCK" que abortaba el programa cuando se borraba un bloque mas grande que el tamagno de la pantalla en curso, estando en ese momento el cursor ANTES del principio de bloque y ambos visibles. -Corregido el mismo error, no fatal, pero que producia una anormal lentitud debida a un exceso de secuancias de control repedidas que se mandaban a la pantalla, en los comandos COPY_BLOCK y WRITE_BLOCK. -Corregido el aborto que se producia cuando TERM=unknown y ni LINES ni COLUMNS estaban definidos. este mismo error se producia siempre que la entrada en /usr/terminfo existia, pero era incorrecta o insuficiente. Rev 4.4 de "scevt": -Las mejoras de la revision 4.3 de sce. -Se han cambiado TOTALMENTE las definiciones de las teclas de funcion. * Todas las funciones se realizan ahora a traves del "Application Keypad" (el teclado numerico en modo aplicacion). Las 4 teclas de funcion del vt ya no se utilizan (en cada emulador estan colocadas en un lugar distinto, y a veces incomodo). Las teclas de cursor ya no son imprescindibles (a veces estan colocadas muy incomodamente). * En caso de no disponer ni siquiera del teclado de aplicacion, o solo de las teclas de cursor, todos los comandos se pueden ejecutar mediante combinacion de controles, con ayuda del menu. * La tecla para obtener el "help" directamente es ahora CTRL-G. -Se ha suprimido la linea de menu por defecto. ahora, para que el menu aparezca se utiliza le tecla "5" del teclado de aplicacion o "CTRL-Y" De esta manera el menu aparece a la vez que se conmuta el significado de las teclas de aplicacion; se gana una linea de pantalla para la edicion; y se evita el molesto parpadeo de la linea de menu cuando se hace "scroll" (deslizamiento de la pantalla). -Se han agnadido dos comandos que ya existian previamente en sce, pero no en scevt: "INSERT COLUMN" y "DELETE COLUMN". SCE, Revision 5.0, Diciembre 1991. ================================== - Se ha agnadido una opcion, utilizable al llamar al editor: -t, que permite expander los tabs de un fichero al entrar. Esto suprime TODOS los tabs del fihero (cuidado con los makefiles!). - Se han unificado en uno solo los dos programas screvt y scre. - La seleccion de uno u otro viene determinada por la opcion -a que indica que el terminal es vt220-ANSI (por defecto es HP). - Alternativamente, por la variable de entorno "sce". Si esta variable contiene algun substring con las letras "vt" se se supondra que la pantalla es de tipo vt220-ANSI, si contiene un substring con "hp" es es HP-Term0. - Las rutinas de lectura de teclado en HP son ahora las mismas (mucho mas flexibles) que antes se usaban solo para vt. Esto permite que ahora no termine la lectura de linea (Position, FInd, Replace, Shell,...) a menos que se pulse una tecla de significado real. Esto era muy molesto sobre todo en el replace paso a paso. - Se han cambiado ligeramente algun menu (alguna etiqueta, etc...) - SCE averigua ahora el tamagno de pantalla preguntandoselo directamente al terminal. Ya NO ES NECESARIO definir LINES y COLUMNS. SCE las ignora. Solo si se define la variable "sce" conteniendo un substring "lincol" se volvera al comportamiento anterior, es decir utilizar LINES/COLUMS o TERM para averiguar el tamagno de la pantalla. Esta nueva caracteristica permite lanzar SCE sin problemas sea cual sea el tamagno de la ventana/pantalla. Esto puede producir problemas en algun caso si se teclea algo en el mismo momento en que SCE pregunta al terminal. En ese caso salir y volver a entrar. Si esto se produce muy a menudo, mejor definir lincol. - SE PUEDE cambiar el tamagno de una ventana con SCE rodando en ella: basta notificar a SCE con el comando de REPINTAR PANTALLA: CTRL-L o la tecla BorrarPantalla de los teclados HP. - Cuando se hace scroll horizontal, el borde izquierdo de la pantalla queda marcado, para indicar que hay mas texto a la izquierda (para evitar sustos debido a scroll imprevisto). - Sce ya no necesita que se le indique el numero maximo de lineas editable. Automaticamente, si se queda sin lineas, pedira mas (segun una ley geometrica: el doble de las que tiene cada vez). El numero de lineas por defecto sigue siendo 3000. - Se ha agnadido el soporte para terminales aixterm (para sistemas RISC/6000, ventanas X). Todas las funciones del Sce estan soportadas, con un funcionamiento muy similar a HP. * La opcion correspondiente para terminal aixterm es -i * O bien "aix" en la variable "sce" * En una pantalla aixterm, si se cambia el tamagno de una ventana, el Sce AUTOMATICAMENTE se reajustara a ella (NO es necesario el CTR-L). - Se ha agnadido una nueva opcion -r, que permite poner al sce en "solo lectura", para ver ficheros sin correr peligro de alterarlos. En este modo se desactivan todos los comandos de modificacion y desaparecen de los menus. Para volver al modo normal hay un comando "SCE". Desde el sce normal se puede entrar en modo solo lectura con el comando "NoWrite". - En modo HP se han agnadido las combinaciones (Shift)-> y (Shift)<- que hacen lo mismo que el tabulador y el tabulador hacia detras. - La variable de configuracion "sce" puede definirse tambien en mayusculas: "SCE". - En pantallas aixterm se dipone de CTRL-insert (inserta linea) CTRL-Supr (borra linea) CTRL-Inicio (Principio de Pagina) CTRL-Fin (Final de Pagina) CTRL-RePag (Principio de Fichero) CTRL-AvPag (Final de fichero) y en las teclas de cursor: CTRL-^ (Scroll hacia arriba) CTRL-v (Scroll hacia abajo) CTRL- -> (Tab hacia delante) CTRL- <- (Tab hacia detras) ademas de los comandos visibles en las teclas. - SCE es un scrip de shell que llama al programa "screun" que determina el tipo de terminal. - Ademas de "sce", relacionado con el existe el comando "see", que llama al editor en modo solo lectura ("see" es un link simbolico a "sce", que mira con que nombre se la llama). - Para poder utilizar a SCE desde el mailx, definir el fichero $HOME/.mailrc con la linea: set EDITOR=sce Para poder llamar a sce desde el elm, crear el directorio $HOME/.elm y en el el fichero elmrc con la linea: editor sce SCE Rev 5.2, Diciembre 1993 =========================== - Agnadido soporte para el tipo de terminal xterm (emulador de terminal XTerm de Xwindows). Sce en xterm Funciona de manera similar a en aixterm. Sin embargo, para poder utilizar el teclado comodamente, conviene (re)definir las teclas de edicion del XTerm (normalmente no se usan e incluso no estan definidas). Para ello, incluir en el fichero de recursos (.Xdefaults o equivalente) el recurso: XTerm*VT100.Translations: #override \ ! Meta*:string(|) \n\ ! Meta:insert-seven-bit() \n\ BackTab:string(0x1b) string("[108~") \n\ !! CtrlEnd:string(0x1b) string("[101~") \n\ ShiftHome:string(0x1b) string("[103~") \n\ CtrlHome:string(0x1b) string("[100~") \n\ Home:string(0x1b) string("[102~") \n\ InsertChar:string(0x1b) string("[2~") \n\ DeleteChar:string(0x1b) string("[112~") \n\ InsertLine:string(0x1b) string("[106~") \n\ DeleteLine:string(0x1b) string("[107~") \n\ ClearLine:string(0x0b) \n\ Clear:string(0x0c) \n\ DeleteLine:string(0x1b) string("[107~") \n\ CtrlUp:string(0x1b) string("[104~") \n\ CtrlDown:string(0x1b) string("[105~") \n\ CtrlLeft:string(0x1b) string("[108~") \n\ CtrlRight:string(0x1b) string("[109~") \n\ CtrlPrior:string(0x1b) string("[110~") \n\ CtrlNext:string(0x1b) string("[111~") \n\ ShiftUp:scroll-forw(1,line) \n\ ShiftDown:scroll-back(1,line) \n\ ShiftBackSpace: string(0x7f) \n\ BackSpace: string(0x8) (las definiciones comentadas con "!" no son imprescindibles, pero mejoran el funcionamiento en HP, teclado espagnol. "!!" no funciona en teclado HP) - Version HP compilada con SIGWINCH, puesto que este ya existe en HP-UX 9.0. Se puede por lo tanto redimensionar una ventana en HP y el programa automaticamente se reajustara (sin que sea necesario, como anteriormente borrar pantalla). - Agnadida una nueva opcion a las posibles a las que sce acepta mediante la variable "sce" (export sce=...opciones...). La opcion "noau" permite tener el "autoindent" en off al entrar en el programa (por defecto). - Ahora, cuando sce pregunta algo (position,find, replace,...) la linea es editable. El valor por defecto aparece y tambien es editable, aunque se anula si lo primero que se escribe es un caracter. - En modo vt100, para posibilitar la edicion de linea, ha habido que cambiar la posicion en las teclas del keypad de algunos comandos (sorry!!). Obviamente esto solo ha afectado a los comandos/contestaciones que se dan cuando sce pregunta algo. - sce ahora rellena la linea a espacios cuando se define una marca mas alla del final de linea (antes forzaba la marca al final de linea). SCE 5.21 Enero 1995 =================== - A partir de esta versión sce ya no caduca y el fuente está disponible . SCE 5.22 Mar 1996 ================= - Añadido el bloqueo del fichero editado. Si sce detecta que el fichero ha sido bloqueado (por otro sce, p.e.) entra en modo sólo lectura. SCE 5.23 Jun 1997 ================= - Pequeña corrección en el manejo de los "application keys". SCE 5.25 Ene 1999 ================= - Arreglado (?) el problema de que vacia el fichero cuando cae en determinadas circunstancias. - Adaptado para compilacion con ultimas versiones de Linux. - Mejorado el soporte de xterm, para que funcione con la X11R6. ( Mapeo de la nueva definicion de F1-F4, manteniendo la antigua, Mapeo de F9-F12 a F5-F8, por ergonomia del teclado). Ello implica el siguiente fichero de recursos: ! Define teclas para SCE ! ATENCION: El orden es importante XTerm*VT100.Translations:I#override \ CtrlUp: string(0x1b) string("[104~") \n\ CtrlDown: string(0x1b) string("[105~") \n\ CtrlPrior:string(0x1b) string("[110~") \n\ CtrlNext:string(0x1b) string("[111~") \n\ CtrlInsert:string(0x1b) string("[106~") \n\ CtrlDelete:string(0x1b) string("[107~") \n\ Shift Tab: string(0x1b) string("[108~") \n\ ShiftBackSpace: string(0x7f) \n\ Delete: string(0x1b) string("[112~") \n\ Home: string(0x1b) string("[102~") \n\ End: string(0x1b) string("[103~") \n\ Meta:insert-seven-bit() SCE Rev 5.26 ============ - Añadida nueva opción "-n" para poder editar un fichero sin bloquearlo (el Linux no deja ejecutar un fichero bloqueado, lo que es muy molesto para editar un script en una ventana y probarlo en otra). SCE Rev 5.27 ============ (From hmr Fri May 25 02:30 MDT 2007) * Soporte para el Kconsole Después de tantos años... El problema era debido a un bug del Kconsole que cuando se le dice que borre N líneas y N="zona de scroll" no hace nada. Hay que decirle que borre N-1 y luego 1. Genial; en todos este tiempo nadie lo ha corregido. * Soporte para el Terminal de MacOSX. Un par de ajustes para que compilara... y luego ver porqué se dejaba la zona de scroll puesta al salir. El Terminal no reconoce la secuencia de "poner scroll 0 lineas" como "quitar scroll" y he tenido que sustituirlo por un "borrar pantalla". * Ejecución de scripts editados (en Linux). He modificado el mecanismo de "locking" del fichero, de forma que en Linux se pueda ejecutar un fichero que está abierto para editar. La tontería es que si estabas editando un script/ página web te tenías que salir para poder ejecutarlo/verlo, a menos de quitar el bloqueo... lo cual es un incordio y siempre se olvida y hace que se pierda la protección para evitar editar el mismo fichero desde varias ventanas (personas). Ahora ya va como iba cuando lo hice por primera vez (en HP). SCE Rev 5.3 =========== (From hmr Fri 08 Jun 01:43 MDT 2007) * Agnadido (por fin) el soporte para líneas indefinidamente largas. Ello ha supuesto una revisión exahustiva de los 10 casos que producían el aviso de "line too long" y la sustitución de los buffers de línea estáticos por nuevos buffers dinámicos. Ello incrementa ligeramente (2 buffers) la ocupación de memoria de sce. * Corregido un problema (debido a un bug del AIX) que colgaba las conexiones SSH en los AIX5.3 -> Si estás conectado vía ssh a un AIX5.3 y el programa ejecuta la llamada al sistema "write(1,buf,0)" (escribir 0 bytes en el output) la conexión se cuelga. SCE Rev 5.31 =========== (From hmr Apr 11 19:42:43 CEST 2008) - Añadida la opción (una manera más directa de forzar el autoindent off). -I Autoindent off on entry SCE Rev 5.32 =========== (From hmr Thu Jul 3 00:32:43 CEST 2008) - Corregido el filtraje incorrecto (los dejaba pasar) de los caracteres entre el 0177 y el 0230. SCE Rev 5.33 =========== (From hmr Tue Dec 2 01:12:55 CET 2008) - Parche para soportar el SUPR/INICIO/FIN de los teclados en terminales no-xterm (antes solo funcionaba en terminales xterm que tuvieran el mapa de teclado sugerido para sce). SCE Rev 6.00 ============ (From hmr lun nov 16 19:15:18 CET 2009) - SOPORTE UTF-8 para sce - Esto ha supuesto una revisión profunda del programa. Es posible que queden inestabilidades. - SCE reconoce "al vuelo" los caracteres utf-8 (no transcodifica el fichero al leerlo ni lo recodifica al salvarlo). - Nuevas valores para la variable sce: sce=utf8 # activa el reconocimiento de caracteres utf-8 sce=noutf8 # desactiva el reconocimiento de caracteres utf-8 - Por defecto, sce consulta las variables LC_ALL LC_MESSAGES LANG y, si alguna contiene el string "UTF-8", activa el reconocimiento de caracteres utf-8. - NOTA: para que el ssh de Debian pase correctamente el locale DEFINIR "LC_ALL=...UTF-8". Por defecto el ssh+pam bloquean el paso de la variable "LANG". - Ampliado el soporte del teclado para el gnome-terminal - Ahora funcionan las teclas Ctrl-Up, Ctrl-Down, Ctrl-PrevPag, Ctrl-NextPag SCE Rev 6.01 ============ (From hmr mar sep 15 03:26:00 CET 2015) - Corregida detección utf-8 para que reconozca también los aliases "cc_CC.utf8" además de los "cc_CC.UTF-8". El gdm de las nuevas versiones de Linux lo convierte a ".utf8"!!!. - (¡AL FIN!) Sce se bloqueaba a veces y la única manera de desbloquearlo era tecleando una "q". Esto era debido a un parche para terminales HFT (IBM, aixterm). Sce se quedaba esperando indefinidamente cuando recibía una secuencia ESC-"["-digito. Ahora sólo se espera si es un HFT y sólo espera un máximo de 5 caracteres. - Corregido un bug en "borrar columna" que aleatoriamente destrozaba las líneas. El bug es debido a algún cambio en la librería C que impide copiar un string sobre sí mismo. Se produce a partir de la versión Jessie de Debian (libc 2.19) YA NO funciona: "P[tin]='\000'; strcat(P,&P[tfin]) con tfin>tin" SCE Rev 6.02 ============ (From hmr Thu Aug 6 03:30:04 CEST 2020) - Cosmetica para que no de avisos de compilación: declaradas todas las funciones pertinentes como "forward declarations" - Aumentada la longitud del buffer del nombre de fichero a 2048 (era insuficiente con los mount via sftp:://)