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

This site powered by Phorum.