Double Shift / Search Everywhere - новый плагин

Post Reply
dimon40001
Posts: 41
Joined: 05.05.2022 18:52

Double Shift / Search Everywhere - новый плагин

Post by dimon40001 »

Привет,

написал новый плагин Double-Shift. Позволяет назначить команды на хоткеи двойного нажатия по аналогии с JetBrains IntelliJ IDEA и т.д.

https://synwrite.sourceforge.net/forums ... php?t=3284

Готового плагина не нашел, до сих пор делал подобное под Windows через AutoHotKey. Теперь это реализовано средствами CudaText.

Устанавливается через Git.

Под Linux работает, но не на всех версиях, детально не анализировал пока.
Тормозов не наблюдаю, работает оперативно.
main Alexey
Posts: 2807
Joined: 25.08.2021 18:15

Re: Double Shift / Search Everywhere - новый плагин

Post by main Alexey »

спасибо. у меня работает (Вин10 пока пробовал).
обязательно посмотрите issues в Гитхабе от меня.
dimon40001
Posts: 41
Joined: 05.05.2022 18:52

Re: Double Shift / Search Everywhere - новый плагин

Post by dimon40001 »

Code smells и оптизмизацию сделал.

Насчет имени репозитория я тоже думал, что это узкое место.

Хотелось бы сохранить в своем гитхабе организованную структуру.
С другой стороны плохо, если имя плагина будет выделяться и ломать структуру папок.

Как я понимаю, CudaText хочет, чтобы имя репозитория и subdir однозначно совпадали? Когда я сделал разное - то вылетала ошибка при попытке установить.

Code: Select all

[info]
title=Double-Shift
type=cudatext-plugin
subdir=cuda_double_shift ### ТАК НЕ СРАБОТАЛО...
subdir=foss-cudatext-plugin-doubleshift ### А ТАК СРАБОТАЛО
...
dimon40001
Posts: 41
Joined: 05.05.2022 18:52

Re: Double Shift / Search Everywhere - новый плагин

Post by dimon40001 »

Обнаружился еще побочный эффект связанный с тем, что on_key_up() не обрабатывает нажатие символов алфавита, а только служебные клавиши.

А именно, если быстро набирать uppercase по одной клавише, или что-то со скобками, например, шибанг #!, то плагин будет ловить эти нажатия.

Решением может быть ловить нажатия, а не отпускания, но я не хотел этого делать, т.к. интуитивно решил, что это будет замедлять работу плагина и редактора. По идее, как я понимаю, достаточно поменять event on_key_up() на on_key() в inf-файле и в названии метода.

Либо просто уменьшить задержку, которая считает два нажатия подряд как "двойное".

UPD: через on_key() тоже работает, побочный эффект устраняется, торможения не наблюдается. У самого не хватает знаний, чтобы судить, какой способ предпочесть.
main Alexey
Posts: 2807
Joined: 25.08.2021 18:15

Re: Double Shift / Search Everywhere - новый плагин

Post by main Alexey »

да, простой on_key будет замедлять. но есть трюк чтобы не замедляло. около события в install.inf надо прописать фильтр - коды клавищ через запятую которые on_key только и поймает.
если в фильтре будут и "буквы" то все равно замедлит.

===Wiki:
Only for "section=events":

* "events": comma-separated list of events to handle in plugin, e.g. "events=on_change,on_caret".
* "keys": supported only for several events:
** for "on_key": comma-separated list of int key codes to handle in event, e.g. "keys=9" means that event is only called for key code 9 (Tab char).
** for "on_open" / "on_open_pre": comma-separated list of lower-case file extensions, without leading dot, to handle in event.
main Alexey
Posts: 2807
Joined: 25.08.2021 18:15

Re: Double Shift / Search Everywhere - новый плагин

Post by main Alexey »

>Как я понимаю, CudaText хочет, чтобы имя репозитория и subdir однозначно совпадали?

да.
main Alexey
Posts: 2807
Joined: 25.08.2021 18:15

Re: Double Shift / Search Everywhere - новый плагин

Post by main Alexey »

> У самого не хватает знаний, чтобы судить, какой способ предпочесть.

лучше способ с меньшей паузой но только если он все хорошо фиксит.
dimon40001
Posts: 41
Joined: 05.05.2022 18:52

Re: Double Shift / Search Everywhere - новый плагин

Post by dimon40001 »

main Alexey wrote: 30.11.2025 18:14 > У самого не хватает знаний, чтобы судить, какой способ предпочесть.

лучше способ с меньшей паузой но только если он все хорошо фиксит.
Опытным путем установил, что оптимальная задержка 150-200 ms.

Вижу еще одно потенциальное решение - подписываться на оба события и считать от первого нажатия до последнего отпускания.
Это отфильтрует ситуации, когда человек нажал и держит Shift, ищет глазами кнопку на клавиатуре, а потом быстро нажимает и отпускает Shift второй раз. Сейчас это вызовет активацию плагина, т.к. замеряется время именно между отпусканиями (что строго говоря не совсем является дабл-кликом по клавише).
mix-7
Posts: 1041
Joined: 11.05.2018 11:02

Re: Double Shift / Search Everywhere - новый плагин

Post by mix-7 »

Здравствуйте!
Спасибо за плагин!

А как им управлять?
В Plugins его нет в списке.
Через Config в plugins.ini?

Двойной Shift и двойной Ctrl срабатывает не всегда.
Нужно делать второй клик с минимальной задержкой, как две точки подряд в телеграфе Морзе.

И что он делает?
Как повесть различные команды?

Чем отличаются три ветви в Git'у?


CudaText 1.230.2.0, linux-x86_64-qt5, fpc 3.2.3
Ubuntu 24.04.3 LTS 64-бит X11 Gnome 46
main Alexey
Posts: 2807
Joined: 25.08.2021 18:15

Re: Double Shift / Search Everywhere - новый плагин

Post by main Alexey »

да, им управлять через секцию конфига в plugins.ini.
при вызове 'Options / Settings-plugins / ....' он запишет в plugins.ini опции. вот их менять.
паузу между нажатиями там можно менять.
и обе команды можно менять (dbl Shift click, dbl Ctrl click).
Post Reply