Список

SlickEdit
IAR-AVR
MT-50x
avr_nullptr
empty4
empty5
ВКЛЮЧИТЕ ОТОБРАЖЕНИЕ КАРТИНОК

Краткий экскурс в SlickEdit 11.0.2


Редактор для программиста имеет важное значение, и значимость зависит от реализованных функций. На протяжении нескольких первых лет получения опыта программирования пришлось пройти от тупого блокнота до редактора SlickEdit, про который и будет этот рассказ.
Минимум требований от source-редактора, которые необходимы для комфортной работы:
- настраиваемая подсветка синтаксиса.
- сбор информации о всех использованных функций, классов.
- навигация по коду, нахождение объявлений функций, переменных, DEFINE`ов и прочего.
- Поиск по всем включенным файлам.

Не будем сравнивать, что и как реализовано в Visual Studio, IAR и Borland Builder 6, а расскажу о SlickEdit 11.0.2

Краткое описание

SlickEdit работает на платформаx: Windows, Linux, Mac OS X, Solaris SPARC, HP-UX, AIX, IRIX, Solaris x86 и поддерживает: ActionScript, Ada, ANTLR, Applescript, Awk, Batch, Bourne Shell, C/C++/C#, C Shell, CFML, CFScript, Ch, CICS, Cobol, Config, DB2, DTD, Fortran, Fundamental, GL, HTML, IDL, Imakefile, INI, InstallScript, Intel Assembly, J#, Java, JavaScript, JCL, JSP TagLib, Lex, Makefile, Modula, Objc, OS/390 Assembler, Pascal, Perl, PHP, PL/I, PL/SQL, Python, Ruby, SAS, Slick-C, SlickEdit Color Coding, SlickEdit Message File, SQL Server, Tcl, VBScript, Verilog, VHDL, Visual Basic, VPJ, VSTagDoc, XML, XMLDOC, XSD, Yacc.


Запуск и создание проекта  Пропустить

- При первом запуске предлагается автоматически создать tag-файлы для С++ run time libraries.


Что это дает ? К примеру, установлен Borland Builder, Visual Studio, IAR или другой компилятор. Как правило, в папке компилятора есть заголовочные файлы библиотек, которые SlickEdit собирает в tag-файл. И далее автоматом уже в режиме написания кода производится автоподстановка названий функций и т.п. из tag-файла. Так же SlickEdit можно настроить на автоотслеживание изменений в файлах, которые занесены в tag-файл. Еще можно создать несколько tag-файлов, включить в каждый любые нужные заголовочные файлы, и в зависимости от проекта подключать эти tag-файлы. Таким образом, проект не замусорен излишними функциями, что позволяет при автоподстановке быстрее находить требуемую функцию.
Если требуется, чтобы SlickEdit знал о всех функциях установленного компилятора, смело жмите Create tag-files. Просмотреть какие tag-файлы присутствуют и какие пути они сканировали, а также добавить/удалить/изменить можно в пункте Tools->Tag Files. Единственное, что не совсем удобно то, что SlickEdit автоматически не подставляет в строку "компилятор" IAR, в отличие от более известного Builder, так что придется ручками указать папку заголовочных файлов. Получится примерно так, что даже интегрированный редактор IARа 4.xx не умеет делать:


- Далее, предлагается выбрать назначение клавиш, которое совместимо с одним из редакторов:
CUA (default), SlickEdit (text mode edition), Visual Studio, Visual C++ 6, Brief, CodeWright, Vim, GNU Emacs, Epsilon, ISPF, CodeWarrior, Xcode, BBEdit
Так что если раньше пользовались одним из этих редакторов, то, выбрав нужный пункт можно легче перейти на SlickEdit.
- ну и третий пункт это отличительные характеристики SlickEdit, но можете их не читать, я переведу и расскажу подробно чуть ниже. Так что жмите Close !

Для начала необходимо создать файл проекта: для этого Project->New


Задать шаблон, имя проекту, путь сохранения


В итого всех этих действий получаем окно списка включенных файлов в проект


Для добавления файлов можно включать по отдельности каждый файл через кнопку Add Files, но можно и сразу все файлы в директории, кнопкой Add Tree
В итоге получим окно примерно следующего вида:


По клику OK наконец-то открываем долгожданные исходники !


    Подробней по окну:
  1. навигатор
  2. окно редактирования
  3. закладки на активные файлы
  4. быстрый переход по функциям и не только
  5. Закладки навигатора
  6. Строка статуса
Не стоит пугаться, что SlickEdit перенасыщен окнами, при желании "брюки превращаются в элегантные шорты" =)


Навигатор и закладки

Закладка "Projects" отображает какие файлы к какому проекту относятся с автогруппировкой по типу файлов.
Закладка "Defs" отображает в каком файле текущего проекта что подключено, определено и использовано. Двойной клик сразу делает переход на выделенный элемент.
Закладка "Classes" выводит суммарную информацию по всем файлам проекта о классах, структурах, функциях и переменных, enums, Defines и подключенных файлах


Закладки Open и FTP не особо используются мной, так что если вам не нужны, то можно отключить:
- в контекстном меню на ненужную закладку выбрать Hide
- в контекстном меню навигатора снять ненужные галочки, как показано на рисунке


окно редактирования

Цветовую схему можно менять как угодно. Настраивается это Tools->Options->Color. Имеется 15 готовых схем (Schemes >>).
Выбрать схему можно не только по окну быстрого просмотра с текстом Sample Text, но и сразу смотреть как будет смотреться уже код, нажимая кнопку Apply после выбора интересующей цветовой схемы. К примеру, используемая мною OS/390 ISPF


Строка статуса

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


Навигация по коду

Если в коде встречается функция или переменная, то просмотреть где она определена можно, нажав Ctrl+. или в контекстном меню интересуемого элемента выбрать Go to Definition of

 >> 

Если требуется просмотреть где используется данный элемент, то достаточно нажать Ctrl+/ или в контекстном меню интересуемого элемента выбрать Go to Reference To, и в итоге получим список строк где упомянут требуемый элемент:


Если в процессе навигации по коду требуется вернуться на предыдущую позицию, то следует нажать Ctrl+,

Видео-пример с оффсайта по навигации
Видео-пример с оффсайта по Reference

Описание элемента

Часто требуется, не отвлекаясь от основного окна редактирования, посмотреть реализацию какого-нибудь элемента.
Для этого можно включить окно "Symbol View" View->Toolbars->Symbols, и не переключаясь из основного окна просмотреть реализацию




Видео-пример с оффсайта



Автоматическая вставка шаблонов

в SlickEdit встроен также общепринятый механизм вставки шаблонов наиболее употребительных структурных блоков (if, for, try, while, switch, ...). При вводе первого слова автоматически добавляются открывающие и закрывающие скобки составного оператора и скобки аргументов.



Видео-пример с оффсайта



Окружение с помощью...

Есть и такая для особо ленивых функция, как окружить блок кода операторами как #if, if, for, try, while, case и прочими, и сделать автоматический сдвиг выделенного куска влево (или проще табуляцию).



Видео-пример с оффсайта



Автоподстановка

Очень полезная, на мой взгляд, это функция автоподстановка ( завершение ввода ). К примеру, вы пишите первые буквы, и после короткой паузы редактор ищет все слова в файлах проекта, а также в tag-файлах и предлагает выбрать из всплывающего окна варианты. Выбирается не только имена функций, переменных, членов и методов класса, но и если есть такое же схожее название в комментах.



Видео-пример с оффсайта



Сравнение файлов и папок

нужный инструмент. Вызывается Tools->File Difference или Ctrl+=. Описания особо не требует. Приведу лишь скриншот





Видео-пример с оффсайта



Шаблоны

В SlickEdit имеются готовые шаблоны, и наиболее употребительные можно строить из шаблонов. К примеру требуется для С++ написать свой новый класс Tproduct. Тогда кликнуть в меню Project->Add New Item from Template.., выбрать категорию Installed Templates->C++->Class->C++ Basic Class, задать имя классу, куда его сохранить, и вуаля, получаем готовый наш шаблон !

Файл полностью >

Видео-пример с оффсайта



Алиасы (Псевдонимы)

Алиасы позволяют по короткой строке (которая является псевдонимом) вводить более длинную текстовую строку или блок. Для настройки алиасов, требуется в пункте Tools->Options->Aliases добавить новые по примеру как указано на рисунке

А далее, если в коде ввести swi, то для добавления назначенного алиаса в предложенном всплывающем окне выбрать Aliases->swi->Enter



Видео-пример с оффсайта



Перенос комментариев

Полезная штука, когда вы, не отвлекаясь, пишите комментарий, а редактор автоматически умещает его в указанную ширину символов, которая задается в Document->Comment Setup->Comment Wrap->Fixed width. Но для русского языка эта фича работает не корректно, вставляет знаки вопросов после переноса русских слов =( Для наглядности лучше посмотреть видео-пример

Видео-пример с оффсайта



Архив версий

При каждом сохранении файла он автоматически добавляется в архив. Для просмотра архива на текущий файл можно File->Backup history for
Доступные операции: "Сохранить выбранный файл из архива", "Открыть выбранный файл", "Сравнить выбранные файлы", "Заменить текущий файл выбранным файлом из архива"



Видео-пример с оффсайта



Умная вставка

Что в итоге выйдет в обычном текстовом редакторе если выделенный серым кусок вставить на место курсора ?


вот как это сделает SlickEdit



Видео-пример с оффсайта
Видео-пример с оффсайта



Поиск по синтаксису

Очень мощная вещь, уменьшающая количество некорректных результатов поиска.


К примеру требуется найти все строки где закомментировано MS_ERROR. Тогда кликая в окне Find или Find in Files на кнопку Color снимаем галочки кроме пункта Comment, и запускаем поиск. В результате находиться только строка 297.



Видео-пример с оффсайта

Примечание: при поиске Find in Files редактор создаёт какие-то файлы (похоже на кэши для форсированного поиска), и располагает их к примеру в папке C:\Documents and Settings\Администратор\Мои документы\My SlickEdit Config\14.0.2 (в локализованной версии Windows). Но наличие в пути русских букв вызывает ошибку поиска. Для решения этой проблемы требуется изменить имя пользователя ( можно добавлением новой учетной записи ), а так же изменить конечну папку, это делается заменой в реестре ключа HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Personal


Вычислитель регулярных выражений

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



Видео-пример с оффсайта



Эмуляция

SlickEdit поддерживает 13 раскладок наиболее популярных программ. Причем, можно взять за основу любую раскладку и переназначить любую клавишу по своему усмотрению
Настраивается в Tools->Options->Emulation и Tools->Options->Key Bindings



Видео-пример с оффсайта



Запись и настройка макросов

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

Видео-пример с оффсайта



Командная строка

Командная строка обеспечивает быстрый доступ к наиболее частым командам без участия мышки. Для активизации командной строки нужно нажать Escape и ввести требуемую команду.
Пример работы более быстрого поиска
20 наиболее используемых команд

Видео-пример с оффсайта



Закладки

Нужная вещь, и здесь разработчики учли её ! Для начала требуется открыть окно "закладки" Search->Bookmarks или View->Toolbars->Bookmarks


Для добавления новых закладок нужно поставить курсор на интересующие строки и воспользоваться либо кнопкой "Create a New Bookmark", либо сочетанием клавиш Ctrl+0...Ctrl+9 и строка отметится значком .


Для перехода по закладкам можно кликать по строчкам в окне "Bookmarks", либо еще вариант через командную строку "Escape->Next-bookmark" или настроить кнопки клавиатуры на команды "next->bookmark" и "prev->bookmark"
для добавления/удаления строки в меню выбрать "Search->Toggle Bookmark" или использовать Ctrl+Shift+J
P.S. по умолчанию 15 закладок, но это количество можно изменить до 1000 Tools->Options->General->Search->Bookmarks->Max stack depth


Буферы обмена

Что одного буфера в Windows (не знаю как в других ОС) маловато, а переключатся между окнами и копировать через один буфер всё же тяжеловато. Поэтому появились многое внешние программки для поддержки нескольких буферов обмена, а в SlickEdit это уже встроено. Работа с ним элементарная: выделяете и копируете что угодно стандартными Ctrl+C, а потом вызываете окно Edit->List clipboards или Ctrl+Shift+F и кликаете на строчки, которые требуется вставить


P.S. по умолчанию 15 буферов, но это количество можно изменить до 1000 Tools->Options->General->More->Max Clipboards


Форматирование

По форматированию такие отличительные особенности: выделение/копирование/вставка прямоугольным блоком, встроенные конвертеры Space<->Tab и форматирование открывающих и закрывающих скобок
выделение/копирование/вставка прямоугольным блоком редко используется, но периодическая необходимость в этом возникает. Действует это так: выделяете мышкой текстовый блок как обычно, но при клике правой кнопкой, не отпуская левую кнопку, переходите в режим выделения прямоугольным блоком. Вставка как всегда Ctrl+V, но вставляет блок строчек.






Бывают войны AVR vs PIC, бывают войны C vs ASM, а бывают Space vs Tab =)
Я раньше придерживался Tab, пока не попал на чужие исходники, редактированные в Source Insight с табами: все рваное как британский флаг. С тех пор юзаю только Space, но никому не навязываю.
Конвертирование можно вызвать двумя путями: через меню Edit->Other->Tabs to Spaces или Edit->Other->Spaces to Tabs, а второй вариант это вытащить мышкой на панель инструментов View->Toolbars->Customize->Categories->Edit and Selections кнопки Convert Tabs to Spaces | Convert Spaces to Tabs
Настройка отступов находится в Tools->Options->File Extension Setup->Indent

форматирование стиля

Если вас раздражает стиль K&R, или же наоборот являетесь сторонником, и по этому не любите другие стили, то кликаете Tools->Beautify и выбирайте один из трех вариантов. При изменении стиля автоматически весь текущий файл форматируется согласно выбранному стилю. Так же эти настройки влияют на автоматическую вставку шаблонов


Так же можно несколькими кликами превратить форматирование чужого исходника под себя. Все опции (Engl.). К примеру:



Скрытие блоков текста

Эта функция полезна, если к примеру требуется посмотреть верхнюю и нижнюю часть функции, скрыв не нужную временно среднюю. Работает следующим образом: выделить кусок текста и View->Hide Selections. В верхней границе выделения появляется значок , кликая на который можно отображать/скрывать текстовые блоки


Так же можно скрыть автоматически все комментарии (Hide all Comments), скрыть функцию (Hide Code Block), скрыть все функции, оставив только заголовки (Function Headings)



Сопряжение с компиляторами и не только

Рассмотрим как редактор SlickEdit прикрутить к компилятору IAR.
Project->Project properties вкладка tools выбираем Tool name - Build и в строке Command Line пишем "c:\Program Files\IAR Systems\Embedded Workbench 4.0 Evaluation\common\bin\iarbuild.exe" "%rp%rn.ewp" -build %bn -log all. Можно путь полностью не прописывать, но это понятливее и знаешь где искать =). %rp - SlickEdit Project Path, %rn - SlickEdit Project Name ( все псевдонимы вида %xx ). Имя проекта SlickEdit должно совпадать с именем проекта в IAR, если же имена и/или пути отличаются, то писать вместо %rp%rn.ewp полный путь к IAR-Проекту. К примеру D:/my_projects/key_logger/v11.ewp).
В строке Run from Dir указать %rw (%rw - Project Working Dir)
Поставить галочки Capture output (захватывать вывод от компилятора), Output to build window (перенаправить в окно Build SlickEdit`а), Clear Build window (Очищать окно Build перед новый постройкой проекта) и при желании Beep on Completition (выдать звуковой сигнал по завершению)
В итоге должны получить окно вида


