Особенности сборки VIm в дистрибутивах ALT Linux. 1. Разбивка на под-пакеты. {{{1 + vim-minimal: options=TINY, GUI=none + vim-common: общие файлы для всех вариантов сборки + vim-enhanced: options=HUGE, +perl/ruby/tcl, GUI=none + vim-X11: общие файлы для всех GUI вариантов сборки + vim-X11-athena: options=HUGE, +perl/ruby/tcl, GUI=Xaw + vim-X11-gtk: options=HUGE, +perl/ruby/tcl, GUI=Gtk+ + vim-X11-gtk2: options=HUGE, +perl/ruby/tcl, GUI=Gtk+2 + vim-X11-motif: options=HUGE, +perl/ruby/tcl, GUI=Motif (OpenMotif) + vim-X11-neXtaw: options=HUGE, +perl/ruby/tcl, GUI=neXtaw + vim-devel: rpm макросы, необходимые для сборки дополнительных плагинов Переключение между различными вариантами сборки производится при помощи пакета alternatives. 1}}} 2. Инициализация. {{{1 Процесс инициализации VIm описан в ":help initialization", отличия в сборках ALT Linux: Чтение файлов конфигурации происходит в следующем порядке (* помечены файлы, обрабатываемые GUI версией VIm): + /etc/vim/vimrc + ~/.vimrc + /etc/vim/gvimrc (*) + ~/.gvimrc (*) По умолчанию опция 'runtimepath' выглядит следующим образом: + ~/.vim + /usr/share/vim/vimfiles + $VIMRUNTIME (/usr/share/vim) + /usr/share/vim/vimfiles/after + ~/.vim/after 1}}} 3. RPM макросы. {{{1 В пакете vim-devel находятся RPM макросы, облегчающие сборку дополнительных плагинов: 3.1 Глобальные каталоги, используемые VIm: {{{2 + %vim_dir - $VIMRUNTIME (/usr/share/vim) + %vim_runtime_dir - global runtime (/usr/share/vim/vimfiles) + %vim_after_dir - global runtime "after" (/usr/share/vim/vimfiles/after) 2}}} 3.2 Дополнительные подкаталоги в %vim_runtime_dir: {{{2 + %vim_bitmaps_dir - .../bitmaps + %vim_colors_dir - .../colors + %vim_compiler_dir - .../compiler + %vim_doc_dir - .../doc + %vim_ftdetect_dir - .../ftdetect + %vim_ftplugin_dir - .../ftplugin + %vim_indent_dir - .../indent + %vim_keymap_dir - .../keymap + %vim_lang_dir - .../lang + %vim_plugin_dir - .../plugin + %vim_print_dir - .../print + %vim_syntax_dir - .../syntax 2}}} 3.3 Дополнительные подкаталоги в %vim_after_dir: {{{2 + %vim_after_compiler_dir - .../compiler + %vim_after_ftplugin_dir - .../ftplugin + %vim_after_indent_dir - .../indent + %vim_after_plugin_dir - .../plugin + %vim_after_syntax_dir - .../syntax 2}}} 3.4 Макрос, определяющий URL по номеру скрипта: {{{2 + %vim_script_url() Пример использования: Url: %vim_script_url 39 Этот макрос будет раскрыт в: Url: http://www.vim.org/scripts/script.php?script_id=39 2}}} 3.5 Макросы для post-скриптов в пакете: {{{2 + %update_vimhelp - обновление helptags после установки + %clean_vimhelp - обновление helptags после удаления пакета Пример использования: %post %update_vimhelp %postun %clean_vimhelp 2}}} 1}}} 4. Рекомендации сборке дополнительных плагинов. {{{1 Все пакеты с дополнительными плагинами (кроме переводов официальной документации) должны придерживаться следующих правил: 4.1 Общие рекомендации. {{{2 Имена пакетов должны иметь вид vim-plugin-NAME[-TYPE], где NAME - название пакета TYPE - тип пакета (опционально) Как правило, тип пакета зависит от его местонахождения. Рекомендуемые типы пакетов: .../colors - colors .../compiler - compiler .../ftplugin - filetype .../indent - indent .../plugin - не используется .../print - print .../syntax - syntax Все пакеты должны иметь сборочную зависимость на vim-devel: BuildPreReq: vim-devel !!!ВНИМАНИЕ!!! Эта зависимость не определяется автоматически при помощи buildreq из пакета rpm-utils. Все пакеты должны иметь runtime зависимость на vim-common: PreReq: vim-common Все пакеты, содержащие документацию должны обновлять индексные файлы справки: %post %update_vimhelp %postun %clean_vimhelp 2}}} 4.2 Расположение файлов. {{{2 Все скрипты и документация должны находиться внутри %vim_runtime_dir. Поскольку скрипты в %vim_runtime_dir обрабатываются раньше скриптов в $VIMRUNTIME, это позволяет переопределить стандартные цветовые схемы, компиляторы, и т.д. 2}}} 4.3 Конфигурация по умолчанию. {{{2 Все плагины, переопределяющие стандартные скрипты из vim-common (для типов compiler, indent, print, syntax), и все плагины с типами filetype и plugin, должны быть по умолчанию выключены. Механизм включения должен быть одинаковым для всех плагинов. Это достигается добавлением следующего кода в начало скрипта: if !exists("use_name_type") finish endif где "use_name_type" - уникальная переменная, состоящая из имени плагина (не обязательно совпадающего с именем скрипта, например плагин vimruby, скрипт ruby.vim) и опционально типа скрипта. Для использования плагина пользователю достаточно в .vimrc добавить строку: let use_name_type = 1 о чём должно быть упоминание в %description пакета: ... To enable this plugin define "use_some_filetype" variable somewhere in your .vimrc file. Если какие либо из плагинов попадают в основной дистрибутив VIm, в пакет vim-common прописывается соответствующий Obsoletes: Provides: vim-plugin-NAME-TYPE = VERSION.vim Obsoletes: vim-plugin-NAME-TYPE <= VERSION При этом к версии плагина, указанной в Provides пакета vim-common, добавляется суффикс ".vim". 2}}} 4.4 Переводы официальной документации. {{{2 Структура переводов официальной документации описана в ":help help-translated". Пакет с документацией имеет следующие отличия: 1. Имя пакета vim-doc-LL, где LL - духсимвольный код языка 2. Пакет содержит только файлы %vim_dir/doc/*.LLx и %vim_dir/doc/tags-LL 3. В post-скриптах не нужно вызывать %update_vimhelp/%clean_vimhelp 2}}} 1}}} vim:tw=78:fdm=marker:fo=tcqn21:noet:norl: