Page 32 of 32

Re: Scripts discussion (4)

Posted: Tue Mar 17, 2026 9:09 pm
by ewild
testuser2 wrote: Sun Mar 15, 2026 11:51 am
ewild wrote: Fri Mar 13, 2026 7:03 pm Then, is there a way (and how) to execute a user script that is designed for and currently being edited in the AkelPad, but located in an arbitrary place outside of AkelPad's dedicated tree?
It would be pretty useful to have such an option for testing, but I couldn't figure out how to do that.
Я использую executeScript.js и executeScript.vbs из стаднартного набора скриптов для этого. Они создают врменные файлы для выполняемого кода в стандартной директории. Работает так: если выделяешь код, то выполняется только выделенный код, если ни чего не выделяешь, то выполняется весь код из активной вкладки.
Кнопки для панели инструментов:

Code: Select all

    "Execute JS-code" Call("Scripts::Main", 1, "executeScript.js") Icon("%a\AkelFiles\Plugs\ToolBar.dll", 17)
    "Execute VBS-code" Call("Scripts::Main", 1, "executeScript.vbs") Icon("%a\AkelFiles\Plugs\ToolBar.dll", 17)
Вообще вопросы по этому аддону лучше писать сюда.
testuser2
Great script. Cannot explain why I have overlooked it myself. Thank you.
Unfortunately, it turns out that my request itself wasn't well articulated, to say the least.
Hence, "executeScript.js" is unable to do what I actually need, but at least its code drops a hint on where I can go further and within what limitations.

Re: Scripts discussion (4)

Posted: Sat Mar 21, 2026 7:39 pm
by yozhic
DV
У Вас в скрипте CommandPalette.js, в списке команд работают лигатуры:
Image

Это же очень интересно! А как Вы так сделали? Как думаете, можно ли при помощи скрипта «включить» применение лигатур в окне редактирования AkelPad?
Естественно, для этого сам шрифт должен поддерживать лигатуры (соотв. OpenType Features).

Re: Scripts discussion (4)

Posted: Sun Mar 22, 2026 8:32 pm
by DV
yozhic wrote: Sat Mar 21, 2026 7:39 pm DV
У Вас в скрипте CommandPalette.js, в списке команд работают лигатуры:
Hmm, I don't know, I see "->" as is:
Image


I assume you either use a font that shows "->" as an arrow or maybe you've updated the "CommandPalette.lng" to use a Unicode arrow symbol instead of "->".

Re: Scripts discussion (4)

Posted: Mon Mar 23, 2026 12:32 am
by dothen
Это шрифт с лигатурами, а скрипт показывает текст в ListBox'е.

Re: Scripts discussion (4)

Posted: Mon Mar 23, 2026 6:03 am
by yozhic
Да, конечно, это шрифт с лигатурами и они работают в ListBox'е (так же, как и в ListView, если на него переключиться в настройках скрипта UseListView = true). Этот шрифт используется в AkelPad, а скрипт его из AkelPad «заимствует». Но при этом в AkelPad лигатуры не работают, а в control'ах скрипта работают. Вот я и предположил, что быть может DV как-то целенаправленно «включил» работоспособность лигатур в control'ах скрипта, как-то через WinAPI :) И заинтересовался как именно это было сделано. Но теперь, кажется, ясно, что целенаправленно ничего ради лигатур не предпринималось, значит просто в компонентах Windows они включены по умолчанию.

Шрифт на моих скриншотах — Iosevka, за лигатуры в нём отвечают OT-опции calt и dlig. По умолчанию calt включена, например, в системном Блокноте на Windows 7, 10 и 11. В других программах (например, VSCode, Adobe InDesign, MS Word), OT-опции можно включать в их настройках. В AkelPad таких настроек нет, и по умолчанию calt не включена.


Блокнот на Windows 7, шрифт Iosevka, лигатуры работают:
Image

Блокнот на Windows 10, шрифт Iosevka, лигатуры работают:
Image

Блокнот на Windows 11, шрифт Cascadia Code, лигатуры работают:
Image

AkelPad на Windows 11, шрифт Iosevka, лигатуры не работают:
Image


Увидев работающую calt в ListBox'е скрипта, я подумал, что вдруг при помощи скрипта (вообще, другого), через обращение к WinAPI можно включить это и в AkelPad. И обрадовался :) Вот, например, здесь народ рассказывает как они это сделали в своей программе при помощи ф-ций Uniscribe API. Но если всё это слишком нетривиально, то и не надо. Самому мне сложно оценить эти возможности, образования не хватает :)

Re: Scripts discussion (4)

