--- description: 'Configuração usada nos editores de textos do Projeto de Documentação do 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: 'Capítulo 13. Configuração do Editor' weight: 13 --- [[editor-config]] = Configuração do Editor :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::[] Ajustar a configuração do editor de texto pode tornar o trabalho nos arquivos da documentação mais rápido e fácil, além de ajudar os documentos a ficarem em conformidade com as diretrizes do projeto. [[editor-config-vim]] == Vim Instale o package:editors/vim[] e em seguida siga as instruções em crossref:editor-config[editor-config-vim-config, Configuração]. Usuários mais avançados podem usar um linter mais adequado como o link:https://github.com/dense-analysis/ale[Ale] que também pode atuar como um link:https://langserver.org/[Protocolo de Servidor de Idiomas] do Vim. [[editor-config-vim-use]] === Uso Os escritores de páginas de manuais podem usar os seguintes atalhos de teclado para reformatar: * Pressione kbd:[P] para reformatar parágrafos ou texto selecionado no modo Visual. * Pressione kbd:[T] para substituir grupos de oito espaços por um tab. Um linter chamado link:https://vale.sh[Vale] foi adicionado para verificar erros gramaticais e cosméticos nos documentos. O Vale possui suporte para diversos editores e IDEs. O Vale já é instalado como uma dependência do package:textproc/docproj[] meta-port. Caso contrário, instale package:textproc/vale[] com: [source, console] .... $ pkg install vale .... Instale o link:https://github.com/dense-analysis/ale[Ale] para intergrar o package:textproc/vale[] com o package:editors/vim[]. [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 .... Os usuários que estão usando gerenciadores de plug-in no package:editors/vim[] não precisam dos passos acima e devem seguir as instruções do próprio gerenciador de plug-in para instalar o link:https://github.com/dense-analysis/ale[Ale]. Neste momento devido a um bug no link:https://vale.sh[Vale] é necessário copiar a configuração do link:https://vale.sh[Vale] para o diretório home. Considerando que o repositório foi clonado em [.filename]#~/doc# da seguinte forma: [source, console?prompt=%] .... % cp -R ~/doc/.vale* ~/ .... [[editor-config-vim-config]] === Configuração Edite o [.filename]#~/.vimrc#, adicionando estas linhas ao final do arquivo: [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/ 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] ====== A configuração acima removerá automaticamente a linha final, o espaço final e vários espaços que podem exibir alterações indesejadas adicionais na saída do `git diff`. Nesses casos, mencione isso adequadamente no log de commit. ====== [[editor-config-emacs]] == Emacs Instale-o a partir de package:editors/emacs[] ou package:editors/emacs-devel[]. [[editor-config-emacs-igor]] === Revisão Automatizada com Flycheck e Igor O pacote link:https://www.flycheck.org/[Flycheck] está disponível no link:https://melpa.org/[Emacs Lisp Package Archive da Milkypostman] (MELPA). Se a MELPA ainda não estiver nos repositórios de pacotes do Emacs, ele pode ser adicionado executando [source, emacs-lisp] .... (add-to-list 'package-archives '("melpa" . "http://stable.melpa.org/packages/") t) .... Adicione a linha ao arquivo de inicialização do Emacs (qualquer um deles, [.filename]#~/.emacs#, [.filename]#~/.emacs.el#, ou [.filename]#~.emacs.d/init.el#) para tornar esta alteração permanente. Para instalar o Flycheck, execute [source, emacs-lisp] .... (package-install 'flycheck) .... Crie um verificador Flycheck para package:textproc/igor[] executando [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) .... Novamente, adicione essas linhas ao arquivo de inicialização do Emacs para tornar as mudanças permanentes. [[editor-config-emacs-specifc]] === Configurações Específicas da Documentação do FreeBSD Para aplicar configurações específicas para o projeto de documentação do FreeBSD, crie o arquivo [.filename]#.dir-locals.el# no diretório raiz do repositório de documentação e adicione estas linhas ao arquivo: [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 Instale o aplicativo package:editors/nano[]. [[editor-config-nano-config]] === Configuração Atualmente não há arquivo de highlight de sintaxe adoc/asciidoc com distribuição nano. Então vamos criar um do zero e usar um editor para criar um novo arquivo ou adicionar linhas no [.filename]#~/.nanorc# com este conteúdo: [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}" .... Processe o arquivo para criar guias incorporadas: [source, console?prompt=%] .... % perl -i'' -pe 's/TAB/\t/g' ~/.nanorc .... [[editor-config-nano-use]] === Uso Especifique opções úteis adicionais ao executar o editor: [source, console?prompt=%] .... % nano -AKipwz -T8 _index.adoc .... Usuários do man:csh[1] podem definir um alias em [.filename]#~/.cshrc# para automatizar estas opções: [source, shell] .... alias nano "nano -AKipwz -r 70 -T8" .... Depois que o alias é definido, as opções serão adicionadas automaticamente: [source, console?prompt=%] .... % nano _index.adoc ....