Подсветка синтаксиса ISBL в Notepad++

48 31
Вероятно все уже знают про замечательный текстовый редактор Notepad++, но на всякий случай немного расскажу о нем. 
 
Notepad++ — свободно распространяемый текстовый редактор с открытым исходным кодом с подсветкой синтаксиса большого количества языков программирования и разметки.
 
Базовые возможности:
  • Подсветка синтаксиса
  • Сворачивание кода
  • Автодополнение и автоматическое закрытие скобок и тэгов (если активировано)
  • Закладки
  • Регулярные выражения для поиска и замены
  • Запись и воспроизведение макросов
  • Сравнение файлов
  • Менеджер проектов
  • Карта документа
  • Переопределение любых горячих клавиш
  • Резервное копирование сохраняемых файлов (включается в настройках)
  • Трансформация текста при помощи подключённого плагина TextFX
  • Поддержка и конвертирование кодировок ANSI, UTF-8 и UCS-2
  • Блоковое выделение текста, одновременное выделение нескольких разных мест (с  Ctrl )
  • Мультистрочное редактирование (с использованием  Alt )
 

Базовая функциональность программы может быть расширена как за счёт плагинов, так и сторонних модулей, таких как компиляторы и препроцессоры.

Пользуюсь я им уже давно, в основном для просмотра и редактирования файлов в  формате XML, HTML или CSS, а также при разработке кода на javascript или vbscript. За счет того, что текстовый редактор подсвечивает синтаксис используемого языка, очень удобно вносить изменения или вести разработку "с нуля". Список языков, синтаксис которых умеет подсвечивать Notepad++, довольно внушительный, но среди них нет ISBL и это послужило поводом для того, чтобы его к этому списку добавить.

Для того, чтобы добавить подсветку синтаксиса ISBL в Notepad++ необходимо выполнить следующие настройки:
1. Если у вас еще не установлен Notepad++, то качаем его с официального сайта программы и устанавливаем.
2. Качаем приложенный к статье файл настроек пользовательского определения языка ISBL для Notepad++ и распаковываем его в какую-нибудь локальную папку.
3. Запускаем Notepad++, выбираем пункт меню Синтаксис -> Задать свой язык. Нажимаем кнопку "Импортир..." и указываем файл userDefineLang_isbl.xml, который распаковали на предыдущем шаге (что делать с файлом isbl.xml будет сказано дальше по тексту). 
 
 
4. Перезапускаем Notepad++.
5. Если есть желание, то стандартными средствами Windows можно настроить , чтобы файлы с расширением .isbl сразу открывались в Notepad++.
 
Теперь у нас в меню Синтаксис появилась возможность выбрать язык ISBL, в результате чего код ISBL, открытый в Notepad++, будет выглядеть так:
 
 
Помимо подсветки синтаксиса ISBL, были добавлены следующие дополнительные возможности:
1. Сворачивание кода:
 
 
2. Сворачивание комментариев:
 
 
 
3. Выделение вложенных комментариев другим цветом:
 
 
4. Возможность выделять блоки текста с помощью ключевого слова Region
 
 
 
где:
  • Region - ключевое слово начала блока
  • @ - префикс имени блока
  • End - ключевое слово конца блока
 
5. Выделение цветом ключевых слов TODO: FIXME: BUG: TESTDONE:
 
 
В результате мы получили:
  • Большие возможности текстового редактора Notepad++ для просмотра, редактирования и создания кода ISBL.
  • Возможность сохранять фрагменты кода ISBL в файлах с расширением .isbl, для последующего их комфортного просмотра и анализа в текстовом редакторе Notepad++.
  • Возможность печати ISBL кода с подсветкой синтаксиса.
  • Вполне приемлемый способ ведения разработки на ISBL без подключения к системе DIRECTUM. 
  • Возможно кто-то найдет и другие способы применения помимо указанных :)

 

На данный момент реализована подсветка синтаксиса и несколько дополнительных возможностей, описанных выше. Планируется добавить автодополнение для функций и отображение списка доступных функций. 

Из замеченных особенностей стоит отметить, что имена функций и операторов, написанных в кириллице, чувствительны к регистру. Все остальное к регистру нечувствительно.