Posted: Tue Mar 24, 2026 4:17 pm
by yozhic
Instructor
Хотя такое использование не часто бывает, но быть может стоит поправить. Скрипт Insert.js: если в выделенном тексте есть экранированные квадратные скобки, то скрипт их удаляет.

Воспроизведение:
1. В диалоге Hotkeys вызов:

Code: Select all

Call("Scripts::Main", 1, "Insert.js", '<i>\s</i>')
2. Выделяем текст:

Code: Select all

qwerty \[qwerty\] qwerty
3. Вызываем скрипт. Результат:

Code: Select all

<i>qwerty qwerty qwerty</i>
и выделено только среднее qwerty вместо всех трёх.

Re: Scripts discussion (4)

Posted: Sun Mar 29, 2026 8:14 pm
by Лестер Глючный
О… мне как-то довелось опробовать FiraCode… Да, выглядит красиво, но всё же меня лично все эти "псевдо-лигатуры" до жути раздражали! Хотелось видеть текст "как есть", а не "дописыванное того, что как бы и не подразумевалось" (в редакторе байтов типа FlexHex было совсем не уместно)… Поначалу мне было не понятно, с какого перепугу текст "подменяется" даже в виндовом блокноте, потом дошло, что виноват выбранный там же FiraCode…

Re: Scripts discussion (4)

Posted: Mon Mar 30, 2026 10:08 am
by yozhic
виноват выбранный там же FiraCode
Лигатуры — это переключатель. Кому надо — включают, нет — не включают. Поэтому шрифт виноватым быть никак не может.
Просто нужна возможность переключения DirectWrite для приложений в Windows. Но такой возможности нет, похоже.

Re: Scripts discussion (4)

Posted: Fri Apr 03, 2026 8:05 am
by Instructor
Infocatcher wrote: Thu Apr 16, 2015 6:40 pm Хм, а это так и задумано?

Code: Select all

WScript.Echo(_PtrAdd(100000000, 1)) // 100000001
WScript.Echo(_PtrAdd(5000000000, 1)) // 1
Правда, у меня только x86 есть, на x64 посчитает правильно?
С версии Scripts v19.7 _PtrAdd вернёт исключение. Можно использовать следующий код:

Code: Select all

nNumber64=AkelPad.MemStrPtr("50000000000", true);
WScript.Echo(AkelPad.MemPtrStr(_PtrAdd(nNumber64, 1)));

Re: Scripts (4)… editor.fontLigatures

Posted: Mon Apr 06, 2026 6:55 am
by Лестер Глючный
yozhic wrote: Mon Mar 30, 2026 10:08 amКому надо — включают, нет — не включают.
"Кому надо" — рядовому "виндузятнику"! Такого "переключателя" не могут найти ни в VS2019 ни даже в VS2022! Для VSCode — расширением CoenraadS.disableligatures (только для текущей строки/позиции курсора)! Но в VSCode (даже в последних версиях под Win7) хотя бы доступен параметр editor.fontLigatures (наверно, благодаря Electron`у)…

Re: Scripts discussion (4)

Posted: Mon Apr 06, 2026 8:33 am
by yozhic
Лестер Глючный, я ж не про то «как есть», а про то «как задумано» :) Все OpenType фичи — суть переключатели — факт известный, а уж кто как к ним доступ организует — это другой разговор. Поэтому (возвращаясь туда, где начали): в FiraCode камнями не кидать, он не виноват. В Windows пожалуйста — дело привычное и грешки есть :)

Re: Scripts discussion (4)

Posted: Sun Apr 19, 2026 1:00 pm
by DV
Both the
* CommandPalette.js (plus CommandPalette.lng)
* GoToAnything.js
have been updated with various improvements and optimizations.

Thanks to yozhic for the ideas and fixes. Then, thanks to Google Gemini for the code analysis and optimizations.

Note:
With AkelPad r4541 and later (i.e. with the latest dev build), GoToAnything preserves the tab order for Ctrl+Tab after different [A] files were activated.
For that, GoToAnything uses FWA_NOUPDATEORDER and AKD_FRAMEMOVE. (AKD_FRAMEMOVE has been added in AkelPad r4541).

Re: Scripts discussion (4)

Posted: Tue Apr 28, 2026 7:41 pm
by Infocatcher
replaceDiacriticLetters.js v. 0.1.3 - 2026-04-28
[+] Also remove special modifier symbols, thanks DV for suggestion (#18).
Example:

Z̩͍̼͕̹̬͔ͮ̍͋̽̉ͨ́á̰̜͎̦͑ͨ͋l̄ͧġ̺̹̞̲̜͚̻͛̍ͦ̇̾̔o̖̦͎͍̞̪ͭ͆͗̒ͩ̐̃ͅ -> Zalgo