Página 1 de 1

SciTE, Includes y plantillas

Publicado: 08 Ene 2012, 10:52
por jamaro
¡Buenos días y Feliz Año!

En ocasiones me he hecho estas preguntas sencillas y las pongo en este subforo por si tienen respuesta sencilla: :smt003

1. He visto muchos códigos aquí y/o en el foro inglés que cuando los pongo en mi SciTE y los ejecuto, a pesar de tener varios #include siempre les falta alguno ¿Hay alguna manera de que en SciTE se utilice algunos include "por defecto" aunque no estén puestos explícitamente en el código?

2. En muchas ocasiones tenemos partes de código que utilizamos en prácticamente todos nuestros programas (Ej: región de opciones, de variables, de includes, algunas funciones,...) ¿Existe en SciTE alguna manera de crear un archivo nuevo a partir de una plantilla que contenga lo que deseamos? ¿Sólo sería posible hacerlo abriendo el archivo plantilla y "guardando como" con otro nombre distinto?

Saludos

Re: SciTE, Includes y plantillas

Publicado: 08 Ene 2012, 21:02
por BasicOs
jamaro escribió: 1. He visto muchos códigos aquí y/o en el foro inglés que cuando los pongo en mi SciTE y los ejecuto, a pesar de tener varios #include siempre les falta alguno ¿Hay alguna manera de que en SciTE se utilice algunos include "por defecto" aunque no estén puestos explícitamente en el código?
¡Buenos días y Feliz 2012!

Puedes hacer un fichero o script include de includes, un includetodos donde puedes poner los 10 o 20más usados
Lo único que va a afectar que en vez de pesar 500 kb pese 800 kb, y al nivel de ese tamaño y del 2012 es algo INFIMO y riduculo como tamaño. Si las recopilas puedes publicarla en Scripts como un Script más.

Por otro lado, Yo suelo usar la ayuda como almacen de plantillas (los ejemplos que vienen), entonces lo que hago es simplemente copiar y pegar el ejemplo, y el ejemplo te incluye el include o libreria que necesitamos.
Yo de hecho no me APRENDO NADA al 100 DE MEMORIA, :smt028 :smt028 :smt017 :smt017 simplemente se que con un algoritmo que cree, deben existir funciones que lo hagan, y lo que si me acuerdo son las funciones aproximadas, o las busco con el buscador del fichero de la ayuda.chm, :smt018 realmente no veo lo de memorizar todas las funciones y sintaxis, pero si lo de memorizar sub-algoritmos, o estructuras típicas que resuelven, librerias genericas, o problemas y soluciones. Además ya esta el intellisense.
:smt026
2. En muchas ocasiones tenemos partes de código que utilizamos en prácticamente todos nuestros programas (Ej: región de opciones, de variables, de includes, algunas funciones,...) ¿Existe en SciTE alguna manera de crear un archivo nuevo a partir de una plantilla que contenga lo que deseamos? ¿Sólo sería posible hacerlo abriendo el archivo plantilla y "guardando como" con otro nombre distinto?
Ahora tenemos el LUA y el SCITE se puede manejar y automatizar POR dentro CON un script muy parecido a autoit, que te puede preguntar si quieres hacer templates y luego elegir de una familia, u luego un fichero de ejemplo. Puedes generar el tópico a ver si alguien se anima a hacerlo. Dentro de la carpeta del Scite te viene otra carpeta LUA. Hay algunos ejemplos dentro de esta carpeta que hacen algunas automatizaciónes :).
Otra manera sería incluir esto dentro del fichero includetodos, e incluir no solo los includes si no también, una librería de funciones que se llame eg funcpropiasMasFrecuentes (que al y al cabo es otro include), si tienes algo así podemos verlo.
Salu22:)

Re: SciTE, Includes y plantillas

Publicado: 09 Ene 2012, 12:46
por Ximorro
1. Este problema surge porque probablemente son scripts viejos y antes los include estaban organizados de otra manera.
Me temo que la mejor opción es poner sólo los include que te falten, de lo contrario como dice BasicOS se crea un ejecutable más grande, pero es que también en desarrollo sales perdiendo porque cada compilación (por ejemplo para ejecutar o comprobar sintaxis, aunque no hagas exe) tardará bastante más, porque analiza y compila todos los include.

