Глава 14 . Броузер/редактор (ocamlbrowser)
В этой главе описывается OCamlBrowser, броузер исходных текстов и компилированных интрефейсов, написанный на LablTk. Он полезен для программиста.
Функции OCamlBrowser таковы:
-
Навигация по модулям Objective Caml (через компилированные интерфейсы).
-
Редактирование, проверка типов и просмотр исходного текста.
-
Интегрированная оболочка Objective Caml, работающая как дочерний процесс.
14 . 1 Запуск
Броузер запускается командой ocamlbrowser
:
ocamlbrowser options
Он распознает следующие параметры командной строки:
- -I directory
-
Добавляет указанный каталог к списку поиска компилированных файлов. По умолчанию используется только каталог стандратной библиотеки, но он может быть также изменен переменной среды
OCAMLLIB
. - -nolabels
-
Игнорировать неопциональные метки в типах. В этом случае метки не могут использоваться в приложениях, и порядок аргументов становится строгим.
- -oldui
-
Старый многооконный интерфейс. По умолчанию используется более близкий к броузеру классов Smalltalk.
- -rectypes
-
Разрешает во время проверки типа произвольные рекурсивные типы. По умолчанию поддерживаются только рекурсивные типы с рекурсией по типу объекта.
- -w warning-list
-
Включает или выключает предупреждения согласно аргументу
warning-list
.
Большинство параметров также изменяется внутри приложения
командами Modules - Path editor
и
Compiler - Preferences
. Они наследуются при
запускe интерактивной оболочки.
14 . 2 Просмотр
Это первое окно, выводимое при запуске OCamlBrowser. В нем находится поле поиска и список модулей из пути загрузки. В верхней части окна расположена строка меню:
-
File - Open
иFile - Editor
открывают редактор. -
File - Shell
запускает дочерний процесс интерпретатора Objective Caml. -
View - Show all defs
выводит сигнатуру выбраного модуля. -
View - Search entry
выводит или скрывает поле поиска под меню. -
Modules - Path editor
изменяет путь загрузки.Modules - Reset cache
повторно просмартивает путь загрузки и обнуляет кэш модулей. Это полезно, если какой-то интрефейс перекомпилировался, или неизвестно, что в данный момент находится в кэше. -
Modules - Search symbol
позволяет искать символ либо по имени, либо по типу.Exact type
ищет тип с точно такой же информацией как образец (переменные совпадают только с переменными)Included type
позвоялет вводить неполные данные: будут найдены так же типы, принимающие больше аргументов или возвращающие больше данных, а переменные в образце совпадают с чем угодно. В обоих случаях аргументы и порядок кортежа не играют роли1, и аргументы без метки в образце подходят для любой метки. -
Поле
Search
под строкой меню обеспечивает поиск во всех модулях по идентификатору (разрешены шаблоны "?" и "*"). Если выбрать параметрtype
, поиск ведется по включению типа (cp.Search symbol - Included
). -
Кнопка
Close all
закрывает все окна, созданные кнопкойDetach
. При двойном щелчке на ней закрывается броузер.
14 . 3 Просмотр модулей
Модуль выбирается в крайнем слева списке либо щелчком на нем, либо нажатием клавиши Enter при выбранном модулей. В любом поле можно быстро получить доступ к любому элементу, набрав первые несколько букв нужного имени. Двойной щелчок или два нажатия на Enter приводит к выводу полной сигнатуры модуля.
Идентификаторы, определенные в модуле, отображаются слева от первого списка. Если щелкнуть на идентификатору, то, в случае субмодуля, его содержание будет отображено в следующем списке, а в противном случае в поле под списками появится его сигнатура.
Сигнатуры также можно выбирать. Двойной щелчок левой кнопкой мыши на идентификаторе внутри сигнатуры дает сигнатруру идентификатора. Щелчок правой кнопой мыши выводит меню, отображающее декларацию типа идентификатора. Ее заговолок, если он доступен для выбора, опять-таки позволяет перейти к сигнатуре.
В нижней части окна в зависимости от контекста находятся различные кнопки:
-
Detach
копирует сигнатуру, выведенную в данный момент, в новое окно. -
Impl
иIntf
выводят реализацию и интерфейс текущей сигнатуры, если они есть.
Комбинация Control-S
позволяет искать
строку в сигнатуре.
14 . 4 Редактор
Если вы не привыкли к Emacs, можно редактировать файлы в OCamlBrowser. Если же привыкли, используйте OCamlBrowser как броузер, от случая к случаю внося в тексты небольщие изменения.
Меню Edit
включает команды для перехода
(C-g
), поиска (C-s
) и
передачи текущей фразы интрепретатору
(M-x
). Что касается последнего, то его
можно выбрать в диалоговом окне.
Главные функции находятся в меню
Compiler
.
-
Preferences
открывает диалоговое окно с настройками редакторы и системы проверки типов. -
Lex
добавляет подсветку по лексическим категориям. -
Typecheck
проверяет ввод и запоминает его, чтобы можно было увидеть тип выражения, дважды щелкнув на этом выражении. Он работает и для интерфейсов. При обнаружении ошибки вычисляется предшествующая часть интерфейса.После проверки типов шелчок правой кнопкой мыши выводит меню с типом выбранного выражения и, если это возможно, несколькими ссылками.
-
Clear errors
удаляет сообщения об ошибках и предупреждения системы проверки типов. -
Signature
выводит сигнатуру текущего файла (после проверки типов).
14 . 5 Интерпретатор
При вызове интерпретатора появляется диалог, позволяющий задать команду для запуска и заголовок интерпретатора (чтобы удобнее было выбирать сеанс в редакторе).
Интерпретор получает текущие пути библиотек.
-
File
включает исходный текст или загружает байткод. Кроме того, в интерпретатор можно импортировать пути броузера. -
History
. КомбинацииM-p
иM-n
позволяют вызывать предыдущую и последующую фразы в истории, соотвественно. -
Signal
.C-c
прерывает интерпретатор, кроме того, можно остановить его работу.