Если так, то все готово: жмите Ctrl+M или в главном меню Build->Build
Если без ошибок, то окно вывода Debug должно иметь сообщение об отсутствии ошибок (Total numbers of errors: 0), примерно как на картинке


Если же IAR обнаружит ошибки, то двойной клик на конкретной ошибке автоматически открывает файл и строку содержащую ошибку


Ключик -log all выдает много сообщений, и не удобно искать ошибки в большом тексте, так что можно его убрать. Пример Output с ошибкой



Также редактор SlickEdit можно прикрутить к программатору, и покажу это на примере широкоизвестого программатора AvReal.
Настройка аналогична: Project->Project properties вкладка tools выбираем Tool name - Execute и в строке Command Line пишем "c:\programs\programm\Avreal\avreal32.exe" -p1 +MEGA128 -as -ew -v -c "%rpRelease\Exe\%rn.hex".
Строку Run from Dir оставить пустой
Поставить галочки Capture output, Output to build window, Clear Build window
В итоге должны получить окно вида


Если так, то все готово: жмите Ctrl+F5 или в главном меню Build->Execute
Если без ошибок, то окно вывода Debug должно иметь привычный для вас вид =):




Один из способов подключения редактора SlickEdit к продуктам фирм Mentor ModelSim/QuestaSim. (© des00)