Como ayuda rápida han cambiado las configuraciones de constantes. Prueba a poner WindowsConstants.au3, y si el programa tiene GUI también GUIConstantsEx.au3. Muchas veces sólo con esos se solucionan los problemas de falta de includes.

2. Pues sí que hay algo aunque yo no lo he usado y no sé cómo funciona, pero te lo comento por si te es útil. Se trata de los "snippets", que son justamente eso que buscas, trozos de código que usamos mucho o rutinas cortas útiles.
Con Scite en las herramientas para Autoit viene un "Snippet Holder" que es para eso, pero como digo no lo he usado así que no puedo ayudarte más (yo acabo haciendo copy-paste de otros programas que ya tengo hechos). Si lo usas y lo ves interesante nos lo dices. :smt003

Para otras cosas más simples también se puede usar el sistema de autocompletado de Scite, por ejemplo pon cw seguido de un espacio. O fornext seguido de espacio. Fíjate que hasta el cursor se coloca donde debes seguir escribiendo. Son como plantillas de pequeños trozos de código.
Puedes ver qué opciones de autocompletado hay (y añadir las tuyas propias) en el archivo "abbrev.properties", que no hace falta ni buscar, lo puedes abrir desde Scite en el menú Options->Open Abbreviations File.

Hay una lista de las palabras clave usadas como abreviaciones, que puedes usar por si creas nuevas, para no repetir, se accede con Options->Open au3.keywords.abbreviations.properties

Re: SciTE, Includes y plantillas

Publicado: 09 Ene 2012, 22:13
por jamaro
Gracias por las respuestas.

Respecto a los includes, el proceso que suelo seguir es el mismo:
1. Desde SciTE > Ejecutar (F5)
2. Al recibir errores del Au3Check voy mirando en el archivo de ayuda de Autoit, busco, normalmente suele dar error en los estilos de controles, tipo $WS_, $BS_,.... y añado manualmente el include que es necesario. ( Basicos soy un asiduo del archivo de ayuda, que por otro lado, me parece que está muy bien hecho y explicado)

Lo que me llama la atención es que se publique el código en los foros, que tiene incluso otros includes necesarios, y se supone que al usuario que lo publica le funciona.

Quizás sea lo que comenta Ximorro sobre la antigüedad de los códigos.
Ahora tenemos el LUA y el SCITE se puede manejar y automatizar POR dentro CON un script muy parecido a autoit, que te puede preguntar si quieres hacer templates y luego elegir de una familia, u luego un fichero de ejemplo.
Basicos desconozco esa utilidad de automatización ¿algún enlace de ayuda?
El tema de "includetodos" está bien y es posible que lo aplique

Ximorro, acabo de utilizar por primera vez las abreviaturas en SciTe ¡Ese menú Opciones desconocido!. Sobre Snippet Holder, yo hago como vosotros, copiar-pegar de ayuda, otros programas propios o de foros/webs.

Voy a echar un vistazo a la página se SciTe a ver si me aclaran cosas sobre los archivos del menú opciones :-)

Re: SciTE, Includes y plantillas

