Отправляет email-рассылки с помощью сервиса Sendsay

Органайзер Aml Pages

  Все выпуски  

Как с помошью синтаксической подсветки текста автоматически выделять семантику пользовательского текста.


Информационный Канал Subscribe.Ru

Aml Pages: новости, советы, ответы на вопросы
Выпуск 28 от 2005-07-30

Маленькие хитрости. Часть 4-я. Синтаксическая подсветка

Добрый день, уважаемые подписчики. Сегодня в очередной части "маленьких хитростей" я попытаюсь рассказать о некоторых любопытных приемах работы в Aml Pages. Речь пойдет о синтаксической подсветке. Вниманию пользователей-НЕпрограммистов: прочитав термин "синтаксическая подсветка", не прекращайте чтение сразу - сегодня пойдет речь вовсе НЕ о программировании (и подсветке ея), а как раз наоборот, более чем обычных ежедневных пользовательских задачах при работе с самым обыкновенным текстом.

Немного истории

В начале марта этого года в Aml Pages была реализована полностью новая синтаксическая подсветка языков программирования. Как я писал в прошлых выпусках рассылки, основным преимуществом новой подсветки было разделение самого алгоритма подсветки, реализованного в коде программы, и правил подсветки, описываемых во внешних, несложного текстового формата файлах. Под правилами здесь подразумевается, какие слова (символы) в каких случаях и какими цветами должны подсвечиваться. Вероятно, постоянные подписчики со стажем помнят упоминание о том, что гордое название синтаксической подсветки языков программирования, не только слишком длинное, но и чересчур частное, лишенное обобщенности. А именно, говорилось о том, что алгоритму подсветки абсолютно не важно, что подсвечивать, и это вовсе не обязательно должен быть язык программирования, или какая-либо другая формальная конструкция. Действительно, в программе присутствует код, только код, и ничего кроме кода. Правила же синтаксической подсветки, описывающие, что и как искать (слова, символы и т.д.), где и как подсвечивать (цвета) хранятся во внешних файлах, и могут описывать какие угодно конструкции. Т.е. говоря обычным языком, алгоритм может также непринужденно подсвечивать и текст "шла Маша по шоссе", лишь бы "Маша" со "Шлой" были описаны в файле подсветки.

Итак, сегодня я хотел бы рассказать о синтаксической подсветке, но не в контексте языков программирования, а применительно к обычной работе с текстом. Рассказать о том, как синтаксическая подсветка может помогать (я бы даже сказал, решать за пользователя 2 трети проблем) в работе с самым обыкновенным НЕпрограммным пользовательским текстом.

Полагаю, многим из Вас приходится группировать Ваши данные в Aml Pages не только в папки, страницы, листочки, но и внутри текста в некие абстрактные категории вроде "не забыть", "очень важно", "сверхсрочно" и т.п. Т.е. делить на некоторые классы согласно Вашей собственной схеме. Нередко пользователи это делают "глазами", но программа в таком разделении может более чем существенно помогать. Конечно, хотелось бы, чтобы текст разных категорий как-то выделялся. В принципе, Aml Pages поддерживает и форматирование цветов текста, и пользовательские стили форматирования. Но есть два "но", незначительных, зато докучающих:

  1. Текст с форматированием может сохраняться только в страницах форматированного текста. А такие страницы, хоть и хранят больше информации о форматировании, в общем случае могут значительно увеличивать размер документа. Что в целом хоть и не прекрасно, но терпимо.
  2. И что важнее, для отметки такого текста, приходится каждый раз "лазить" в команды форматирования. А это бывает затруднительно. Особенно если текст записывается на бегу. А даже если время на "украшательства" и находится, отвлекаться на форматирование, означает отвлекаться от самой задачи пользователя на способ ее решения. Такие отвлечения не способствуют ни комфорту работы, ни лучшему решению задачи. По моему мнению, задача пользователя важнее способа ее решения. Способы решения задачи должны быть проблемой программы.
А частности, мне тоже приходится частенько записывать некий текст, который навскидку достаточно легко поделить на три-четыре категории. К примеру: "Сделать срочно", "Отложить на будущее", "Подумать на досуге с трубочкой английского табака" или что-то в этом роде. Вот как раз для автоматического (именно автоматического, "на лету") выделения цветом такого текста, и более чем применима синтаксическая подсветка. Все что для этого необходимо это включить соответствующую подсветку - дальше программа все будет делать полностью сама.