Разработчики редактора SlickEdit заложили в него очень большие возможности по подключению различных компиляторов. Но к сожалению, что касается подключения компиляторов с HDL языков Verilog/VHDL у них есть только заготовки. Эти заготовки, идущие в поставке редактора меня не удовлетворили и я решил пойти своим путем.
И так задача: создание в SlickEdit HDL проекта, с прозрачным подключением для комфортной работы с QuestaSim.
Шаг 1.
Полное имя компилируемого файла, в SlickEdit определяется за счет иерархических путей служебных файлов "Workspace" и "Project"(подробнее об этом будет ниже). Поэтому для себя, я принял следующее решение об иерархии HDL проекта в SlickEdit.

В такой иерархии коды хранятся папках beh, core, rtl. Include-файлы в папке include (это важно !!!), скрипты для пакетного тестирования и синтеза в папках sim/netlist и описание в папке doc.

Шаг 2.
Создаем новый Workspace. Указываем место для его расположения в корне (!!!) нашего проекта. Затем создаем в нашем Workspace новый проект. При этом при создании проекта, его тип ставим как "Verilog: Model Technology ModelSim".


Шаг 3.
Основой используемый мной язык это System Verilog (SV). Команда компиляции, прописанная в SlickEdit для Verilog по умолчанию, для SV не подходит.