Publicado: 10 Ene 2012, 18:42
por BasicOs
Esto es en lua para introducir la plantilla (mira en Scite\lua\Autoittools.lua:
local res = "; #" .. outStart .. "# " .. string.rep("=", defLineMax - 5 - outStart:len()) .. nl
res = res .. "; Name ..........: " .. outName .. nl
res = res .. "; Description ...: " .. outDesc .. nl
res = res .. "; Fields ........: " .. outFields .. nl
res = res .. "; Author ........: " .. outAuthor .. nl
res = res .. "; Remarks .......: " .. outRemarks .. nl
res = res .. "; Related .......: " .. outRelated .. nl
res = res .. "; " .. string.rep("=", defLineMax - 2) .. nl
Más info: http://www.emesn.com/autoitforum/viewto ... ols#p12686
--------------------------------------------------------------------------------
-- CreateStructureHeader(s, p)
--
-- Creates a structure header for an AutoIt 3 struct.
--
-- Parameters:
-- s - The name of a structure.
-- p - The complete structure definition.
--
-- Returns:
-- A string containing the structure header.
--------------------------------------------------------------------------------
function AutoItTools:CreateStructureHeader(s, p)
local defAuthor = props['UDFCreator'] -- Initial Author value

local defLineMax = 129 -- Max length of line. AutoIt standard is 129.
local defSplit = 21 -- Default index for '-' after param.

local nl = self:NewLineInUse()

local outStart = "STRUCTURE"
local outName = s
local outDesc = ""
local outFields = ""
local outAuthor = defAuthor
local outRemarks = ""
local outRelated = ""

local str
if p ~= "" and p ~= nil then
p = p:sub(p:find("[\"']"), -1)

for sect in string.gfind(p, "%s*(.-)%s*[;\"']") do

if sect:match("[Aa][Ll][Ii][Gg][Nn]%s+%d+") then
-- Align statement: Ignore
else
str = sect:match("^%s*&%s*$([%w_]+)%s&%s*$")
if str ~= nil then
-- Substruct

if outFields ~= "" then
outFields = outFields .. nl .. ";" .. string.rep(" ", 18)
end

outFields = outFields .. str .. string.rep(" ", defSplit - string.len(str)) .. "- A $" .. str .. " structure."
else
if sect == nil or sect == "" or sect:upper() == "STRUCT" or sect:upper() == "ENDSTRUCT" then
-- Substruct or empty: Ignore
else
local datatype, name = sect:match("^(.-)%s+(.-)$")

if outFields ~= "" then
outFields = outFields .. nl .. ";" .. string.rep(" ", 18)
end

outFields = outFields .. name .. string.rep(" ", defSplit - string.len(name)) .. "- "

if datatype:sub(1, 1):find("[AEIOUaeiou]") ~= nil then
outFields = outFields .. "An "
else
outFields = outFields .. "A "
end

outFields = outFields .. datatype .. " value."
end
end
end

end
end

local res = "; #" .. outStart .. "# " .. string.rep("=", defLineMax - 5 - outStart:len()) .. nl
res = res .. "; Name ..........: " .. outName .. nl
res = res .. "; Description ...: " .. outDesc .. nl
res = res .. "; Fields ........: " .. outFields .. nl
res = res .. "; Author ........: " .. outAuthor .. nl
res = res .. "; Remarks .......: " .. outRemarks .. nl
res = res .. "; Related .......: " .. outRelated .. nl
res = res .. "; " .. string.rep("=", defLineMax - 2) .. nl

return res
end -- CreateStructureHeader

Re: SciTE, Includes y plantillas

Publicado: 11 Ene 2012, 02:43
por BasicOs
  • Otro ejemplo para hacer quitar los comentarios con una combinación de teclas:
  • - Abrir el fichero: ..\USER\SciTEUser.properties
    Encima de:
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    # START: DO NOT CHANGE ANYTHING AFTER THIS LINE #-#-#-#-#
    Pegar esto:
    # 49 Delete Comments
    command.name.49.*=Delete Comments
    command.mode.49.*=subsystem:lua,savebefore:yes
    command.is.filter.49.*.au3=0
    command.49.*=CommentsDelete
    command.shortcut.49.*.au3=Ctrl+Shift+L

    # 48 Hide Comments
    command.name.48.*=Hide Comments
    command.mode.48.*=subsystem:lua,savebefore:yes
    command.is.filter.48.*.au3=0
    command.48.*=CommentsHide
    command.shortcut.48.*.au3=Ctrl+Shift+H
    Esto para asignar las combinaciones de teclas, eg: para borrar comentarios con: Ctrl+Shift+H puedes poner la combinación que desees
    cambiar los numeros 48 o 49 por el siguiente de la lista del fichero que puede ser 36
  • En el fichero de autoarranque del Scite: ..\AutoIt3\SciTE\LUA\SciTEStartup.lua pegar al final esto para que se inicie siempre, aquí están también otros ficheros.lua de funciones que se cargan:
    LoadLuaFile("CommentsDelHide.lua")
  • CommentsDelHide.lua copiar a la carpeta: ..\AutoIt3\SciTE\LUA\
    Descarga el fuente del fichero que hace todo: CommentsDelHide.lua:
    http://www.autoit.de/index.php?page=Att ... ccec9decc9

    Fuente, creditos a Bugfix de autoit.de, y más datos aquí: http://www.autoit.de/index.php?page=Thr ... adID=30284
Un extracto de tres lineas dentro de este código:
if _fDelete then
editor:GotoLine(tCommLines)
editor:LineDelete()
else
end

En el caso de querer borrado (if _fDelete then)
Va a la linea deseada del editor dentro de un array de comentarios GotoLine y borra la linea LineDelete()

Re: SciTE, Includes y plantillas

Publicado: 29 Ene 2012, 13:34
por juanki
Como se puede poner el scite en español, tambien veo que al ejecutar un codigo me graba el codigo con la ultima modificacion y no veo en los menus ninguna opcion para cambiar esto.

Re: SciTE, Includes y plantillas

Publicado: 30 Ene 2012, 09:52
por Ximorro
Me temo que no existe versión de Scite en español. Lo que sí está en español es la ayuda de Autoit. Si te interesa haz una búsqueda en el foro y la encontrarás fácil.

Respecto a la segunda cuestión me temo que no es posible, hoy no has tenido buena suerte. :smt022 Para poder ejecutar el código lo guarda primero porque Scite lo que hace es mandar el script a los programas correspondientes (Au3Check cuando haces CTRL+F5 para comprobar sin ejecutar, o Autoit3.exe para ejecutar, o Aut2exe para compilar, etc, etc.)

Resulta que estos programas requieren un archivo au3 sobre el que trabajar, así que Scite guarda el que estás editando para enviarles la última versión.

Quizás modificando los comandos LUA puedas hacer que se cree una copia y sea esa copia la que envía al programa, enconces no sería necesario guardar el script original, aunque puede tener efectos secundarios, como que tengas un script compilado que no corresponda con el au3 o cosas así...

Para modificar el LUA tienes que tocar el archivo au3.properties. Los comandos de ejecutar o compilar están bajo el comentario:
# Commands to compile / run your script
En mi versión en la línea 56, pero eso puede cambiar según versiones.
Si te fijas un poco más abajo en la gestión para beta sí que hay comandos explícitos de command.save.before.x.$(au3)=1. Para la versión de producción no están, de todas maneras lo hace, pues cuando pasa /in "$(FilePath)" manda la última versión en el editor (y para ello tiene que guardarla).

Re: SciTE, Includes y plantillas

Publicado: 30 Ene 2012, 11:29
por jamaro
juanki escribió:Como se puede poner el scite en español
juanki puedes echar un vistazo a este mensaje y a su hilo en general.

http://www.emesn.com/autoitforum/viewto ... =20#p10614

Por cierto los créditos no son mios, estaba en la versión portable que utilizo.

Re: SciTE, Includes y plantillas

Publicado: 30 Ene 2012, 14:33
por juanki
Gracias a los dos por vuestras respuestas, lo del español no es importante pero recuerdo que en un portable lo baje en español aunque prefiero la version de autoit para instalar y lo de los ficheros pues si es un problema ya que es la primera vez que me pasa y en otros me lo ejecuta en memoria y siempre tengo el fichero tal cual hasta que yo lo quiero guardar.


Nota:


jamaro, ya lo tengo en español, solo es meter el locale.properties en la carpeta.

De momento encuentro esto que me hace una copia .bak, de 0 lo ponemos a 1, para mi ya es algo de momento.

Imagen

Re: SciTE, Includes y plantillas

Publicado: 31 Ene 2012, 09:31
por Ximorro
¡Pues sí que estaba en español, en la versión portable!
Gracias por aclararlo, jamaro, no me había fijado porque la portable 3.3.6 está en inglés, pero la 3.3.8 sí está en castellano, no lo había visto.

Una cosa juanki, aunque te guarde los cambios antes de compilar, después puedes deshacerlos con CTRL+Z (o en el menú Edit). No se guarda los cambios desde el último guardado, como otros editores, sino desde el inicio de la sesión (limitado por una cantidad de memoria, se supone, pero no por el guardado del archivo).

Para probar pequeños cambios puede servir hacerlos, ejecutar, y después deshacer los cambios con ctrl-z. Será más rápido que restaurar desde el BAK.