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.

11 diciembre 2009

El experto cnPack (7)

Sigamos viendo todas las posibilidades que nos ofrecen las opciones del experto cnPack.

EXPLORER WIZARD

Estas opciones permiten configurar el pequeño explorador de Windows que tiene cnPack y que podemos abrir seleccionando en el menú superior cnPack -> Explorer…

Como explorador, hay que reconocer que es bastante rudimentario, aunque es muy rápido a la hora de recorrer las carpetas del disco duro. Aunque al contrario de un explorador normal, en este explorador los archivos a buscar están filtrados según estas extensiones:

Esta ventana se abre pulsando el botón del martillo (Filter) y seleccionando la opción Customize Filter. Dentro del apartado de opciones de Explorer Wizard lo único que podemos configurar es una combinación de teclas para abrirlo rápidamente.

HISTORIAL FILES SNAPSHOT

Aparte del histórico de archivos que puedan tener las versiones superiores a Delphi 7, cnPack también conserva un histórico de los archivos que hemos manejado en el IDE. Este histórico se ve pulsando el botón Settings de este apartado:

Podemos seleccionar todos los archivos y pulsar el botón Remove para limpiar el histórico.

PROCEDURE LIST WIZARD

Mediante esta opción solo podemos asignar una tecla rápida para acceder a la ventana de búsqueda de procedimientos que vimos anteriormente:


USES UNIT CLEANER

El limpiador de unidades está dentro de la opción cnPack -> Uses Cleaner y como vimos anteriormente se utilizaba para eliminar del apartado uses aquellas unidades que ya no se utilizan, sobre todo, componentes insertados con anterioridad que han sido reemplazados por otros:

En esta opción tan solo podemos asignar una combinación de teclas.

IDE ENHACEMENTS SETTINGS

Activa las opciones avanzadas dentro del IDE. Lo he desactivado y realmente no sé lo que quita. En la ayuda tampoco viene nada sobre esta opción.

IDE CONFIG BACKUP/RESTORE BACKUP TOOL

Si asignamos una tecla rápida a esta opción podemos llamar rápidamente al asistente de creación de copias de seguridad:


SCRIPT WIZARD

En este apartado configuramos mediante el botón Settings las opciones de la librería de script:


FAST CODE IDE OPTIMIZER

Si activamos esta opción entonces optimizará el programa que compilamos para que utilice una nueva versión del motor de memoria añadiendo además la posibilidad de utilizar las nuevas instrucciones de los procesadores: MMX, SSE, SSE2, etc. Aunque según sus autores, esta característica no funciona en la versión de Delphi 5.

FORM DESIGNER ENHACEMENTS

Esta opción activa o desactiva la barra lateral de botones que vemos en Delphi 7 a la izquierda del formulario:

Al entrar en su apartado de opciones podemos configurar todo esto:


Estos son sus apartados:

Float Toolbar Settings: Mediante esta opción podemos añadir o quitar barras laterales al lado del formulario. Al pulsar el botón Add podemos crear una nueva barra de herramientas seleccionando todos los botones que queramos:

En la parte inferior izquierda de la ventana de opciones podemos hacer que la barra que hemos seleccionado en la lista de arriba sea visible o invisible además de especificar su posición y su separación respecto al formulario:

Y en la parte derecha de la misma ventana (Float Property Bar) elegimos las propiedades de la barra flotante que aparece en la parte superior del formulario:

Y al igual que con las barras de herramientas anteriores podemos elegir su posición, separación, etc.

SOURCE HIGHLIGHT ENHACEMENTS

Esta sección es la encargada de configurar el modo de iluminar con colores el código fuente del editor:

Dentro del apartado Bracket HighList configuramos la iluminación de los paréntesis:

Enable Highlight Matched Brackets: Si esta opción está activada se iluminarán los paréntesis o corchetes cuando estemos encima de ellos:
También se puede elegir el color de iluminación y el color de fondo.

Bracket Bold: Utilizará la fuente en negrita al dibujar el paréntesis.

Hightlight when Cursor is Between Brackets: Se iluminarán los paréntesis cuando el cursor está dentro de los mismos, aunque no esté encima del paréntesis de apertura o de cierre.

Dentro del apartado Code Structure Highlight configuramos la iluminación de las estructuras de código con estas opciones:

Enable Background Highlight Keyword Structure at Cursor: esta opción activa la iluminación de las palabras reservadas que engloban un bloque de código al situarnos en la misma línea:

Enable Background Highlight Current Identifier at Cursor: si activamos esta opción entonces también iluminará cualquier identificador (variables, procedimientos, etc.):

Enable Background Highlight Current Line: ilumina toda la línea donde estamos situados (sólo en Delphi 7 porque en las versiones superiores ya lo hace el propio IDE):

Enable Highlight Keyword Structure: ilumina de un color distinto a las palabras reservadas encargadas de las estructuras de datos. Por ejemplo, en la definición de una clase:

Enable Lines: las líneas verticales que dibuja permiten de un solo vistazo saber si la identación de código es correcta:

A la derecha tenemos el botón Line Settings donde seleccionamos el tipo de líneas a dibujar:

Highlight Range: aquí se elige si queremos que la iluminación de colores sea en toda la unidad, en el procedimiento o función donde estamos situados, en el bloque de código actual, etc.

Colors by Level: se pueden elegir los colores en cada nivel de identación.

Highlight Delay: por defecto viene seleccionado para que se ilumine el código inmediatamente, pero también se puede configurar para que lo haga cada x milisegundos o si queremos hacerlo pulsando una combinación de teclas.

Disable Hightlight when Unit Lines exceeds: viene configurado para que si la unidad de código donde estamos situados supera las 40.000 líneas entonces desactive la iluminación para evitar que Delphi se ralentice (para máquinas antiguas con poca potencia).

En el próximo artículo terminaré de hablar de las opciones que nos quedan.

Pruebas realizadas en Delphi 7 y Delphi 2007.

Publicidad