Поэтому нажимаем на кнопку "Customize…" и выбираем тип шаблона проекта, который будем изменять "Verilog : Model Technology ModelSim".


Шаг 4.
Жмем кнопку "Edit…" и попадаем в следующее меню


Шаг 5.
Нас больше всего интересует вкладка Tools, т.к. именно в этой папке и прописаны команды для команд SlickEdit "Compile", "Build" и т.д. используемых для проекта определенного типа.

Теперь небольшое, но важное отступление.

1. QuestaSim это не одна программа, а набор утилит сведенных воедино GUI оболочкой. И ничего не мешает вызывать эти утилиты просто из командной строки.

2. Рабочая библиотека QuestaSim состоит из множества скомпилированных файлов, каждый из которых соответствует своему модулю. Это позволяет свободно вносить изменения в модули, перекомпилировать их и после рестарта моделирования тестировать проект с обновленными модулями.

Поэтому удобно работать с одновременно открытыми SlickEdit и QuestaSim. И в этом случае модификация нужна для единственной команды "Compile". Я рекомендую к использованию следующие настройки этой команды.


Разберем подробно ключи:
1. -novopt - отключает оптимизатор, что бы при отладке была полная видимость внутренностей модуля
2. -sv - включает поддержку языка SV
3. -lint - включает проверку написанного кода на корректность
4. +incdir +%p+%wp\include - эти ключи указывают компилятору QuestaSim где искать include файлы. Ключ %p говорит что искать их нужно в той же папке что и компилируемый файл, а ключ %wp\include добавляет также путь для папки проекта include, расположенной относительно файла workspace (теперь думаю понятно почему я в начале на этом заострил внимание).
5. %p%n%e - это сам компилируемый файл.

