30 diciembre 2009

El experto cnPack (y 8)

Termino esta serie de artículos dedicados al experto cnPack viendo las últimas opciones que me quedan por comentar, como pueden ser los atajos de teclado o el asistente de escritura de código que viene a sustituir a Code Insight.

EDITOR ENHACEMENTS

Las opciones del editor de código proporcionan una gran cantidad de características tales como la barra de herramientas, los números de línea, los botones de selección, etc. Al pulsar el botón Settings vemos todas estas opciones de la pestaña Code Editor:

El apartado General and Menu Enhacements contiene todas estas opciones:

Add “Close Other Pages” in Editor’s Popupmenu: Si esta opción está activada lo que hará será mostrar esta opción en el menú contextual cuando pinchamos con el botón derecho del ratón sobre el código fuente:

Al pulsar sobre esta opción cerrará todas las pestañas de código menos en la que estamos situados. Con ello liberamos memoria y nos concentramos en lo que estamos haciendo.

Add “Open in Explorer” in Editor’s Popupmenu: esta opción también viene incluida en el mismo menú contextual y si por ejemplo estamos situados en la unidad UPrincipal.pas se vería esta opción:

Al pulsar sobre esta opción, lo que hace es abrir el Explorador de Windows y se va a la carpeta donde está esta unidad y además la selecciona:


Add “Copy Full Path/FileName” in Editor’ss Popupmenu: seguimos con otra opción del mismo menú que se muestra así:

Lo que hace esta opción es copiar en el portapapeles la ruta completa donde se encuentra la unidad que estamos editando.

Add “Select All” in Editor’s Popmenu: Activa la opción de seleccionar todo el código fuente sin tener que recurrir al menú Edit de Delphi.

Add “Shell Context Menu” in Editor’s Popmenu: Al seleccionar esta opción lo que hacemos es provocar el menú contextual que aparece en el Explorador de Windows, por lo que podemos comprimir con RAR u editar con otro programa sin salir de Delphi.

Add CodeCompletion HotKey: Activa el completado automático de código pulsamos la combinación de teclas ALT + BARRA DE ESPACIO.

Y dentro del apartado Read Only Protection tenemos la opción Auto Set Editor to ReadOnly when Opening Files in Directories, la cual protege los archivos de código fuente que intenten editarse fuera de Delphi mientras estamos trabajando con ellos dentro del IDE. Por defecto, protege el directorio donde está alojado nuestro proyecto.

Pasemos a la pestaña Line Number / Toolbar:

En el apartado Editor Toolbar tenemos estas opciones:

Show Toolbar in Editor: activa la visualización de la barra de herramientas principal que aparece en la parte superior del código:


Show Toolbar in BDS Embedded Designe: muestra la barra de herramientas en las versiones modernas de Delphi (RAD Studio).

Wrap Buttons: Si esta activa esta opción, lo que hace es partir la barra de herramientas en varios trozos cuando el editor se estrecha horizontalmente:


El apartado Line Number es el encargado de mostrar los números de línea en la parte izquierda del editor. Tiene estas opciones:

Show Line Number in Editor: Muestra los números de línea. Esta opción es conveniente desactivarla para las versiones modernas de Delphi que ya traen esta característica.

Show Total Line Count: Muestra en la esquina inferior izquierda del editor el número total de líneas de la unidad actual:


Auto Adjust Width of Line Number: Ajusta el ancho de la barra de números de línea con un ancho al número más grande.

Fixed Width of Line Number: El ancho de la barra de números será igual al número de dígitos que le pongamos (por defecto 4).

También tenemos a la derecha dos botones para seleccionar la fuente y el color de los números de línea e incluso del número donde estamos situados.

El apartado Jumping Enhacement no tengo ni idea para que sirve. Se supone que es para los saltos en las búsqueas o algo de eso, pero ni dice nada en el manual y por muchas pruebas que he realizado no noto la diferencia en activarlo o desactivarlo. La verdad es que a veces en el manual de cnPack se despachan agusto escribiendo la ayuda.

La tercera pestaña es Tabset Button:


El apartado Tabset Enhacement contempla las opciones de las pestañas del editor de código y los botones con estas opciones:

Add ‘*’ to Modified File’s Name in Tabset: Al modificar el código fuente después de grabar en disco hará que se muestre un asterisco en la pestaña actual:

Una vez que grabamos desaparecerá.

Close Page by Double-click: Podemos cerrar la pestaña de código actual haciendo doble clic sobre la misma.

