Difference between revisions of "SynEdit/es"

From Lazarus wiki
Jump to navigationJump to search
(Amplié la información de SynEdit porque estaba muy pobre.)
Line 1: Line 1:
 
{{SynEdit}}[[category:Castellano]][[category:Español]]
 
{{SynEdit}}[[category:Castellano]][[category:Español]]
 
   SynEdit es un paquete que contiene un componente editor de código fuente llamado TSynEdit, varios resaltadores de sintaxis y otros componentes utilizados para la edición de código fuente. Está basado en SynEdit 1.3 a partir del cual fué adaptado y extendido con características tales como soporte UTF-8 y plegado de código (code folding).
 
  
 
== SynEdit ==
 
== SynEdit ==
Line 7: Line 5:
 
   SynEdit es un paquete de Lazarus que incluye diversos componentes orientados a la implementación de editores de texto para diversos lenguajes y sintaxis. Estos componentes se pueden encontrar dentro de la paleta de componentes en la solapa 'SynEdit'.
 
   SynEdit es un paquete de Lazarus que incluye diversos componentes orientados a la implementación de editores de texto para diversos lenguajes y sintaxis. Estos componentes se pueden encontrar dentro de la paleta de componentes en la solapa 'SynEdit'.
  
Contiene un componente editor de código fuente llamado TSynEdit, varios resaltadores de sintaxis y otros componentes utilizados para la edición de código fuente.  
+
   Contiene un componente editor de código fuente llamado TSynEdit, varios resaltadores de sintaxis y otros componentes utilizados para la edición de código fuente.  
  
Frecuentemente se usa el término "SynEdit" para referirse específicamente al componente TSynEdit (del paquete SynEdit) en lugar de referirse a todo el paquete en si.
+
   Frecuentemente se usa el término "SynEdit" para referirse específicamente al componente TSynEdit (del paquete SynEdit) en lugar de referirse a todo el paquete en si.
  
