You are here: PSPad forum > České diskuzní fórum > Script v PSPadu?

Script v PSPadu?

#1 Script v PSPadu?

Posted by: Semi | Date: 2020-07-22 16:19 | IP: IP Logged

Dobrý den.

Nabízím možnost nebo námět na skriptování pro PSPad...

Jedna možnost je jednodušší:

- Plovoucí okno s editací scriptu a volbou interpretu
- Možnosti Input: Celý text, Selection, None
- Možnosti Output: Náhrada celého textu, Náhrada selection (tedy vložit na pozici kurzoru), Externí viewer, Uložit do souboru

image

Používal jsem na to kdysi gawk.exe, nyní mám vlastní Eval.exe ... Leckdo může mít další command-line text-processor...

Možností využití je nepřeberně...
(Zde v příloze jednoduchá ukázka, kde ze schránky nabere HTML fragment a vloží z něj seznam všech adres iframe...)

Script se uloží do temp-souboru, spustí se externí program s parametrem toho scriptu, jako "pipe" na vstupu má dle výběru, a do "pipe" stdout na výstup to něco vypíše a to se použije... Když vrátí chybový kód a žádný výstup, zobrazí se v dialogu výstup z druhé "pipe" stderr... (tedy jen prvních X=500? byte...)
(Nemělo by to být složité, ale v případě potřeby to mohu dodat i jako unitu v pascalu...)

Editor (zde PSPad) někde v registry nebo jinde uchovává seznam scriptů, je tam možnost zadat název a uložit a později vybírat z combo-boxu...
(Pokud script změním, neukládá se automaticky, ale na vyžádání tlačítkem... Někdy ten script podle potřeby upravím, ale uložený je základní template...)

Můj Eval.exe včetně zdrojáků v Delphi (ale nepůjdou vám asi zkompilovat, ale jsou třeba jako reference možných funkcí a objektů) je
http://semi.gurroa.cz/AltUtil/Eval.zip

Můžu z toho vybrat nějakou menší package pro redistribuci... Můžete to šířit také, dle libosti...
(Jako základ stačí samotné Eval.exe, má to 1.4Mb a šlo by to UPX kompresovat... Jsou k tomu další možné moduly na leccos, od grafiky, vědeckých výpočtů a databází až po network a procesy...)

Externí proces má výhodu, že když zkolabuje, tak to neshodí ten editor, který to spouští...
(A je tam vestavěné, že když to do 60s není hotové, tak se to zeptá, jestli se to má přerušit, nebo jestli chci dál čekat...)

-----
Druhá možnost by byla fajnovější, ale je to pak specifické na jeden typ scriptu:

Nabízím to jako DLL modul EvalScript.dll, má to relativně jednoduchý interface na kompilování scriptu a na jeho spouštění, ale musel byste k tomu zřejmě udělat nějaké také asi jednoduché interface na objekt toho Editoru, funkce a property SelStart, SelLength, LineCount, Lines[i], Text, SelText, atd...


type
IEvalObj=interface(IUnknown)
function CallFunc(const FuncName: String8; var ResVar: Variant; Args: PEvalNode): Boolean;
function GetProp(const PropName: String8; var ResVar: Variant; IndexArg: PEvalNode): Boolean;
function SetProp(const PropName: String8; const Value: Variant; IndexArg: PEvalNode): Boolean;
function Control(Code: Longint; Param: Pointer): HResult;
end;

Můj EvalScript je dost kompatibilní s javascriptem, akorát je case-insensitive a musí se většinou psát := pro přiřazení... Zároveň to umí i pascal syntaxi, je tam auto-detekce...
K ukázce na obrázku, #f je zkratka function, #r je zkratka return, L(...) je jako StdOut.WriteLineFmt(...)

Další případ scriptu... Máte tam User convertors/Unicode entity... Ale řečtinu a hebrejštinu a azbuku to asi neumí...

//var S:=StdIn.toString();
var S:=Trim(ClipBoard.WText), S2:=''; for(p=1;p<=length(S);p++){ var C:=S[p], N:=ord(C); S2 += (N>127) ? Fmt('&#x%x;',N) : C; } L(S2);

