Pull to refresh

Вертикальное выравнивание кода + немного Punto

Reading time 2 min
Views 21K
Приветствую. Поговорим о вертикальном выравнивании кода?

Итак, вдохновившись недавней статьей я понял как надо. Полностью автоматическое выравнивание + парсинг синтаксиса вещь конечно удобная, но нет. И у меня родилась идея. Мы просто даем программисту самому в каждом конкретном случае определить, по каким символам и в каких местах выравнивать код.

Работает это в любом редакторе и с любым текстом. Как-то так:



Сразу забрать приложение можно тут: sourceforge.net/projects/tnice/files
(выделяем текст, жмем Ctrl+Shift+D, пишем символы выравнивания, жмем Ctrl+Enter)
А подробный мануал и принцип работы под катом.

Почему немного Punto?

У меня давно назревала мысль отказаться от поделки под называнием Punto Switcher. Он использует глобальные хуки (а это большая ответственность), я ему не доверяю, т.к. он сам лазает проверять обновления, хотя галки не стоят. Неоднократно нарывался на ошибки, к которым приводил Punto. Поэтому самую важную функцию: конвертирование раскладки — я вынес в этот софт. Так же в него попала функция конвертирования капса + перевод текста в транслит (на всякий случай :D ). Ну и конечно же киллер-фича — выравнивание кода по вертикали.

Но как же без хуков?

В общем софт работает так. Когда случается хоткей софт делает следующее:
1. Бекапит текущий текст в буфере обмена
2. Очищает буфер обмена
3. Эмулирует нажатие Ctrl+C
4. Ждет появления в буфере обмена текста (постоянно проверяя его через GetClipboardSequenceNumber раз в 10мс, и так в течение одной секунды)
5. Как только текст появился — либо сразу конвертирует, либо запускает редактор
6. В случае успешного редактирования — кладет в буфер обмена новый текст
7. Эмулирует нажатие пользователем Ctrl+V
8. Ждет пол секунды и восстанавливает старый буфер обмена. Если на любом из этапов после второго — что-то пойдет не так, все равно восстанавливает текст в буфере обмена.

Как пользоваться.

После запуска будет иконка в трее. Клик по иконке развернет окно настроек:



В нем слева хоткеи на все функции. На скриншоте первый хоткей — это 'Shift + ' На самом деле там должен быть Pause|Break, но дефолтный виндовый контрол почему-то не оторбражает его. Зеленые галочки означают что хоткей был успешно установлен. Справа опции для окна вертикального выравнивания. В общем интуитивно понятный интерфейс ^_^.

Основной юзкейс — выделяем кусок текста, жмем хоткей. Конвертирование будет происходить сразу, а вот для выравнивания кода будет запущен редактор:



В нем в правой части на каждой строке пишем подстроки, по которым будем выравниваться. Когда все написали — жмем Ctrl+Enter и редактирование будет завершено (либо Esc для отмены редактирования).

Что же дальше.

Нужно доработать мануалы и описание на sourceforge. Добавить галку автозагрузки. Хотелось бы добавить звук при конвертиорвании текста (как у пунто).

Проект открыт, лицензия будет GNU.

Теперь вы знаете, как я провел вчерашнее воскресенье.

Sourceforge TNice.

upd. 15.07.2014
Исправлены ошибки при конвертировании языка.
Исправлена ошибка при конвертировании транслита найденная товарищем cmepthuk
Ожидание буфера теперь через GetClipboardSequenceNumber.
Восстановление фокуса исходного окна при отмене редактирования.

upd. 21.07.2014
Исправлен баг конвертирования раскладки
Tags:
Hubs:
+43
Comments 32
Comments Comments 32

Articles