Но сначала нужно описать правила подсветки, по которым нужно "раскрашивать" текст пользователя. На самом деле в данный момент такие подсветки текста уже есть в дистрибутиве Aml Pages, о чем будет написано ниже, и Вы можете начать пользоваться ими хоть сей момент. Но создать файл правил подсветки отнюдь не сложно. Тем более, что вероятно, у кого-то возникнет желание использовать свою собственную подсветку. Заметим, что правила синтаксической подсветки Aml Pages позволяют описывать конструкции вида:

[признак_начала_подсвечиваемого_текста] [любой_текст] [признак_конца_подсвечиваемого_текста]

Причем признаком конца подсвечиваемого текста может служить, к примеру, и перенос строки, а началом какое-либо специфическое редко используемое сочетание символов или слов, вроде "++" (два плюса) или "##".

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

Что дает такой подход к подсвечиванию текста?

  • Вам вообще не требуется обращаться в командам форматирования!!! Вы как обычно вводите свой текст, разве что, поставив где-то в его начале что-то вроде "++" или "##".
  • Вы не отвлекаетесь на оформление текста!!! Вы на самом деле полностью на 100% сосредотачиваетесь на своей собственной задаче - а именно на Вашем тексте. Не отвлекаясь на способ решения, Вы решаете саму задачу. Согласитесь, если в классификации присутствует 3-4 категории текста, то значительно быстрее сообразить "налево? направо? прыжок на месте?" и сразу отнести текст к какой-либо категории, а не задумываться о форматировании. В конце концов, Вы легко можете в последствии вернуться к этому тексту и изменить его категорию (просто изменив в тексте эти самые "++" или "##").
  • Поменяв правила подсветки (цвета подсветки, к примеру), Вы сразу увидите текст подсвеченным в соответствии с новыми правилами. Вам не приходиться думать о том, что текст одной и той же категории ("Не забыть") в разных местах форматируется по разному. Весь текст с такими атрибутами подсветки во всех частях документа будет выглядеть абсолютно одинаково.
  • Работать с подобным текстом в последствии значительно удобнее. В той или иной степени весь текст уже разбит на некоторые части, категории. "Структура" такого текста видна сразу же. К тому же, если часть текста не отнесена ни к одной из категорий, она не подсвечивается и такие "неопределенные" фрагменты легко находить.
  • Ну и последнее в списке, но не по значению. Такой текст совершенно спокойно может храниться и в виде обычного текста (страниц простого текста, Plain Text), не съедая драгоценные байты Вашего документа. Хотя замечу, что форматированный текст подсвечивается совершенно с таким же успехом - т.е. все будет работать абсолютно точно так же и со страницами форматированного текста.

В последних версиях Aml Pages по просьбам некоторых пользователей в дистрибутив программы включена такая подсветка. Это как раз и есть моя собственная подсветка текста, которая так и называется "Как у Carc`а" - это та самая подсветка, которая приведена как пример выше ("категории" текста). В файле-примере (sample.apd) в дистрибутиве Aml Pages есть пример этой синтаксической подсветки - с ним можно и "поиграться" и посмотреть, как это работает. Хотя отмечу, что плюсы синтаксической подсветки особенно заметны именно в интенсивной работе, когда "всё время некогда", и Вы обращаетесь к Aml Pages чтобы как можно быстрее, не теряя времени, записать что-то важное.

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

Вопросы и ответы (FAQ, по материалам почты)