Ze streamu StdIn by ten script zpracovával "selection" z Editoru, ale tenhle případ mám třeba na vkládání slov do html z Firefoxu z online slovníku přes schránku...

Tohle by bylo efektivnější pro více řádek na vstupu:


StdIn.CodePage:=utf8;
StdIn.EnumLines(#f(S){var S2:='',p,C,N; UpFor(p,1,length(S),{S2+=((N:=ord(C:=S[p]))>127)?Fmt('&#x%x;',N):C}); L(S2)});

atd...

Options: Reply | Quote | Up ^


#2 Re: Script v PSPadu?

Posted by: pspad | Date: 2020-07-22 17:23 | IP: IP Logged

Díky za námět.
Budu to muset nějak pomalu přečíst a vstřebat, až nebudu tak utahaný.
V podstatě by se to v současné době dalo spouštět jako externí nástroj v oblíbených, do budoucna by to chtělo lepší integraci.

Uživatelské konvertory by zvládly cokoliv, už jsou uložené v UTF-8, stačí jen vygenerovat entity, dle potřeby.
Samozřejmě by šel použít skript přímo v PSPadu, který už má do editoru bohatý interface (viz soubor scripting.rtf ve složce PSPadu) a text přegenerovat do entit nebo zpět.

Skriptování v PSpadu používá WSH, takže v základu JScript, VBScript + cokoliv co si uživatel do WSH doinstaluje. Pomocí standardních metod se vytváří přímo menu v PSpadu (hlavní menu - Skripty, pokud je skriptování v nastavení programu / Integrace do systému povoleno)

Edited 1 time(s). Last edit at 2020-07-22 17:28 by pspad.

Options: Reply | Quote | Up ^


#3 Re: Script v PSPadu?

Posted by: Semi | Date: 2020-07-22 22:10 | IP: IP Logged

Pokud tam máte WSH, asi to stačí... Já tu WSH nemám...

(Pokud to teď nemáte čas číst, nechte to na jindy...)

-----

Třeba jiná ukázka, co "entity" v ini-file nezvládnou:

Dost často píšu v pascalu tabulku metod něco jako toto:

@C:
dd offset @Clear +1
dd offset NArray_Clear
dd offset @Copy +1
dd offset NArray_Copy
dd offset @Concat +1
dd offset NArray_Concat
dd offset @Clone +1
dd offset NArray_Clone
...
dd 0

Označím blok a script mi z toho vygeneruje toto do externího vieweru (nebo tam můžete mít "Nový soubor" a otevřít to na novou záložku...), už to pak jenom přesunu na správná místa:


@Clear: db 5,'Clear',0
@Copy: db 4,'Copy',0
@Concat: db 6,'Concat',0
@Clone: db 5,'Clone',0
//
function NArray_Clear(Params: PObjCallParams): Boolean; //New200722
begin
//...
end;

function NArray_Copy(Params: PObjCallParams): Boolean; //New200722
begin
//...
end;

function NArray_Concat(Params: PObjCallParams): Boolean; //New200722
begin
//...
end;

function NArray_Clone(Params: PObjCallParams): Boolean; //New200722
begin
//...
end;

Ukázka scriptu:


var Lines:=new TStringList, Procs:=new TStringList, Cols:=new TStringList;
Lines.Text:=StdIn.toString();
for(i=0;i<Lines.Count;i++){
Cols.Clear();
Cols.BreakApart(Lines[i],''); // rozdelit podle white-space
if (Cols[1]=='offset') Cols.Delete(1);
if (Cols[0]=='dd') {
var S:=Cols[1];
if (S=='0') continue;
if (Cols[Cols.Count-1]=='+1' && S[1]=='@') {
// mistni label:
S:=SubStr(S,2);
L("@%s: db %d,'%s',0",S,Length(S),S);
} else
if (S[1]!='@') {
// externi funkce, nekdy jsou duplicitni:
if (Procs.IndexOf(S)<0) Procs.Add(S);
}
}
}
L('//');
Procs.ForEach(#f(S){
L('function %s(Params: PObjCallParams): Boolean; //New%s', S, FormatDate(Now()-0.25, 'yymmdd'));
L('begin'); L(' //...'); L('end;'); L('');
});