Кстати список подставляемых SE параметров можно посмотреть, нажав на кнопку с символом стрелки влево, рядом с полем для ввода команды.

Шаг 6.
Жмем "ОК" и после этого все проекты для языка Verilog будут иметь эти настройки.

Шаг 7.
Как видите в поле "Run from dir" стоит ключ %rw. Это путь к файлу проекта.
Следовательно, по логике работы QuestaSim в этой директории должна размещаться папка с рабочей библиотекой work. Именно для того, что бы не "засорять" иерархию папок проекта "мусором" в виде этой библиотеки и лог файлов моделирования, была заведена отдельная папка "prj".
Но помните, что для работы команды vlog рабочая библиотека уже должна существовать, я делаю ее в ручную, набрав в папке "prj" команду "vlib work".

Шаг последний.
После запуска QuestaSim для моделирования нужно перейти на папку prj и в консоли запустить моделирование, например командой "vsim -novopt work.tb".

Все можно удобно и комфортно работать !

Дополнения

- По умолчанию при копировании выделенного блока автоматически снимается выделение. Отключается Tools->Options->General->Deselect after copy = false
- Комментирование (comment) и раскомментирование (uncomment) выделенного блока по умолчанию не настроено на хоткеи. Делается это в меню Tools->Options->Key Bindings, ищется команда comment, и присваивается ей хоткей (Add Key or Mouse Click, требуемая комбинация 1, Bind), и ищется команда comment-erase, и присваивается ей хоткей (Add Key or Mouse Click, требуемая комбинация 2, Bind). Первым хоткеем на выделенный блок добавляются комменты, ну а вторым отменяются