----- Обновление от 20.09.2013 -----
 
  1. Обновлен файл настроек пользовательского определения языка ISBL:
  • Решена проблема с вылетом Notepad++ при выборе подсветки синаксиса ISBL в документах с кодировкой UTF-8.
  • Исправлены мелкие недочеты. 
  1. Добавлено автозавершение для функций, в наименовании которых нет символов кириллицы.
 
Тем, кто уже успел установить предыдущий файл настроек, перед установкой исправленного, необходимо будет удалить предыдущие настройки.
Для этого необходимо выбрать пункт меню Синтаксис -> Задать свой язык, выбрать пользовательский язык isbl и нажать кнопку Удалить.
 
 
Порядок установки нового файла настроек пользовательского определения языка ISBL описан выше в статье.
 
Для того чтобы заработало автозавершение функций, необходимо файл isbl.xml из архива скопировать в папку "c:\Program Files (x86)\Notepad++\plugins\APIs\" (путь может быть другой, если вы установили Notepad++ в другую папку).
 
Автозавершение выглядит так:
 
 
Также работает подсказка при вводе параметров функций:
 
 
Параметры автозавершения задаются в настройках Notepad++:
 
 
Официальный сайт текстового редактора: Notepad++
Файл настроек пользовательского определения языка ISBL для Notepad++ и файл настроек автозавершения: 

P.S. Замечания принимаются. Пожелания и идеи приветствуются.

48
Авторизуйтесь, чтобы оценить материал.
3
Денис Баранов

Ты все-таки сделал это! smiley

Дмитрий Тарасов
Ты все-таки сделал это! 

Мечты сбываются smiley
Алексей Язынин

Правильно я понимаю, что отладка полученного кода производится только после копирования его в окно редактора ISBL в DIRECTUM? Исправления при отладке вносите в Notepad++ и опять копируете или сразу в окне DIRECTUM правите?

Дмитрий Тарасов
Правильно я понимаю, что отладка полученного кода производится только после копирования его в окно редактора ISBL в DIRECTUM? Исправления при отладке вносите в Notepad++ и опять копируете или сразу в окне DIRECTUM правите?
Я рассматривал Notepad++ всего лишь как текстовый редактор для ввода ISBL кода при отсутствии доступа к системе DIRECTUM, а также для просмотра и анализа сохраненных локально фрагментов кода с готовыми наработками. Соответственно в текущей реализации для отладки кода его придется скопировать в окно редактора ISBL и там отладить. Изменения после отладки кода в Notepad++ тоже придется переносить вручную.
Я уже думал над вопросом интеграции текстового редактора Notepad++ с инструментами разработчика, но этот вопрос требует дополнительного исследования. Кроме того, для Notepad++ можно разработать какой-нибудь плагин, позволяющий отлаживать код ISBL прямо в нем, но так далеко я пока не заглядывал.
Андрей Подкин

Очень круто!

Хотя лично я предпочитаю Sublime Text wink

Дмитрий Тарасов
Хотя лично я предпочитаю Sublime Text 

Андрей, спасибо за наводку. Посмотрел, вроде что-то действительно интересное для разработчиков. Надо будет на досуге с ним поближе познакомиться. smiley
Рашит Сафиев

Круто! Тоже основной редактор - Notepad++.

Sublime text вроде платный, хотя ща можно beta 3 поставить и пользоваться))

Андрей Подкин
Sublime text вроде платный, хотя ща можно beta 3 поставить и пользоваться))
По честному - да. Но вторая версия не требовала покупки, а просто временами напоминала, что хорошо бы заплатить денежку.
Алексей Кашин

NP++ v6.4.5 падает при выборе isbl в синтаксисе.

Дмитрий Тарасов
NP++ v6.4.5 падает при выборе isbl в синтаксисе.

Странно... у меня тоже NP++ 6.4.5, подобных проблем не наблюдал. А при этом в самом редакторе какой-то текст присутствует? Может попробовать его переустановить?
Алексей Кашин
Странно... у меня тоже NP++ 6.4.5, подобных проблем не наблюдал. А при этом в самом редакторе какой-то текст присутствует? Может попробовать его переустановить?

И с текстом и без. Переустановил - то же самое.
 
Дмитрий Тарасов

А другие языки для подсветки нормально выбираются? Не должно пользовательское определение языка убивать Notepad++, т.к. это просто набор регулярных выражений. Могу только предположить, что что-то с кодировками не так и какой-то хитрый символ из определения языка как-то не так воспринимается или возможно стоит проверить региональные настройки системы. 