Pak je otázka, kolikrát se to použije, jestli se vyplatí si na to psát ten script, nebo to smolit párkrát ručně...

S tím oknem na obrázku to má výhodu, že se nemusím starat o žádný soubor toho scriptu, prostě otevřu okno Script (klávesovou zkratkou), něco tam napíšu a Ctrl+Enter spustím... Když to chci používat častěji, nahoře napíšu jméno a dám tlačítko uložit... Editor je někde má, jako uživatel se o to nestarám a nezdržuju se ani s open-dialogem, ani s případným uklízením starých souborů...

K tomu ještě poznámka: v tom seznamu v combo-boxu je na konci položka "(Last used)", to okno se implicitně otevírá s naposledy použitým scriptem, i když jsem ho neuložil, pamatuje si to poslední použitý automaticky...

K tomu ještě poznámka: okno Script je ne-modální, ale plovoucí nad editorem... (V CreateParams má Style:=Style or WS_OVERLAPPED a má nastavené WndParent...)
Takže se můžu překliknout zpátky do editoru a kopírovat kousky textu přes schránku do toho scriptu... Tlačítko "OK" to spustí, ale okno scriptu nezavře, takže můžu třeba označit další kus textu a spustit znovu... Nebo je tam na to Checkbox, jestli se to má při použití zavřít...

-----

Jen poznámka, že já to teď akutně nepotřebuji... V případě potřeby to jde i z příkazové řádky přes schránku...
(Já mám na něco vlastní Editor, a na něco používám PSPad, třeba na soubory v utf8, což ten můj Editor neumí...)

Ale je to zajímavý nápad a ta varianta s externím programem je celkem jednoduchá na implementaci a uživatelsky pohodlná...

Nevím, jak často se vám stane, že píšete a duplikujete řádky a postupně tam něco přepisujete, co by šlo vygenerovat v nějakém "for" ve scriptu, ale ukládat na to script do souboru je zbytečně složité?

Nebo když je za každým výskytem něčeho v souboru potřeba přidat na další řádku něco jiného nebo to nějak netriviálně nahrazovat...

Takhle k použití je to uživatelsky dost zjednodušené...

