Scripts discussion (4)

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 71
Joined: Sat Jul 05, 2008 11:30 am
Location: Odesa, Ukraine

Re: Scripts discussion (4)

Post 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.

Offline
Posts: 310
Joined: Mon Jun 20, 2011 8:33 am
Location: Электросталь

Re: Scripts discussion (4)

Post by yozhic »

DV
У Вас в скрипте CommandPalette.js, в списке команд работают лигатуры:
Image

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

DV
Offline
Posts: 1299
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Re: Scripts discussion (4)

Post 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 "->".

Offline
Posts: 70
Joined: Thu May 05, 2022 5:38 am

Re: Scripts discussion (4)

Post by dothen »

Это шрифт с лигатурами, а скрипт показывает текст в ListBox'е.

Offline
Posts: 310
Joined: Mon Jun 20, 2011 8:33 am
Location: Электросталь

Re: Scripts discussion (4)

Post 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. Но если всё это слишком нетривиально, то и не надо. Самому мне сложно оценить эти возможности, образования не хватает :)

Offline
Posts: 310
Joined: Mon Jun 20, 2011 8:33 am
Location: Электросталь

Re: Scripts discussion (4)

Post 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 вместо всех трёх.

Offline
Posts: 22
Joined: Wed Jan 22, 2025 5:23 am

Re: Scripts discussion (4)

Post by Лестер Глючный »

О… мне как-то довелось опробовать FiraCode… Да, выглядит красиво, но всё же меня лично все эти "псевдо-лигатуры" до жути раздражали! Хотелось видеть текст "как есть", а не "дописыванное того, что как бы и не подразумевалось" (в редакторе байтов типа FlexHex было совсем не уместно)… Поначалу мне было не понятно, с какого перепугу текст "подменяется" даже в виндовом блокноте, потом дошло, что виноват выбранный там же FiraCode…

Offline
Posts: 310
Joined: Mon Jun 20, 2011 8:33 am
Location: Электросталь

Re: Scripts discussion (4)

Post by yozhic »

виноват выбранный там же FiraCode
Лигатуры — это переключатель. Кому надо — включают, нет — не включают. Поэтому шрифт виноватым быть никак не может.
Просто нужна возможность переключения DirectWrite для приложений в Windows. Но такой возможности нет, похоже.

Offline
Site Admin
Posts: 6438
Joined: Thu Jul 06, 2006 7:20 am

Re: Scripts discussion (4)

Post 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)));
Post Reply