Está basado en el proyecto independiente SynEdit [[http://synedit.sourceforge.net/]], tomado en la versión 1.3 a partir del cual fue adaptado y extendido con características tales como soporte UTF-8 y plegado de código (code folding). A pesar de que el SynEdit de Lazarus comparte mucho del código original del SynEdit original, la cantidad de cambios introducidos desde su bifurcación, hacen que el actual SynEdit de Lazarus sea incompatible con el SynEdit original.
+
   Está basado en el proyecto independiente SynEdit [[http://synedit.sourceforge.net/]], tomado en la versión 1.3 a partir del cual fue adaptado y extendido con características tales como soporte UTF-8 y plegado de código (code folding). A pesar de que el SynEdit de Lazarus comparte mucho del código original del SynEdit original, la cantidad de cambios introducidos desde su bifurcación, hacen que el actual SynEdit de Lazarus sea incompatible con el SynEdit original.
  
Está licenciado bajo los mismos términos que el SynEdit original (MPL o GPL).
+
   Está licenciado bajo los mismos términos que el SynEdit original (MPL o GPL).
  
 
== Características  ==
 
== Características  ==
Line 28: Line 26:
 
* Soporta selección sencilla en modo columna.
 
* Soporta selección sencilla en modo columna.
 
* Permite trabajar con complementos.
 
* Permite trabajar con complementos.
 
  
 
== SynEdit en el IDE ==
 
== SynEdit en el IDE ==
  
   El componente SynEdit es un paquete que ya viene integrado con Lazarus debido a que lo utiliza el propio IDE. Por lo tanto, el paquete no puede ser removido de la lista de instalación.  Es por ello que no existe un fichero .lpk.
+
    El componente SynEdit es un paquete que ya viene integrado con Lazarus debido a que lo utiliza el propio IDE. Por lo tanto, el paquete no puede ser removido de la lista de instalación.  Es por ello que no existe un fichero .lpk.
  
Al estar integardo en el IDE, se garantiza su estabilidad y madurez. Además podemos verlo trabajando en el mismo IDE y así conocer sus funcionalidades y potencialidades.
+
    Al estar integardo en el IDE, se garantiza su estabilidad y madurez. Además podemos verlo trabajando en el mismo IDE y así conocer sus funcionalidades y potencialidades.
  
= Synedit 2.0.5 port  =
+
== Synedit 2.0.5 port  ==
  
Existe una versión alterna de SynEdit, portada desde la versión más reciente del original SynEdit 2.0.5:
+
    Existe una versión alterna de SynEdit, portada desde la versión más reciente del original SynEdit 2.0.5:
  
 
http://wiki.lazarus.freepascal.org/SynEdit/port
 
http://wiki.lazarus.freepascal.org/SynEdit/port

Revision as of 04:26, 10 October 2013

Deutsch (de) English (en) español (es) français (fr) 日本語 (ja) polski (pl) русский (ru) 中文(中国大陆)‎ (zh_CN)

SynEdit

   SynEdit es un paquete de Lazarus que incluye diversos componentes orientados a la implementación de editores de texto para diversos lenguajes y sintaxis. Estos componentes se pueden encontrar dentro de la paleta de componentes en la solapa 'SynEdit'.

   Contiene un componente editor de código fuente llamado TSynEdit, varios resaltadores de sintaxis y otros componentes utilizados para la edición de código fuente.

   Frecuentemente se usa el término "SynEdit" para referirse específicamente al componente TSynEdit (del paquete SynEdit) en lugar de referirse a todo el paquete en si.

   Está basado en el proyecto independiente SynEdit [[1]], tomado en la versión 1.3 a partir del cual fue adaptado y extendido con características tales como soporte UTF-8 y plegado de código (code folding). A pesar de que el SynEdit de Lazarus comparte mucho del código original del SynEdit original, la cantidad de cambios introducidos desde su bifurcación, hacen que el actual SynEdit de Lazarus sea incompatible con el SynEdit original.

   Está licenciado bajo los mismos términos que el SynEdit original (MPL o GPL).

Características

  • Es un componente que no requiere de dependencias externas (a diferencia de Scintilla).
  • Es de ejecución rápida. Está optimizado para manejar bloques grandes de datos.
  • Trabaja en codificación UTF-8.
  • Permite implementar coloreado de sintaxis, usando resaltadores predefinidos o creando nuevos resaltadores.
  • Soporta las opciones de "Deshacer" y "Rehacer"
  • Implementa funciones integradas de Búsqueda/Reemplazo.
  • Soporta completado y autocompletado de código.
  • Soporta numeración de líneas.
  • Soporta plegado de código (folding).
  • Soporta selección sencilla en modo columna.
  • Permite trabajar con complementos.

SynEdit en el IDE

    El componente SynEdit es un paquete que ya viene integrado con Lazarus debido a que lo utiliza el propio IDE. Por lo tanto, el paquete no puede ser removido de la lista de instalación. Es por ello que no existe un fichero .lpk.

    Al estar integardo en el IDE, se garantiza su estabilidad y madurez. Además podemos verlo trabajando en el mismo IDE y así conocer sus funcionalidades y potencialidades.

Synedit 2.0.5 port

    Existe una versión alterna de SynEdit, portada desde la versión más reciente del original SynEdit 2.0.5:

http://wiki.lazarus.freepascal.org/SynEdit/port

code: https://github.com/rnapoles/

Ejemplos

   Se puede encontrar un ejemplo en lazarus/examples/synedit1.lpi.

Como añadir soporte para Copy, Paste, Cut, Undo, Redo, etc

   Estas características se pueden implementar utilizando mandatos SynEdit.

 uses
  ...
  SynEdit, SynEditKeyCmds;

 procedure TfrmPrincipal.HandleCodigoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
 begin
  if (Shift = [ssCtrl]) then
  begin
    case Key of
    VK_C: synCodigo.CommandProcessor(TSynEditorCommand(ecCopy), ' ', nil);
    VK_V: synCodigo.CommandProcessor(TSynEditorCommand(ecPaste), ' ', nil);
    VK_X: synCodigo.CommandProcessor(TSynEditorCommand(ecCut), ' ', nil);
    end;
  end;
 end;

Menú con Deshacer y Rehacer

 procedure TForm1.MenuRehacer(Sender: TObject);
 begin
  SynEdit1.Redo;
 end;

 procedure TForm1.MenuDeshacer(Sender: TObject);
 begin
  SynEdit1.Undo;
 end;

Menus con Duplicar e intercambiar líneas

 //Duplicar Línea
 procedure TForm1.MenuDuplicarLinea(Sender: TObject);
 begin
  SynEdit1.Lines.Insert(CustSynEdit().CaretY,CustSynEdit().LineText);
 end; 

 //Intercambiar Línea hacia Arriba
 procedure TForm1.MenuLineaArriba(Sender: TObject);
 begin
  if CustSynEdit.CaretY -1 >= 1 then
   begin
    CustSynEdit.Lines.Exchange(CustSynEdit.CaretY -1 ,CustSynEdit.CaretY-2);
    CustSynEdit.CaretY:=CustSynEdit.CaretY-1;
   end;
 end;

 //Intercambiar Línea hacia Abajo
 procedure TForm1.MenuLineaAbajo(Sender: TObject);
 begin
  if ( CustSynEdit.CaretY + 1 <= CustSynEdit.Lines.Count) then
   begin
    CustSynEdit.Lines.Exchange(CustSynEdit.CaretY-1,CustSynEdit.CaretY);
    CustSynEdit.CaretY:=CustSynEdit.CaretY+1;
   end;
 end;

Insertar caracteres en la posición actual

 procedure TForm1.Button1Click(Sender: TObject);
 begin
  SynEdit1.CommandProcessor(ecChar,'a', nil); //Inserta a 
  SynEdit1.SetFocus;
 end;

Completamiento de Código con SynCompletion

 Uses
 ... ...
 LCLType,//Para poder usar VK_SPACE
 syncompletion;

 ... ... ....
 var
 Completion:TSynCompletion;
 begin
  Completion:=TSynCompletion.Create(Self);
  Completion.Editor:=SynEdit;
  Completion.ShortCut:=Menus.ShortCut(VK_SPACE, [ssCtrl]);   
  Completion.ItemList.add('Arc( )');
  Completion.ItemList.add('Axes( )');
  Completion.ItemList.add('Bezier( )');
  Completion.ItemList.add('Cercle( )');
 end;

Desplegar TSynCompletion en la posición actual

 procedure TForm1.Button1Click(Sender: TObject);
 var p:TPoint;
  begin
   with  SynEdit1  do
    begin
      P := Point(CaretXPix,CaretYPix + LineHeight);
      P.X:=Max(0,Min(P.X,ClientWidth-Completion.Width));
      P := ClientToScreen(p);
    end;
   Completion.Execute('',p.x,p.y);  
  end;

Documentación

   El usuario bubulemaster ha realizado un documento sobre SynEdit disponible aquí

   Está en francés, no se si más adelante lo traducirá al inglés.

Más desarrollos, discusiones

  • RTL (de derecha a izquierda (Right-To-Left)): comenzado por Mazen
  • Selección automática de fuente monoespacio: Por el momento SynEdit comienza con el tipo de fuente 'courier'. Pero sería mejor, si SynEdit comenzara con una tipografía monoespaciada (es decir: todos los caracteres tienen la misma anchura). Por ahora el LCL TFont no aporta tal propiedad y el usuario tiene que escoger la fuente correcta.
  • Selección automática de fuente UTF-8: Igual que el caso anterior de monoespaciado, pero con una cadena UTF-8 de fuente, de modo que por ejemplo umlaute se muestra correctamente. Por ahora el usuario tiene que elegir la fuente correcta.
  • Teclas muertas. La mayoría de los teclados soportan pulsar una o más teclas para crear un carácter especial (como en los caracteres acentuados (á,é,í,...) o con el umlaut).
  • Rediseño del componente SynEdit. El objetivo principal es una presentación y un navegación por el texto más fiable. Un enfoque más modular para permitir una mejor integración de las extensiones, y por controles especializados, para su utilización fuera de Lazarus.