Scripts discussion (4)

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 348
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

Infocatcher
Я уже давно предлагал вместо совпадения букв искать в первую очередь от начала слов, ещё для скрипта меню.

DV
Удобно стало, очевидно всё, папки игнорируются, открываются сразу для просмотра. Я сейчас в линуксе экспериментирую, поэтому Windows загружаю когда накапливаются вещи, чтобы проверить. Пытался в линуксе AkelPad настроить, но всё работает кроме скриптов, и даже если установил wsh57 добился запуска, всё равно пишет ошибка в такой-то строке.

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

Post by DV »

GoToAnything.js, CommandPalette.js -
Сделал, чтобы пробел (в строке фильтра) совпадал с любым символом.

Пробовал наскоком прикрутить эту штуку, не получилось. То ли там какой-то специфичный синтаксис JavaScript, то ли лыжи не едут:
https://github.com/farzher/fuzzysort/

Пробовал ещё фильтрацию/поиск сделать на регулярках, и как-то сложно выходит. Надо все спец. символы экранировать, да и результаты поиска не совсем ожиданные. Например, при фильтрации по буквам (как сейчас) фильтр вида XYZ вроде бы же соответствует регулярке X.*?Y.*?Z.*? , однако результаты другие.

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

DV wrote:Пробовал наскоком прикрутить эту штуку, не получилось. То ли там какой-то специфичный синтаксис JavaScript, то ли лыжи не едут:
https://github.com/farzher/fuzzysort/
С перетягиванием современного JavaScript на древний JScript из WSH изрядное количество сложностей…
С одной стороны, необходимо притянуть polyfill (если есть, написан на старом добром синтаксисе и притянется) для

Code: Select all

var p = new Promise(
Но, кажется, goAsync() можно не применять и вызывать просто go()...
Вообще, там как-то странно выглядит, копируются огромные участки кода в go()/goAsync(), в первом приближении, как мне кажется, раз уже все равно применены свежие асинхронные Promise, можно, не дублируя код, переписать на генераторах с yield и псевдо-асинхронными опциональными паузами на таймерах. Лично мне было бы лень без веских на то причин поддерживать два куска связанного между собой кода…

Потом заменить Date.now() на new Date().getTime()
И приколхозить аналог setTimeout()
Но, возможно, он и не нужен, если выкинуть goAsync().

А можно на пробу файл с недоприкрученным fuzzysort?

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

А, и еще вместо «var char = target» надо вписать «var char = target.charAt(i)». Возможно, где-то еще есть такие конструкции со строками.

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

Post by DV »

Infocatcher wrote:А можно на пробу файл с недоприкрученным fuzzysort?
Я всего лишь попробовал его вызвать через AkelPad.Include, получил непонятную ошибку, изменил в нём одну строчку, опять получил непонятную ошибку, просмотрел синтаксис в целом, понял, что какая-то диковинка - и на этом прекратил эксперименты.

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

DV wrote:Я всего лишь попробовал его вызвать через AkelPad.Include, получил непонятную ошибку, изменил в нём одну строчку, опять получил непонятную ошибку, просмотрел синтаксис в целом, понял, что какая-то диковинка - и на этом прекратил эксперименты.
Ааа…
Я посмотрел повнимательнее, так у нас еще и поддержки new Map() нет, так что надо весь preparedCache/preparedSearchCache переписывать (если хочется производительности).
А после AkelPad.Include() ругается на использование ключевого слова в качестве свойства объекта, штуки типа { new: null } надо менять на { "new": null }.
Еще беглое обгугливание показало, что современные полифиллы тянут за собой непомерное количество маленьких полифилликов. То-то я смотрю, что современные сайты все хуже и хуже ворочаются… :D
В общем, переписать можно, но муторно.

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

Post by DV »

Infocatcher wrote:
DV wrote:Я всего лишь попробовал его вызвать через AkelPad.Include
В общем, переписать можно, но муторно.
Я таки смог адаптировать эту штуку к JScript.
Сейчас играюсь с её использованием из CommandPalette.js (пока на этапе тестирования, ещё не выкладывал).

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

Post by DV »

Пробная версия CommandPalette.js, использующая Include\fuzzysort.js :
https://github.com/d0vgan/AkelPad-Scrip ... rt/Scripts

Offline
Posts: 348
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

DV
получаю ошибку

Code: Select all

Скрипт:	C:\...\Scripts\Include\fuzzysort.js
Строка:	549
Символ:	5
Ошибка:	Предполагается наличие идентификатора, строки или числа
Код:	800A0404
Источник:	Ошибка компиляции Microsoft JScript

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

AZJIO
А версия синхронизирована? В текущем fuzzysort.js всего 468 строк.

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

Post by DV »

Новый скрипт для выделения текущей строки:
https://github.com/d0vgan/AkelPad-Scrip ... eSelect.js
Внешне возможность выделения текущей строки напоминает оную из скрипта LinesSelectCopyMoveDuplicate.js от KDJ, но в реализации есть существенные отличия:
- LineSelect.js для поддержки перенесенных (word-wrapped) строк проходится по внутренним структурам AECHARINDEX и AELINEDATA, тогда как LinesSelectCopyMoveDuplicate.js для этих целей временно отключает перенос строк (word wrap).
- LineSelect.js при выделении текущей строки поддерживает возможность захвата или исключения завершающего символа переноса строки, а также возможность исключать пробелы и табуляцию в начале и/или конце текущей строки.

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

openFileIn.js v.0.2.0.1 - 2021-08-15

[*] Now used AkelPad.Include() to load openFileIn-options.js.
[+] Added paths for Vivaldi browser.

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

Post by DV »

GoToAnything.js теперь поддерживает нечеткий поиск строки:
https://github.com/d0vgan/AkelPad-Scrip ... nything.js
Например:
@isfuzzy теперь может найти IsTextSearchFuzzy
@gtang теперь может найти GoToAnything

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

Post by yozhic »

Всем доброго здоровья!
AZJIO, texter, запускаю ваш FindReplaceEx.js (на github у texter нашёл) и стабильно происходит краш при вызове `Find All...` -> `Show log panel - entire lines`, т.е. при вызове LogHighlight.js:

Code: Select all

The instruction at 0x1002086d referenced memory at 0x00001a18. The memory could not be read.
Часть строк окна редактора окрашивается в чёрный цвет и вот эта ошибка памяти. AkelPad у меня 4.9.9 последнего коммита, собранный из репозитория самостоятельно. Разрядности обе, и краш на обеих воспроизводится.
При этом SearchReplace_extended.js с той же функцией вызова LogHighlight.js отрабатывает без запинки, всё подсвечивает (очень красиво смотрится, молодцы))).
Не могли бы взглянуть, пожалуйста. Если поможет, готов отгрузить куда-нибудь свою папку с Akel'ем.

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

Post by yozhic »

texter, а Вы в SearchReplace_extended.js CommonFunctions.js от VladSh родной 2.19 используете или «подкручивали» его? Быть может Вам стоит на github'е папку Include создать и туда зависимости положить?

Много удобных хоткеев добавили — это замечательно. Может стоит окошко (даже alert простой) по F1 со шпаргалкой по этим хоткеям добавить? А то все не упомнишь...
Post Reply