- При поиске/замене очень удобно автоподставление слова под курсором в строку поиска. Настраивается в Tools->Options->General->Search->Search string initialization->Word a cursor. Работает это так:


- SlickEdit подсвечивает парные скобки, но если это мешает, то отключается Tools->Options->General->More->Paren match style->Highlight matching blocks->false



Недостатки

Для полноценности обзора все же необходимо описать и этот пункт.
- SlickEdit к сожалению платный. Стоит он ориентировочно 280$. Так что если заинтересовал, то придется либо искать в инете кряк, либо юзать триальный, либо покупать
- По отзывам, создалась картина что не под все скриптовые языки проверен SlickEdit: не прыгает по функциям в VHDL и Verilog, а под PHP не всегда корректно отрабатывает Tools->Beautify. Но на сайте сейчас фигурирует версия SlickEdit 2007 так что возможно, что профиксили баги.
- Нарекания вызывает система автоподсказки или автозаполнеия. Если подключить стандартные хедеры Борланда или МСВЦ, то реакция бывает от 10-20 секунд на достаточно быстром компе(П4 3000 гипертрединг 1 гектар памяти), особенно на больших проектах(100-200 файлов с большим количеством идентификаторов(длиной 50-60 символов). Это сильно раздражает. Набираешь if и все блокируется и дальше набираешь уже вслепую... (это пришло мне письмом).


Заключение

Вот и все основные примочки редактора SlickEdit. Еще есть такие общеупотребительные фишки как: "выделить всю функцию одним кликом", "преобразовать в нижний и верхний регистры", "Просмотр в режимах: HEX, Special chars, Spaces, Tab Chars, Line Numbers, ...", "Режим полного экрана", "Калькулятор", "ASCII-таблица", "Поддержка контроля версий", "Форматировать параграф", "Проверка англоязычной орфографии", "поиск по файлам", "настраиваемое меню", но из названий понятен их смысл.


Надеюсь, что моя писанина вам помогла в каких то вопросах, если вы юзаете SlickEdit или заставила задуматься "а не пора ли попробовать SlickEdit" если вам еще не приходило ей пользоваться.
Данная статья не носит заказного и/или рекламного смысла, полностью является плодом моего энтузиазма написать статью об этом редакторе, так как счел отличным инструментом. Если считаете наоборот, то не буду переубеждать, зная что глубоко ошибаетесь =)
Очень интересуют мнения людей, работающих в SlickEdit для дополнения/исправления статьи.
Огромная благодарность des00, Alex B., BlackPrapor за дополнения и комментарии

ссылка на тему электроникса, где можно задавать вопросы по редактору

2012 Кустов Евгений aka MegaJohn (mailto: megajohn@inbox.ru)


Последнее редактирование: 09.07.2015 23:31:31