aboutsummaryrefslogtreecommitdiff
path: root/documentation/content/ru/books/fdp-primer/editor-config/_index.adoc
diff options
context:
space:
mode:
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.adoc323
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
+....