diff options
Diffstat (limited to 'documentation/content/ru/books/fdp-primer/editor-config/_index.adoc')
| -rw-r--r-- | documentation/content/ru/books/fdp-primer/editor-config/_index.adoc | 323 |
1 files changed, 323 insertions, 0 deletions
diff --git a/documentation/content/ru/books/fdp-primer/editor-config/_index.adoc b/documentation/content/ru/books/fdp-primer/editor-config/_index.adoc new file mode 100644 index 0000000000..8b91e71811 --- /dev/null +++ b/documentation/content/ru/books/fdp-primer/editor-config/_index.adoc @@ -0,0 +1,323 @@ +--- +description: 'Конфигурация, используемая в текстовых редакторах в проекте документации FreeBSD' +next: books/fdp-primer/trademarks +params: + path: /books/fdp-primer/editor-config/ +prev: books/fdp-primer/writing-style +showBookMenu: 'true' +tags: ["editor", "configuration", "vim", "emacs", "FreeBSD"] +title: 'Глава 13. Настройка редактора' +weight: 13 +--- + +[[editor-config]] += Настройка редактора +:doctype: book +:toc: macro +:toclevels: 1 +:icons: font +:sectnums: +:sectnumlevels: 6 +:sectnumoffset: 13 +:partnums: +:source-highlighter: rouge +:experimental: +:images-path: books/fdp-primer/ + +ifdef::env-beastie[] +ifdef::backend-html5[] +:imagesdir: ../../../../images/{images-path} +endif::[] +ifndef::book[] +include::shared/authors.adoc[] +include::shared/mirrors.adoc[] +include::shared/releases.adoc[] +include::shared/attributes/attributes-{{% lang %}}.adoc[] +include::shared/{{% lang %}}/teams.adoc[] +include::shared/{{% lang %}}/mailing-lists.adoc[] +include::shared/{{% lang %}}/urls.adoc[] +toc::[] +endif::[] +ifdef::backend-pdf,backend-epub3[] +include::../../../../../shared/asciidoctor.adoc[] +endif::[] +endif::[] + +ifndef::env-beastie[] +toc::[] +include::../../../../../shared/asciidoctor.adoc[] +endif::[] + +Настройка конфигурации текстового редактора может ускорить и упростить работу с документами, а также помочь им соответствовать рекомендациям FDP. + +[[editor-config-vim]] +== Vim + +Установите из package:editors/vim[], затем следуйте инструкциям по настройке в разделе crossref:editor-config[editor-config-vim-config,Конфигурация]. Более опытные пользователи могут использовать полноценный линтер, например link:https://github.com/dense-analysis/ale[Ale], который также может работать как клиент link:https://langserver.org/[Language Server Protocol] для Vim. + +[[editor-config-vim-use]] +=== Используйте + +Создатели страниц Справочника могут использовать следующие сочетания клавиш для переформатирования: + +* Нажмите kbd:[P], чтобы переформатировать абзацы или выделенный текст в режиме Visual. +* Нажмите kbd:[T], чтобы заменить группы из восьми пробелов на табуляцию. + +В документацию добавлен линтер link:https://vale.sh[Vale] для проверки грамматических и стилистических ошибок. Vale поддерживает различные редакторы и IDE. + +Vale может быть уже установлен как зависимость мета-порта package:textproc/docproj[]. Если нет, установите package:textproc/vale[] с помощью: + +[source, console] +.... +$ pkg install vale +.... + +Установите link:https://github.com/dense-analysis/ale[Ale] для интеграции в package:editors/vim[], чтобы использовать package:textproc/vale[]. + +[source, console?prompt=%] +.... +% mkdir -p ~/.vim/pack/vendor/start +% git clone --depth 1 https://github.com/dense-analysis/ale.git ~/.vim/pack/vendor/start/ale +.... + +Пользователи, использующие менеджеры плагинов для package:editors/vim[], не нуждаются в вышеописанном и должны следовать инструкциям своего менеджера плагинов для установки link:https://github.com/dense-analysis/ale[Ale]. + +В данный момент из-за ошибки в link:https://vale.sh[Vale] необходимо скопировать конфигурацию link:https://vale.sh[Vale] в домашний каталог. Учитывая, что репозиторий был склонирован в [.filename]#~/doc#, скопируйте следующим образом: + +[source, console?prompt=%] +.... +% cp -R ~/doc/.vale* ~/ +.... + +[[editor-config-vim-config]] +=== Конфигурация + +Отредактируйте файл [.filename]#~/.vimrc#, добавив следующие строки в конец файла: + +[source.programlisting, viml] +.`~/.vimrc` +.... +if has("autocmd") + au BufNewFile,BufRead *.adoc call Set_ADOC() + au BufNewFile,BufRead *.[1-9] call Set_MAN() +endif " has(autocmd) + +function Set_Highlights() + "match ExtraWhitespace /^\s* \s*\|\s\+$/ + return 0 +endfunction " Set_Highlights_Adoc() + +function Set_Highlights_MAN() + highlight default link OverLength ErrorMsg + match OverLength /\%71v.\+/ + return 0 +endfunction " Set_Highlights_MAN() + +function ShowSpecial() + setlocal list listchars=tab:>>,trail:*,eol:$ + hi def link nontext ErrorMsg + return 0 +endfunction " ShowSpecial() + +function Set_COMMON() + setlocal number + setlocal shiftwidth=2 + setlocal tabstop=8 + setlocal softtabstop=2 + setlocal formatprg="fmt -p" + setlocal autoindent + setlocal smartindent + call ShowSpecial() + call Set_Highlights() + return 0 +endfunction " Set_COMMON() + +function Set_ADOC() + setlocal syntax=asciidoc + setlocal filetype=asciidoc + call Set_COMMON() + return 0 +endfunction " Set_ADOC() + +function Set_MAN() + setlocal syntax=man + setlocal filetype=man + setlocal textwidth=70 + " Rewrap paragraphs + noremap P gqj + " Replace spaces with tabs + noremap T :s/ /\t/<CR> + call Set_COMMON() + call Set_Highlights_MAN() + return 0 +endfunction " Set_Man() + +let g:ale_fixers = { +\ '*': ['remove_trailing_lines', 'trim_whitespace'], +\} +let g:ale_linters = { +\ 'asciidoc': ['vale'], +\} +let g:ale_fix_on_save = 1 +.... + +[IMPORTANT] +====== +Приведённая выше конфигурация автоматически удалит конечную строку, конечные пробелы и множественные пробелы, которые могут отображать дополнительные нежелательные изменения в выводе `git diff`. В таких случаях обязательно укажите это в сообщении коммита. +====== + +[[editor-config-emacs]] +== Emacs + +Установка из package:editors/emacs[] или package:editors/emacs-devel[]. + +[[editor-config-emacs-igor]] +=== Автоматизированная проверка правописания с Flycheck и Igor + +Пакет link:https://www.flycheck.org/[Flycheck] доступен из link:https://melpa.org/[Milkypostman's Emacs Lisp Package Archive] (MELPA). Если MELPA ещё не добавлен в packages-archives Emacs, его можно добавить, выполнив + +[source, emacs-lisp] +.... +(add-to-list 'package-archives '("melpa" . "http://stable.melpa.org/packages/") t) +.... + +Добавьте строку в файл инициализации Emacs (один из [.filename]#~/.emacs#, [.filename]#~/.emacs.el# или [.filename]#~/.emacs.d/init.el#), чтобы сделать это изменение постоянным. + +Для установки Flycheck выполните + +[source, emacs-lisp] +.... +(package-install 'flycheck) +.... + +Создайте проверяющий модуль Flycheck для package:textproc/igor[] с помощью выполнения + +[source, emacs-lisp] +.... +(flycheck-define-checker igor + "FreeBSD Documentation Project sanity checker. + +See URLs https://www.freebsd.org/docproj/ and +http://www.freshports.org/textproc/igor/." + :command ("igor" "-X" source-inplace) + :error-parser flycheck-parse-checkstyle + :modes (nxml-mode) + :standard-input t) + + (add-to-list 'flycheck-checkers 'igor 'append) +.... + +Еще раз, добавьте эти строки в файл инициализации Emacs, чтобы изменения стали постоянными. + +[[editor-config-emacs-specifc]] +=== Специфичные настройки документации FreeBSD + +Чтобы применить настройки, специфичные для проекта документации FreeBSD, создайте файл [.filename]#.dir-locals.el# в корневом каталоге репозитория документации и добавьте в него следующие строки: + +[source, emacs-lisp] +.... +;;; Directory Local Variables +;;; For more information see (info "(emacs) Directory Variables") + +((nxml-mode + (eval . (turn-on-auto-fill)) + (fill-column . 70) + (eval . (require 'flycheck)) + (eval . (flycheck-mode 1)) + (flycheck-checker . igor) + (eval . (add-to-list 'rng-schema-locating-files "~/.emacs.d/schema/schemas.xml")))) +.... + +[[editor-config-nano]] +== nano + +Установка из package:editors/nano[]. + +[[editor-config-nano-config]] +=== Конфигурация + +В текущей версии nano нет файла подсветки синтаксиса для adoc/asciidoc. Поэтому создадим его с нуля, используя текстовый редактор для создания нового файла или добавления строк в [.filename]#~/.nanorc# со следующим содержимым: + +[source] +.`~/.nanorc` +.... +syntax "asciidoc" "\.(adoc|asc|asciidoc)$" +# main header +color red "^====+$" +# h1 +color red "^==[[:space:]].*$" +color red "^----+$" +# h2 +color magenta "^===[[:space:]].*$" +color magenta "^~~~~+$" +# h4 +color green "^====[[:space:]].*$" +color green "^\^\^\^\^+$" +# h5 +color brightblue "^=====[[:space:]].*$" +color brightblue "^\+\+\+\++$" +# attributes +color brightgreen ":.*:" +color brightred "\{[a-z0-9]*\}" +color red "\\\{[a-z0-9]*\}" +color red "\+\+\+\{[a-z0-9]*\}\+\+\+" +# Paragraph Title +color yellow "^\..*$" +# source +color magenta "^\[(source,.+|NOTE|TIP|IMPORTANT|WARNING|CAUTION)\]" +# Other markup +color yellow ".*[[:space:]]\+$" +color yellow "_[^_]+_" +color yellow "\*[^\*]+\*" +color yellow "\+[^\+]+\+" +color yellow "`[^`]+`" +color yellow "\^[^\^]+\^" +color yellow "~[^~]+~" +color yellow "'[^']+'" +color cyan "`{1,2}[^']+'{1,2}" +# bullets +color brightmagenta "^[[:space:]]*[\*\.-]{1,5}[[:space:]]" +# anchors +color brightwhite "\[\[.*\]\]" +color brightwhite "<<.*>>" +# trailing whitespace +color ,blue "[[:space:]]+$" +# multiples of eight spaces at the start a line +# (after zero or more tabs) should be a tab +color ,blue "^([TAB]*[ ]{8})+" +# tabs after spaces +color ,yellow "( )+TAB" +# highlight indents that have an odd number of spaces +color ,red "^(([ ]{2})+|(TAB+))*[ ]{1}[^ ]{1}" +.... + +Обработать файл для создания встроенных табуляций: + +[source, console?prompt=%] +.... +% perl -i'' -pe 's/TAB/\t/g' ~/.nanorc +.... + +[[editor-config-nano-use]] +=== Используйте + +Укажите дополнительные полезные опции при запуске редактора: + +[source, console?prompt=%] +.... +% nano -AKipwz -T8 _index.adoc +.... + +Пользователи man:csh[1] могут определить алиас в [.filename]#~/.cshrc#, чтобы автоматизировать эти параметры: + +[source, shell] +.... +alias nano "nano -AKipwz -r 70 -T8" +.... + +После определения псевдонима параметры будут добавлены автоматически: + +[source, console?prompt=%] +.... +% nano _index.adoc +.... |