Nebo příklad: otevřu "content.xml" ze souboru ODT z open-office, ve scriptu to XML z jedné dlouhé řádky přeformátuji, aby se v tom dalo editovat:
L(DomParseXml(StdIn.toString(),{preserveSpace:true}).xml)
a pak to zase scriptem vrátit zpátky na jednu dlouhou řádku:
StdIn.EnumLines(#f(S){StdOut.Write(Subst(TrimLeft(S),'&nbsp;',#$A0))});
(OpenOffice neumí &nbsp;, ale moje implementace XML to nahrazuje na vstupu automaticky... Property .xml automaticky indentuje, mezery jsou při {preserveSpace:true} zachované na konci řádků, property .xmlNonIndent by měl zachovat původní indentaci...
Další možnost, jak to XML rozložit na víc řádek, je vložit odřádkování před > na konci hlaviček elementů, kde to není /> ... To se pak nemusí skládat, to OpenOffice ignoruje automaticky a nevloží tam mezery navíc...
Třeba na tohle PSPad občas používám, protože to můj editor nezvládne, ale smolím to na té jedné dlouhé řádce a jde to dost pomalu, když to má pár Mb... Ale ušetřilo mi to dlouhé piplání v OpenOffice, kde vkládání odkazů automaticky obarvuje a podtrhává text a vložit tam další styl <text:a ...><text:span...> je problematické, v XML to jde jednoduše...
Vracet opravený content.xml nebo styles.xml do souboru ODT není triviální, protože musí být v tom ZIPu v původním pořadí, jinak to OpenOffice neotevře... Mám na to funkci ve scriptu:

#dll EvalArc
var Z:=OpenArchive('soubor.odt','zip'); Z.ReplaceFile('content.xml','soubor_content.xml');

)

-----

Na ukázku moje implementace okna (pas+dfm) : UScripter.zip
(V delphi to asi nepůjde otevřít, když mám jiné komponenty, a ukládají se ty scripty do registry, vy byste to asi spíš dával do nějaké složky do souborů...? Je tam ale ta funkce na spouštění a zápis/čtení pipe, viz btOkClick a nad tím kódy těch threadů...)

Options: Reply | Quote | Up ^


#4 Re: Script v PSPadu?

Posted by: Semi | Date: 2020-07-22 22:26 | IP: IP Logged

Jen k tomu doplním: ve verzi 500 ještě ten scripting nebyl, stáhnul jsem si teď 503 a něco tam je...

To asi stačí...
Tak pardon za zbytečné otravování...

(Ale když na to koukám, ta moje metoda je na uživatelské použití o dost jednodušší...)

Options: Reply | Quote | Up ^


#5 Re: Script v PSPadu?

Posted by: pspad | Date: 2020-07-23 04:37 | IP: IP Logged

Ten soubor s dokumentací byl v podadresari .\Script, v nove verzi se presunul. Jinak je to popsáno v napovědě.

Options: Reply | Quote | Up ^


#6 Re: Script v PSPadu?

Posted by: pspad | Date: 2020-07-23 04:43 | IP: IP Logged

Já zase moc nedělám weby, ale skripty jsem si udělal třeba na podmínky pro SQL, kdy dostanu v excelu seznam hodnot:
1HN1000058
1HN1000059
1HN1000060
1HN1000061
1HN1000062
1HN1000063

a jednou klavesovou zkratkou v PSPadu z toho udělám:
('1HN1000058', '1HN1000059', '1HN1000060', '1HN1000061', '1HN1000062', '1HN1000063')
s tím, že mi to ořeže případné mezery, vynechá prázdné řádky atd.

Kluci tam udělali věci jako automatické uzavírání tagů, kdy to dohledá předchpzí otevřený tag a doplní zavírací, přeformátování kódu atd.
A tím, že se to rovnou zařadí do menu v PSPadu, dá se přiřadit klávesová zkratka se to pak jednoduše používá.

Pro editaci skriptu je pak figl na scriptu v menu zmáčknout pravou myš a k tomu kliknout levou myší

Options: Reply | Quote | Up ^


#7 Re: Script v PSPadu?

Posted by: Semi | Date: 2020-07-23 15:41 | IP: IP Logged

Ve verzi 500, co jsem stáhnul 2019-01-23, nebyla složka Script ani v pod-adresářích...
Byla tu "PSPad - current version 5.0.0 (277) - 24 April 2018"... (Portable Zip jsem stáhnul odjinud, protože fosshub.com nefunguje bez javascriptu a nešlo to tam stáhnout a nedošlo mi, že "HTTP mirror" je také portable verze...)
Letos jsem to našel, dík...

(Je možné, že jsem si to WSH v "System integration" vypnul... Už nevím...)

-----

Ještě poznámka - když v tom scriptu bude nějaký nekonečný "while", jde to "Abort" přerušit?

S tím externím scriptem, někdo třeba může používat AWK, nebo jestli to umí i perl nevím...

Třeba v AWK je ta vaše SQL ukázka také na jednu řádku kódu:

BEGIN{printf "("} {printf "%s'%s'",sep,$1; sep=", "} END{printf ")"}

(To asi znáte: "(Ne)chci slevu zadarmo..." (citát z nějakého filmu, už nevím přesně... Analogické: "Jean, přineste mi klavír! Ano, Lorde?? Odložil jsem si na něm doutník...")
Je u těch scriptů otázka, jestli je jednodušší na to napsat script, nebo to udělat ručně...)

Další logické použití je konverze CSV souboru na řádky "insert into ...".
Tam je ve scriptu potřeba jednoduše opravit název tabulky a seznam těch fieldů, a leckdy to není nutné ukládat pro další použití, na další spuštění pro jinou tabulku budou zase jiné fieldy... Ve scriptu lze použít inputText(), ale když ty fieldy budou skoro stejné jako minule, musel bych je pokaždé vypisovat znovu...?

-----
Ještě jeden nápad na novou funkci, co používám jinde:

- V Editoru mám shortcut Ctrl+Shift+V "View selection".
- Otevře plovoucí okno s jednoduchým editorem a v něm je aktuální selection
- Je nemodální a drag-drop tam můžu přenést další kusy textu nebo opravovat
- V tom plovoucím okně je Ctrl+D "Drop", což to vloží na pozici cursoru v aktuálním frame v hlavním okně a zavře se
- Má to jen jednoduché MainMenu: File / "Save as", "Drop", "Stay on top", "Close", a případně normální PopupMenu jako Editor... A pamatuje si pozici okna v TFormStorage...

- U vás by se na to hodily i ty záložky vedle "Log" dole...??
- Nebo třeba "Create Clip From Block" - proč to je modální ? Tam by stačilo, kdyby byl nemodální a měl funkci: "Insert into Editor and Close", a drag-drop myší do a z hlavního editoru a jinou normální editaci... (Tak asi ne, myslel jsem, že "Clip" je "Clip" tedy "Výstřižek" a ne "Template"...)

Lze to použít i na výstup ze scriptu, nebo když potřebuji přenést víc kousků textu z jedné záložky na druhou nebo v textu někam "daleko", postupně si jich otevřu několik, na novém místě zase postupně vložím... Ale kdybych je musel někam pojmenované ukládat, to bych je pak zase musel mazat, to už je jednodušší si to skládat na novou záložku do prázdného souboru, ale je to méně pohodlné...
(Na nemodální plovoucí okno se lze Alt+F6 přepínat, standardní shortcut ve windows, nemusím na to sahat na myš... Ale mohu to tam přenášet i DragDrop myší...)

Asi by stačilo, aby to okno jako "Create Clip From Block" bylo ne-modální, jen "overlapped" plovoucí nad hlavním oknem... Dostane ten Block do svého Editoru, a až a jestli vyplním jméno a zmáčknu OK, tak se to někam uloží, ale mohu si jich otevřít i několik a neukládat a použít jako dočasné odkladiště kousků textu...??

Pokud je to okno "Create Clip" na něco jiného, než dočasné bloky, tak by se hodilo jiné podobné okno na dočasné výstřižky z textu...

(Typické použití - třeba seznam funkcí jako má Delphi "Class completion", v hlavičce souboru si je naberu jako "Clip" a někde dole je pak vložím (nebo naopak zespoda nahoru postupně posbírat do deklarace), ale můžu jich takhle nést dolů nebo nahoru několik nezávislých bloků najednou a ne jen jeden kus v Clipboardu...)

(Další příklad použití: Když se edituje soubor s jednou řádkou na několik Mb, tak to není "svižné", což je pochopitelné... Například to XML z OpenOffice, to není jednoduché roz-řádkovat, protože to vloží přebytečné mezery kolem <span>... Kdybych si Blok vytáhnul do pomocného okna jako "Clip", tam opravil jednoduše, tak se pak hodí ta funkce "Drop back" nebo "Return to main", kde přepíše Selection... Zadávat tomu "Name" je zbytečná práce navíc, a pak to zas někdy muset mazat...)

-----

Když nevyplním v okně "Clip" položku "Description", tak pokud ji potřebuje, tak by si mohl vzít "Name" a nevydírat "Please, fill Clip description"... Je to zase práce navíc...

Nenašel jsem okno na editaci těch Clips a nejdou smazat? Když zadám stejné Name i Description, je tam pak dvakrát... (to by se mohlo zeptat, jestli chci ten původní přepsat... - Yes,No,Cancel)
(Nakonec jsem ten soubor našel - TXT.DEF ... Asi by mohla být funkce v Menu "Edit Clips" a ten aktuálně použitý soubor otevřít v nové záložce, abych to nemusel hledat někde ve složce...) (Takhle ale nepřenesu kusy textu z TXT do XML...)

V MainMenu "Tools / Show clips" je nemodální seznam... Ale když mám ve Windows zapnuté X-mouse, tak při pohybu myší z menu nad TPageControl se záložkami editoru se to okno se seznamem Clips zavře samo, takže to nejde myší z menu použít, jde to jen z klávesnice... (asi je to daň za jednoduché použití z klávesnice, to má asi přednost zachovat...)

-----
Ještě poznámka - když zavírám prázdný nový soubor, nemusel by se ptát, jestli ho chci uložit...
(Zkusil jsem si ty výstřižky z textu dávat do nového souboru, ale když je pak použiju a smažu a záložku zavírám, tak mě obtěžuje dotaz na ukládání souboru... Pokud byl soubor nový a nemá název a je při zavírání zcela prázdný (kromě white-space a prázdných řádek), tak nemá smysl se ptát na ukládání při zavírání, i když má nastavené Modified, nebo má mít aspoň vybrané default tlačítko "No"...)

-----
Ještě jedna poznámka: Přepínání mezi záložkami z klávesnice... (To kdybych ty výstřižky chtěl přenášet ze souboru do souboru přes třetí záložku s novým prázdným souborem...)

Mám v Editoru funkci jako má Delphi, Ctrl+B seznam záložek, napíšu pár písmen někde zprostřed názvu a Enter... Ctrl+B,Enter přepnutí ta minulou záložku... Ctrl+B,Down,Enter přepnutí na předminulou záložku... (Jsou v pořadí, jak byly naposled aktivní, ostatní v pořadí PageControl za tím, seznam se poprvé naplní ze záložek a aktivní se přesouvají na začátek... Při otevření stojí seznam na druhé řádce, na první řádce je aktuální záložka...)
Našel jsem "Window/File list" (Ctrl+Alt+O), ale je to tříděné asi abecedně podle celé cesty a rychle v tom přepínat dvě naposledy použité záložky je zdlouhavé... (Ten by mohl mít RadioButtony "path", "name only", "mru", "none" na třídění a pamatovat si to naposledy použité... Třídění "none" je setříděné v pořadí záložek... "mru" je "most recently used") Když to okno otevřu a chtěl bych psát písmena, mohlo by se aktivovat to pole Filter... (Teď si to pamatuje, jestli byl naposledy použitý Filter nebo ListBox, ale když ve Filter něco zadám a šipkami to dohledám z možností, příště se otevře v ListBoxu a filtrování klávesami nefunguje... V OnKeyPress na ListBox při stisku písmena nebo číslice by mohl aktivovat pole Filter a do textu mu vložit to jedno písmeno... Nebo mít na začátku ActiveControl vždy na políčku Filter a na šipky down,up,pgdn,pgup aktivovat ListBox a tu klávesu mu podstrčit, to už tam skoro je...)

-----
Ty výstřižky s tím scriptem souvisí, protože když si označím blok a spustím na to script, tak můžu chtít zachovat původní blok a výstup ze scriptu ručně vložit jinam... (Prozatím by se na to asi použil výstup do okna "Log", nebo otevírat novou záložku...)

Já vám nic z toho nenutím, jen to nabízím jako postřehy "od konkurence"... (A ovšem nejsem žádná reálná konkurence, na svůj editor mám celkem asi 3 uživatele, a na leccos používám také PSPad, když ten můj editor neumí utf8...)

Options: Reply | Quote | Up ^


#8 Re: Script v PSPadu?

Posted by: Semi | Date: 2020-07-23 16:14 | IP: IP Logged

Ukázka scriptu ToDoList.js nefunguje...

Píše chybu na řádce
obj1.Text(data);

Těsně za řádkou obj1.AssignLog();


Microsoft JScript - chyba při běhu programu
Module: TodoListJs
Line: 56, Pos: 3
Description: Název souboru nebo třídy nebyl během operace s objektem Automation nalezen.

Je to tam asi jediná ukázka, jak něco vypisovat do Logu...

(Poslední verze 5.0.3 377)

Options: Reply | Quote | Up ^


#9 Re: Script v PSPadu?

Posted by: vbr | Date: 2020-07-23 20:07 | IP: IP Logged

Zdravim,
zda se, ze bohuzel zustava tento skript neaktualizovany, stejne jako nektere na strance:
www.pspad.com

Funkce pro zapis do logu byly prepracovany, poznamka je v souboru napovedy ke skriptovani
...\PSPad\Scripting.rtf

Zakladni funkce pro zapis retezce do logu je celkem minimalni, napr. (ulozit so podadresare JScript):

Quote:
//////////////////// ... PSPad\script\JScript\test_logu.js //////////////////
var module_name = "test_log";
var module_ver = "1";

function add_dummy_log_line(){
logAddLine("řádka logu ...");
}

function Init(){
addMenuItem("zapiš do logu", "", "add_dummy_log_line","Ctrl+Shift+F2");
}

Skriptovani v PSPadu obcas pouzivam, zda se mi, ze vetsina popisovanych funkci by v nem byla take mozna; je ale pravda, ze ze vylozene jednorazove napsani kodu a ojedinele uplatneni vystupu je trochu zdlouhavejsi - da se na to pouzivat zaklad tela funkce jako ta vyse, soubor se zdrojem se da otevrit uvedenym trikem - stisknuti praveho a pak soucasne leveho tlacitka mysi nad polozkou skriptu v menu.
Pak se vypise kod funkce, ulozi, znovunactou skripty v menu a vyvola prislusna funkce skriptu - z menu nebo klavesovou zkratkou.

Vystup muze byt ruzny - do logu, do noveho souboroveho tabu editoru, do aktualniho textu na misto kurzoru, vyberu, jen do promptu aj. - podle funkci popsanych v napovede skriptovani.

Pro jednorazove pouziti to muze byt zdlouhave, ale daji se recyklovat drivejsi casti, zakomentovavat predchozi funkce apod.

Jindy se da pro pro podobne ucely pouzit treba interaktivni javaskriptova konsole ve webovem prohlizeci aj. (pred casem me napadlo, jestli by neco podobneho nemohlo byt primo napr. v nastrojovem panelu PSPadu, ale asi by to nestalo za namahu, a navic by pripadna implementace mela smysle jen v nekterych programovacich jazycich (jinak to byva spis ve specializovanych ide).

Pokud jde o prenaseni casti textu na ruzna mista dokumentu, da se pouzit treba monitor schranky (Alt+M) v menu Nastroje; pri aktivovani se polozky zkopirovane do schranky radi do seznamu v nastrojovem panelu, po nakliknuti se se vypise jejich obsah do podokna panelu (needitovatelne), je mozne je tak cele nebo zcasti vybrat a pretahnout mysli do textu, nebo i vykopirovat schrankou jako dalsi polozku.

Na nektere modalni dialogy v PSPadu si clovek aktualne musi zvyknout (i treba hledani a nahrazovani aj.), zda se ze v nekterych ohledech s nimi fungovani editoru tak pocita a prevedeni na nemodalni by bylo komplikovane.

Zdravim,
vbr

Options: Reply | Quote | Up ^


#10 Re: Script v PSPadu?

Posted by: Semi | Date: 2020-07-24 01:12 | IP: IP Logged

Ok, díky...

Ten trik s levým+pravým myšítkem jsem v helpu nenašel...
Jak jsem to párkrát zkoušel, na "Print all files" jsem asi nekliknul dost najednou a místo toho se to rovnou spustilo, a pak jsem stornoval a stornoval a stornoval Print Dialogy, žádná možnost přerušení...

Monitor schránky nemůžu použít, mám vlastní a není to kompatibilní, PSPad by mi to odstřihl... (Což je chyba ve Windows, že SetClipboardViewer vrátí i takové předchozí HWND, na které nejde poslat SendMessage...)
Což je mimo jiné také důvod, proč někdy přenáším kousky textu přes pomocná okna, když je nechci logovat do clipboardu...

Ale budiž, něco tam je, třeba to stačí...
(Snažil jsem se to navrhnout jako "nepříliš složité vylepšení"...)

Options: Reply | Quote | Up ^






Editor PSPad - freeware editor, © 2001 - 2024 Jan Fiala, Hosted by Webhosting TOJEONO.CZ, design by WebDesign PAY & SOFT, code Petr Dvořák, Privacy policy and GDPR