Show Shell Menu by Right-click Tabset with Shift or Ctrl: Al pinchar una pestaña con el botón derecho del ratón y manteniendo pulsada la tecla SHIFT o CTRL mostrará el menú contextual del explorador de Windows:

De este modo, podemos comprimir a RAR la unidad sin salir del IDE.

Set Editor Tab to Multi-line: Establece un sistema de pestañas multilinea para cuando tengamos abiertas muchas pestañas y el editor de código de estreche (no funciona en RAD Studio):

Set Editor Tab’s Style to Flat Button: Pone las pestañas con estilo plano (no funciona en RAD Studio):


La sección Selection Button contiene dos opciones:

Show Selection Button when a Block Selected: Mostrar el botón de selección cuando se ha seleccionado un bloque de código:


Show Selection Button Menu Items in Editor Context Menu: Mostrar botón de selección en el menú contextual cuando se ha seleccionado un bloque de código.

Luego tenemos el apartado Clipboard Operations con estas opciones para el portapapeles:

Cut/Copy Token under Cursor when NO Selection: Cuando estamos encima de una palabra y pulsamos CTRL + C ó CTRL + X, copiará o cortará dicha palabra si tener que seleccionarla. Es algo muy cómo para trabajar rápido.

Replace Token under Cursor when Pasting: Si activamos esta opción, al pegar cualquier palabra, reemplazará aquella donde tengamos situado el cursor.

El último apartado es Auto Save y permite guardar las últimas modificaciones de nuestro código cada x minutos.

Y la última pestaña de este formulario de opciones es Others:


Comenzamos con las extensiones de teclado dentro del apartado Keyboard Extend:

Tab/Shift + Tab to Indent/Unindent Selected Block: Al pulsar el TABULADOR desplazamos el bloque de código seleccionado dos espacios a la derecha y al pulsar el TABULADOR + SHIFT lo desplazamos a la izquierda. Esto es mucho más cómodo que las combinaciones de teclas CTRL + K + I y CTRL + K + U que trae Delphi.

Use Shift + Enter to Move to Line End And Enter: Al pulsar la combinación de teclas SHIFT + INTRO cuando entamos en medio de una línea, hace como si hubiésemos pulsado la tecla FIN y luego la tecla INTRO para insertar una línea.

Rename and Replace Identifier under cursor with F2: Supongamos que estamos situados encima del nombre de esta función:

Al pulsar la tecla F2 se nos abrirá un cuadro de diálogo para reemplazar esta palabra por otra:


F3/Shift + F3 to Search the Selected Text
: Si tenemos un trozo de texto seleccionado y pulsamos la tecla F3, buscará hacia abajo la siguiente coincidencia. Si queremos que busque hacia arriba puslamos SHIFT + F3. Esta opción lleva incluida otra debajo llamada Let IDE Remember F3/Shift + F3 Search Text. Lo que hace es memorizar la última búsqueda que hemos hecho en el IDE de Delphi, por si se nos ocurre buscar con CTRL + F.

Auto Input Matched Bracket: Si activamos esta opción, al abrir un paréntesis, corchete o llave, automáticamente escribirá al lado la de cierre. Comodísimo.

Extend Home to Move Between Line Head and First and First No-WhiteSpace: si activamos esta opción y la que tenemos debajo, cuando pulsemos la tecla INICIO, el cursor se situará al comienzo de la línea, independientemente si está más desplazada a la derecha o a la izquierda. De otro modo, se iría a la izquierda del todo. Es ideal para ir al comienzo de una línea que esta bastante identada.

Put to Line End when Enter “;” in Source Code: Coloca el código de final de línea automáticamente cuando introducimos “;” al final de una línea que no es de comentario. Visualmente no se nota nada.

Auto Add “end” when Pressing Enter after “begin”: Añade la palabra end cuando pulsamos la tecla INTRO después de la palabra begin. Lo mismo que hacen las últimas versiones de Delphi.

Y terminamos este formulario viendo el apartado Auto Indent donde tiene una opción que permite desplazar el cursor dos espacios a la derecha cuando pulsamos INTRO después de las palabra reservadas como begin, const, private, etc.

IDE MAIN FORM ENHACEMENTS

Esta opción añade características avanzadas a la paleta de componentes de Delphi 7:


Dentro del apartado Component Palette Extensión Settings tenemos estas opciones:

Set Component Palette to MultiLine: Al activar esta opción podemos visualizar a la vez todas las pestañas de los componentes:


Set Component Palette’s Style to Flat Button: Cambia el estilo de las pestañas de la paleta de componentes y las deja planas:


Wrap Tabs Menu when too Long (Delphi 7 Below Only)
: En las versiones de Delphi 7 e inferiores hace que el menú Tabs que aparece al pinchar con el botón derecho del ratón sobre la pestaña de componentes se fragmente en varias partes para facilitar su visualización en monitores con poca resolución:


Add “Search Component” Button in Palette (Delphi 7 Below Only)
: Activa en versiones de Delphi 7 e inferiores la búsqueda avanzada que aparece en la parte derecha de la paleta de componentes:


Lock IDE Toolbar to Disable Drag
: Desactiva la posibilidad de mover las barras de herramientas que están junto al formulario que estamos editando para evitar el error de arrastrarlas y perder su visualización.

En el apartado Other Settings tenemos la opción Auto Display ShortCut of IDE Main Menu que fuerza al menú de Delphi a mostrar todas las combinaciones de teclas que estén asociadas a cada opción.

Y por último, tenemos el apartado Main Form Settings con la opción Move Following Menu Ítems into Sub Menu que permite que aparezca en el menú principal de Delphi la opción Wizards para que llame a estos asistentes:


CPU WINDOW ENHACEMENTS

Esta opción proporciona características avanzadas relacionadas la ventana de la CPU. Añade dos opciones al menú contextual que aparece en la ventana de la CPU:


En sus opciones podemos elegir el número de líneas que queremos copiar y si queremos llevarlas al portapapeles:


CAPTION BUTTONS ENHACEMENTS

Esta opción añade nuevos botones a las ventanas de Delphi que son del mismo tipo que el inspector de objetos:


Estas son sus opciones:


En el apartado Buttons podemos visualizar los botones:

Stay of Top: Hace que la ventana siempre esté delante de las demás.

Roll: Encoge la ventana para dejar sólo la barra de título:

Options: llama a esta ventana de opciones.

Luego están las opciones:

Ignore Caption Text Width: Independientemente de la longitud del título de la ventana siempre mostrará los botones:

Si quitamos esta opción irá quitando botones intentando mantener siempre visible el título de la ventana:

Animate Rolling: hace que la opción de encoger el formulario verticalmente lo haga con una animación tipo persiana.

En el apartado Filter Settings podemos filtrar para que estos botones especiales no aparezcan en ciertas ventanas de Delphi como el formulario principal o el editor de código. Si desactivásemos esta opción aparecería esto:


CODE INPUT HELPER

Aquí tenemos todas las opciones relacionadas con el asistente que nos aparece al escribir el código fuente que viene a reemplazar a Code Insight de Delphi:

El asistente que trae por defecto Delphi sólo nos ayuda cuando escribimos un punto después del nombre de un objeto o registro, aunque también podemos pulsar la combinación de teclas CTRL + ESPACIO para que nos de sugerencias en cualquier momento. Pero con cnPack, podemos hacer que las sugerencias de código sean automáticas mediante estas opciones:

El apartado Auto-Settings contiene las opciones más importantes:

Auto Popup Input Helper: Al activar esta opción nos aparecerán todas las sugerencias de funciones, procedimientos u objetos a los pocos milisegundos de comenzar a escribir. Es importante que esta opción este activada para que funcione todo lo demás.

Popup alter How Many Characters Input: en este campo especificamos el número de caracteres que debemos escribir sin pausa para que se active el asistente de sugerencias de código.

Intelligent Popup: Si esta activada esta opción, conforme vayamos escribiendo un comando, si resulta que es el único que está en la lista desaparecerá el asistente. Si no es así, entonces seguirá activa la lista mostrando en rojo el candidato.

Replace Code Insight when Later is Disabled: Esta opción deshabilita el asistente Code Insight que trae el propio Dephi para que actúe cnPack en libertad.

Auto Popup alter key Sequences: permite activar el asistente después de escribir cualquier carácter de comparación (>,:=, <, etc.):


Shortcut to Toggle Auto-Popup: permite activar o desactivar este asistente con la combinación de teclas SHIFT + F2 a menos que elijamos otra.

Shortcut to Popup List Manually: Permite asociar una combinación de teclas para llamar al asistente sin tener que esperar o por si se ha cerrado porque hemos pulsado la tecla ESCAPE o hemos movido el puntero del ratón a otro lugar.

Disable Input Helper when IME Oponed: Deshabilita el asistente cuando está abierto el IME (Input Method Editor - Editor de entrada de métodos).

Pasamos al apartado Output-Settings con estas opciones:

Input Current Item when Pressing: Cuando tenemos abierta la lista de sugerencias a escribir, si tecleamos los siguientes caracteres las introducirá en el código fuente además del carácter tecleado: %&,;()[]<>=.

DO NOT Popup alter these characters: Al contrario de la opción anterior, aquí podemos elegir con que caracteres no queremos que se copie de la lista al código fuente.

Symbol Output Style: Esta opción determina como queremos que realice la búsqueda de sugerencias cuando estamos con el cursor encima de un indentificador.

Allow Inputting Current Item by Pressing Space: Con esta opción podemos hacer que al estar la lista abierta, cuando pulsamos la barra de espacio la cierra e inserta lo que hemos elegido. Si además activamos la opción Ignore Space Char after Inputting Current Item hacemos que después de introducir en el código el elemento elegido no haga un espacio a continuación.

Select and Input Middle-Matched Symbol Only when Pressing Enter: Si el elemento actual coindide con el que estamos escribiendo, permitirle reemplazarlo por el de la lista al pulsar la tecla Intro.

Auto Line Feed after Keyword when Pressing Enter: Si hemos elegido un elemento de la lista pulsando la tecla Intro, insertamos una nueva línea debajo de la misma.

Auto Insert Brackets for Function Having Parameters: Si el elemento de la lista que hemos elegido es un procedimiento o una función, añade los paréntesis automáticamente.

Vamos con la segunda pestaña llamada Line Settings, que es la encargada de configurar como se muestra la lista de sugerencias:

El apartado Display Settings tiene estas opciones:

List sorted by: elegimos el criterio por el que vamos a ordenar los elementos de la lista.

Min Length of Symbol: Elegimos la longitud mínima (por defecto 1) de los elementos que queremos que aparezcan.

Reserved Words: Seleccionamos la capitalización (pasar a mayúsculas la primera letra) de las palabras reservadas: minúsculas, mayúsculas o sólo la primera letra.

Display Middled-Matched Symbols: Mostrar los símbolos asociados al tipo de elemento de la lista. Los símbolos son plantillas de código que permiten acelerar la inserción de código. Esta por ejemplo el símbolo beg que equivale a begin .. end.

Adjust Priority Automatically according to the Frequency: Se mostrarán los elementos más utilizados al principio de la lista.

Remove Duplicate Symbols: Se eliminaran de la lista los elementos con el mismo nombre.

Use the Compatible Way to Obtain Symbols: Si el asistente crea problemas, cuelgues o incompatibilidades con Delphi, debemos activar esta opción.

Prefetch Symbols List when Opening Project: Si activamos esta opción hacemos que el asistente precargue todo lo que pueda para que luego su ejecución sea más rápida. Aunque es recomendable tener buen procesador y memoria RAM.

El apartado Content Settings permite seleccionar los tipos de objeto que queremos ver al abrir la lista de sugerencias. Por defecto están activados todos.

Y la última pestaña de este formulario es Customize Symbols y nos va a permitir personalizar la lista de sugerencias:

Aquí podemos pulsar el botón Add para añadir nuevos símbolos (plantillas) a las que tiene. Por ejemplo, si escribimos beg nos aparecerá este asistente:

Al pulsar Intro nos introducirá automáticamente las sentencias begin y end:

Al seleccionar una plantilla de la lista podemos ver como se crea en la parte inferior de la ventana:


VERSION ENHACEMENTS

Estas opciones proporcionan mejoras para versiones de Delphi 6 o inferiores en lo que respecta a la compilación:


DUNIT TEST CASE

Permite crear nuevas unidades para realizar pruebas unitarias utilizando DUnit. Se crean seleccionando File -> New -> Other:


Ver http://dunit.sourceforge.net/ para más información aunque las últimas versiones de Delphi ya traen pruebas unitarias.

INI READER AND WRITER

Permite generar nuevas unidades para la escritura y lectura archivos INI cuando seleccionamos File -> New -> Other:


CNMEMPROF PROJECT

Activa la posibilidad de crear nuevos proyectos CnMemProf:


CONCLUSIONES

Seguro que me he dejado en el tintero alguna característica más que viene incluida en cnPack pero como habéis visto, este experto es gigante y no me da tiempo para más, ya que tengo ganas de abarcar nuevos temas. El único inconveniente que le he encontrado a este experto es que en máquinas con 1 GB de RAM o menos va bastante lento, sobre todo con proyectos que tienen cientos de formularios (también depende de la versión de Delphi). De todas formas, lo considero casi imprescindible para aumentar la productividad programando.

Pruebas realizadas en Delphi 7 y RAD Studio 2007.

Publicidad