Приводит ли подсветка к изменению данных документа?
Нет. Документ хранит только данные о выбранной подсветке (одна подсветка на одну страницу документа). Подсветка текста производится "на лету" и не приводит к изменению документа.
Что произойдет, если Aml Pages не обнаружит конкретный файл подсветки?
Программа сообщит, что файл подсветки не найден, и просто не будет подсвечивать текст страницы. Как только Aml Pages "получит" файл подсветки, подсветка снова будет применяться (если подсветку не отключили, впрочем включить подсветку обратно можно двумя щелчками мыши).
Как переносить файлы подсветок?
Для установки файла подсветки достаточно просто расположить его в папке Aml Pages. И ничего более. Никаких дополнительных "регистраций" файла подсветки не требуется. Программа обнаруживает все файлы подсветок в процессе работы. Если Вы часто работаете с Aml Pages в разных местах или не уверены, что на "соседнем" компьютере будет присутствовать файл Вашей подсветки, то Вы можете просто носить все файлы подсветок с собой - их суммарный обьем не превышает и 20 килобайт (сравните эту цифру с документом содержащим множество форматированного текста).
Как Aml Pages сохраняет данные о выбранной подсветке?
При выборе подсветки Aml Pages заносит в страницу документа имя файла подсветки. Причем именно имя файла, а не полный путь к нему, т.к. файлы подсветок всегда ищутся в папке программы. Именно по имени файла программа и ищет файл подсветки. Поэтому, если Вы пользуетесь своим собственным файлом подсветки, старайтесь выбирать имя файла так, чтобы в дальнейшем не было необходимости его изменять. Формат ash-файлов позволяет описывать заголовок подсветки в меню Aml Pages непосредственно внутри файла подсветки. Рекомендуется выбирать для своих файлов более или менее уникальное имя, чтобы в будущем не возникало конфликтов с файлами других авторов.
Какие подсветки в Aml Pages есть уже сейчас?
С++, MFC (некоторые особенности библиотеки MFC), Visual Basic, ASH (скрипт файлов подсветки), NSIS-скрипт (NullSoft Installation System), SQL, HTML (Web страницы), Delphi (© Сергей Пуховский), E-mail (текст писем электронной почты), файлы истории версий Aml Pages.

Итак, резюмируя:

  • Правила синтаксической подсветки хранятся во внешних файлах (файлы с расширением ash в папке Aml Pages) и могут быть изменены на собственный вкус любым пользователем в любой момент.
  • Можно создавать и новые файлы, для их подключения к Aml Pages достаточно просто поместить файл в папку Aml Pages.
  • Сами файлы сохраняются в несложном текстовом формате, который можно редактировать даже с помощью стандартного Блокнота Windows.
  • Большая часть файлов синтаксической подсветки из дистрибутива Aml Pages снабжена комментариями, поясняющими ту или иную конструкцию в ash-файле.
  • Полное и подробнейшее описание формата файлов синтаксической подсветки есть, как и в справке программы, так и на сайте. Там же Вы найдете советы по использованию, примеры и ответы на вопросы.

Начата разработка специального редактора файлов синтаксической подсветки, который сильно упростит как редактирование файлов подсветки, так и просто наглядный анализ формата ash-файлов, беря большую часть механической работы на себя. Больше подсветок - хороших и разных. Желающим увидеть прототип редактора - стучаться в почту, к тому же вопрос о названии такого редактора еще открытый. А как корабль назовешь... А каково Ваше мнение?

Надеюсь, сегодняшний выпуск получился интересным. Но ввиду нехватки времени не буду сегодня писать о новостях, плагинах и прочих динамичных частях проекта. Забегайте в "Новости" - львиная доля действительно существенных новостей там анонсирована.

Ну, и как всегда, если возникают вопросы, есть пожелания - стучаться в почту или милости прошу в форум Aml Pages, там порою происходят весьма жаркие и на весьма философские темы дискуссии (что лично меня чрезвычайно искренне радует).

PS: В прошлом выпуске рассылки я просил высказаться по поводу дизайна программы установки. Вопрос звучал примерно так: "Что Вы предпочитаете лучший дизайн программы установки Aml Pages или ее меньший размер?". Отдельное спасибо всем ответившим. Также на результаты голосования по этому вопросу можно посмотреть на сайте Aml Pages. Порядка 80% высказались за лучший дизайн, пусть хоть немного (40-50 кб) в ущерб размеру. Но т.к. скрипт установки Aml Pages достаточно сложен, то программа пока не обзавелась новой установкой. Но как примерно будет выглядеть новый дизайн программы установки можно посмотреть на примере программы установки файла справки Aml Pages и некоторых из плагинов.


До встречи
Мазов Гоша aka Carc


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: industry.soft.amlpages
Отписаться
Вспомнить пароль

В избранное