Дмитрий Тарасов
NP++ v6.4.5 падает при выборе isbl в синтаксисе.

Смог повторить такую же ситуацию. Проблема в том, что у вас скорее всего в настройках Notepad++ у новых документов стоит кодировка не ANSI (например, UTF-8). Настраивается тут:
Опции->Настройки->Новый документ->Кодировка->Выбрать переключатель ANSI
Насчет поддержки кодировки UTF-8, подумаю на досуге...  
Дмитрий Тарасов

Забыл добавить, что все проблемы из-за наименований функций и операторов в кириллице. Если отказаться от их поддержки, то можно будет без проблем сразу добавить автодополнение и проблем с кодировкой UTF-8 тоже не будет. Надо подумать как обойти проблему каким-нибудь другим способом...

Дмитрий Тарасов

Немного подправил настройки, файл настроек, приложенный к статье обновил.

Алексей Кашин
Смог повторить такую же ситуацию. Проблема в том, что у вас скорее всего в настройках Notepad++ у новых документов стоит кодировка не ANSI (например, UTF-8). Настраивается тут: Опции->Настройки->Новый документ->Кодировка->Выбрать переключатель ANSI Насчет поддержки кодировки UTF-8, подумаю на досуге...  

Да, проблема была именно в этом. Поставил ANSI - заработало. Спасибо, Дмитрий.  
Андрей Подкин
Посмотрел, вроде что-то действительно интересное для разработчиков. Надо будет на досуге с ним поближе познакомиться.
Попробуйте спросить в компании DIRECTUM мои старые наработки по поддержке ISBL в Sublime. Там не до конца было сделано, но всё лучше, чем начинать "с нуля".
Артем Моисеев

Браво, Дмитрий!smiley

Дмитрий Тарасов
Попробуйте спросить в компании DIRECTUM мои старые наработки по поддержке ISBL в Sublime. Там не до конца было сделано, но всё лучше, чем начинать "с нуля".

А у вас не осталось? А то я сомневаюсь, что мне что-то дадут и тем более чужую разработку...
Андрей Подкин
А у вас не осталось?
К сожалению, нет.
 
А то я сомневаюсь, что мне что-то дадут и тем более чужую разработку...
Не вижу никаких препятствий к этому. Это опубликовано внутри компании с предложением дорабатывать всем желающим. Думаю, если спросить Дмитрия Чепеля или Степана Мурашова, они не откажутся передать эти наработки. Если, конечно, это все не потерялось.
Дмитрий Тарасов

А ну если так, то попробую.

Сергей Радыгин

При нажатии на ссылку для скачивания возникает ошибка:

Forbidden:

Access to the location: http://

has been denied for the following reason: 
Content-Header type does not match real file type! The Expected file type "AXD" was actually found as "ZIP" file type

 

Дмитрий Тарасов

У меня в хроме все нормально скачивается, только что проверил. Файл паковал в zip с помощью WinRar 4.20. Это у вас там что-то блокирует закачку. Могу выслать на почту, если скачать не получается.

Сергей Радыгин

Ага, проблема была на нашей стороне. 

Извините

Николай Перфильев

Дмитрий! Супер!

Дмитрий Тарасов

Есть небольшие изменения и дополнения, описание в конце статьи. 

Дмитрий Тарасов
Добавил возможность сворачивания конструкций для обработки исключений:
try … finally … endfinally
try … except … endexcept
Архив приложенный к статье, с файлом настройки пользовательского определения языка ISBL для Notepad++ и файлом настроек автозавершения, обновил.
 
Дмитрий Тарасов

Ссылка на скачивание приведена в конце статьи. Сейчас проверил, все нормально качается. Вам, наверно, нужно залогиниться на клабе, тогда ссылка станет доступна, если ее не видно.

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

Регистрация через google не нравится и в правду.

Елена Питомцева

Данила, вам нужно запросить полный доступ - кнопка в профиле и указать дополнительные данные.

Павел Мерганов

Вот запилил вариант разметки, аналогично темной теме в Директум.

В npp пользуюсь темой Obsidian - отображается норм, иногда не подтаскивается шрифт Consolas, 

Только цифры у меня желтые

Прикреплен файл: ISBL_Lang_Dark_v3.7z
 

Авторизуйтесь, чтобы написать комментарий