Actualizado el 14-01-2007
versión para imprimir
Capturando texto
La función normal de un plugin, como extensión del editor, será capturar texto del documento, manipularlo de alguna forma y devolverlo al editor
La forma normal en la que el plugin se comunica con el editor es a través de las funciones hkp_DataGet() (captura información del editor) y hkp_DataAdd() (envia información)
MODE_IN_FULL_TEXT
Al hablar de la función htp_Register decíamos que habia una serie de modos o declaraciones que preparaban al plugin para recibir texto del editor:
hkp_DataAddInt(pDataOut, "MODE_IN_TEXT_FULL", 1); //El plugin capturará todo el texto del documento abierto en el editor.
Es en la función main donde hemos de capturar ese texto y manipularlo:
function hkp_Main(pDataIn, pDataOut) { var sFullText = ""; if( hkp_DataGet(pDataIn, "INPUT", &sFullText) ) { // aqui el código que manipula el texto // sFullText es una variable que contiene todo el texto del editor // en una cadena. } hkp_DataAddInt(pDataOut, "MODE_OUTPUT", 1); }
MODE_IN_TEXT_SELECTED
En la función register:
hkp_DataAddInt(pDataOut, "MODE_IN_TEXT_SELECTED", 1);
y en la función main:
function hkp_Main(pDataIn, pDataOut) { var sSelect = ""; var sOut = ""; sSelect = hkp_DataGet(pDataIn, "INPUT_SELECTION", &sSelect); if(!sSelect || ("" == sSelect)) { Alert("No text is selected", "Warning"); } // hacemos algo con el texto seleccionado // y lo devolvemos al editor: sSelect = Sout; hkp_DataAddInt(pDataOut, "MODE_OUTPUT", 1); hkp_DataAdd(pDataOut, "OUTPUT", sOut); }
Otros modos de texto
hkp_DataGet(pDataIn, "INPUT_WORD_AT_CURSOR", &sWord); // captura la palabra bajo el cursor hkp_DataGet(pDataIn, "INPUT_FILE", &sFilePath); // captura el nombre y path // puedes pasar el nombre a una funcion para abrir el archivo // y capturar el contenido. // si el archivo esta modificado sin grabar los cambios // muestra nombre y patch del fichero temporal, no del original. hkp_DataGet(pDataIn, "FILE_NAME", &sFilename); // path + nombre del archivo *grabado* // ignora los cambios que hayas hecho que no esten grabados hkp_DataGet(pDataIn, "INPUT_TAG_AT_CURSOR", &sTag); // captura la etiqueta bajo el cursor hkp_DataGet(pDataIn, "INPUT_LINE_AT_CURSOR", &sCurrLine); // captura la linea bajo el cursor