git: 0800484e9a - main - update translation of articles/freebsd-src-lsp to Russian
Vladlen Popolitov <[email protected]>
| Newsgroups | gmane.os.freebsd.devel.cvs.doc |
|---|---|
| Message-ID | <[email protected]> |
The branch main has been updated by vladlen: URL: https://cgit.FreeBSD.org/doc/commit/?id=0800484e9a44655fb734931eae7833513221a817 commit 0800484e9a44655fb734931eae7833513221a817 Author: Vladlen Popolitov <[email protected]> AuthorDate: 2025-09-25 15:22:49 +0000 Commit: Vladlen Popolitov <[email protected]> CommitDate: 2025-09-25 15:22:49 +0000 update translation of articles/freebsd-src-lsp to Russian Reviewed by: maxim (mentor) Approved by: maxim (mentor) Differential Revision: https://reviews.freebsd.org/D51972 --- .../ru/articles/freebsd-src-lsp/_index.adoc | 268 ++++++++ .../content/ru/articles/freebsd-src-lsp/_index.po | 677 +++++++++++++++++++++ 2 files changed, 945 insertions(+) diff --git a/documentation/content/ru/articles/freebsd-src-lsp/_index.adoc b/documentation/content/ru/articles/freebsd-src-lsp/_index.adoc new file mode 100644 index 0000000000..67704e087c --- /dev/null +++ b/documentation/content/ru/articles/freebsd-src-lsp/_index.adoc @@ -0,0 +1,268 @@ +--- +authors: + - + author: 'Ka Ho Ng' + email: [email protected] +copyright: '2021 The FreeBSD Foundation' +description: 'ÐÑполÑзÑйÑе ÑзÑковÑе ÑеÑвеÑÑ Ð´Ð»Ñ ÑазÑабоÑки в деÑеве иÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ кода FreeBSD, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑаÑÑ ÑоÑнÑе ÑезÑлÑÑаÑÑ Ð¿Ñи пеÑÐµÑ Ð¾Ð´Ð°Ñ Ðº опÑеделениÑм ÑÑнкÑий и пеÑеменнÑÑ Ð¸ пÑи авÑодополнениÑÑ .' +tags: ["FreeBSD", "Language Server", "LSP"] +title: 'ÐÑполÑзование ÑазÑабоÑÑиками ÑзÑковÑÑ ÑеÑвеÑов в деÑеве иÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ кода FreeBSD' +trademarks: ["freebsd"] +--- + += ÐÑполÑзование ÑазÑабоÑÑиками ÑзÑковÑÑ ÑеÑвеÑов в деÑеве иÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ кода FreeBSD +:doctype: article +:toc: macro +:toclevels: 1 +:icons: font +:sectnums: +:sectnumlevels: 6 +:source-highlighter: rouge +:experimental: +:images-path: articles/freebsd-src-lsp/ + +ifdef::env-beastie[] +ifdef::backend-html5[] +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[] +:imagesdir: ../../../images/{images-path} +endif::[] +ifdef::backend-pdf,backend-epub3[] +include::../../../../shared/asciidoctor.adoc[] +endif::[] +endif::[] + +ifndef::env-beastie[] +include::../../../../../shared/asciidoctor.adoc[] +endif::[] + +toc::[] + +[[intro]] +== Ðведение + +ÐÑо ÑÑководÑÑво поÑвÑÑено наÑÑÑойке деÑева иÑÑ Ð¾Ð´Ð½ÑÑ ÐºÐ¾Ð´Ð¾Ð² FreeBSD Ñ Ð¸ÑполÑзованием ÑзÑковÑÑ ÑеÑвеÑов Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑаÑии иÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ кода. Ð ÑÑководÑÑве опиÑÐ°Ð½Ñ Ñаги Ð´Ð»Ñ Vim/NeoVim и VSCode. ÐÑли Ð²Ñ Ð¸ÑполÑзÑеÑе дÑÑгой ÑекÑÑовÑй ÑедакÑоÑ, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ ÑÑо ÑÑководÑÑво в каÑеÑÑве ÑпÑавоÑника и найÑи ÑквиваленÑнÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð´Ð»Ñ Ð²Ð°Ñего лÑбимого ÑедакÑоÑа. + +[[requirements]] +== ТÑÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ + +ÐÐ»Ñ ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ ÑÑÐ¾Ð¼Ñ ÑÑководÑÑÐ²Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑÑÑановиÑÑ Ð¾Ð¿ÑеделÑннÑе ÑÑебованиÑ. Ðам понадобиÑÑÑ ÑзÑковой ÑеÑвеÑ, `ccls` или `clangd`, а Ñакже, опÑионалÑно, база даннÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии. + +УÑÑановка ÑзÑкового ÑеÑвеÑа Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²Ñполнена ÑеÑез `pkg` или ÑеÑез поÑÑÑ. ÐÑли Ð¼Ñ Ð²ÑбеÑем `clangd`, нам нÑжно ÑÑÑановиÑÑ `llvm`. + +ÐÑполÑзование `pkg` Ð´Ð»Ñ ÑÑÑановки `ccls`: + +[source, shell] +.... +# pkg install ccls +.... + +ÐÑли Ð¼Ñ Ñ Ð¾Ñим иÑполÑзоваÑÑ `clangd`, нам Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑÑÑановиÑÑ `llvm` (в пÑимеÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¸ÑполÑзÑеÑÑÑ `llvm15`, но Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе вÑбÑаÑÑ Ð½ÑжнÑÑ Ð²ÐµÑÑиÑ): + +[source, shell] +.... +# pkg install llvm15 +.... + +ÐÐ»Ñ ÑÑÑановки ÑеÑез поÑÑÑ Ð²ÑбеÑиÑе пÑедпоÑÑиÑелÑнÑÑ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°ÑÐ¸Ñ Ð¸Ð½ÑÑÑÑменÑов из каждой каÑегоÑии ниже: + +* РеализаÑии ÑзÑковÑÑ ÑеÑвеÑов +** package:devel/ccls[] +** package:devel/llvm12[] (ÐÑÑгие веÑÑии Ñакже Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑ, но Ñем новее, Ñем лÑÑÑе. ÐамениÑе `clangd12` на clangdN в ÑлÑÑае иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´ÑÑÐ³Ð¸Ñ Ð²ÐµÑÑий.) +* РедакÑоÑÑ +** package:editors/vim[] +** package:editors/neovim[] +** package:editors/vscode[] +* ÐенеÑаÑÐ¾Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии +** package:devel/python[] (ÐÐ»Ñ ÑеализаÑии scan-build-py из llvm) +** package:devel/py-pip[] (ÐÐ»Ñ ÑеализаÑии scan-build Ð¾Ñ rizsotto) +** package:devel/bear[] + +[[editor-settings]] +== ÐаÑÑÑойки ÑедакÑоÑа + +[[settings-vim]] +=== Vim/Neovim + +==== ÐÐ»Ð°Ð³Ð¸Ð½Ñ ÐºÐ»Ð¸ÐµÐ½Ñа LSP + +ÐÑÑÑоеннÑй Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑ Ð¿Ð»Ð°Ð³Ð¸Ð½Ð¾Ð² иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¾Ð±Ð¾Ð¸Ñ ÑедакÑоÑов в ÑÑом пÑимеÑе. Ðлагин LSP-клиенÑа, коÑоÑÑй иÑполÑзÑеÑÑÑ, â ÑÑо link:https://github.com/prabirshrestha/vim-lsp[prabirshrestha/vim-lsp]. + +ÐÐ»Ñ Ð½Ð°ÑÑÑойки клиенÑÑкого плагина LSP Ð´Ð»Ñ Neovim: + +[source, shell] +.... +# mkdir -p ~/.config/nvim/pack/lsp/start +# git clone https://github.com/prabirshrestha/vim-lsp ~/.config/nvim/pack/lsp/start/vim-lsp +.... + +и Ð´Ð»Ñ Vim: + +[source, shell] +.... +# mkdir -p ~/.vim/pack/lsp/start +# git clone https://github.com/prabirshrestha/vim-lsp ~/.vim/pack/lsp/start/vim-lsp +.... + +ЧÑÐ¾Ð±Ñ Ð²ÐºÐ»ÑÑиÑÑ Ð¿Ð»Ð°Ð³Ð¸Ð½ LSP-клиенÑа в ÑедакÑоÑе, добавÑÑе ÑледÑÑÑий ÑÑÐ°Ð³Ð¼ÐµÐ½Ñ Ð² [.filepath]#~/.config/nvim/init.vim# пÑи иÑполÑзовании Neovim или в [.filepath]#~/.vim/vimrc# пÑи иÑполÑзовании Vim: + +.ÐÐ»Ñ ccls +[source, vim] +.... +au User lsp_setup call lsp#register_server({ + \ 'name': 'ccls', + \ 'cmd': {server_info->['ccls']}, + \ 'allowlist': ['c', 'cpp', 'objc'], + \ 'initialization_options': { + \ 'cache': { + \ 'hierarchicalPath': v:true + \ } + \ }}) +.... + +.ÐÐ»Ñ clangd +[source, vim] +.... +au User lsp_setup call lsp#register_server({ + \ 'name': 'clangd', + \ 'cmd': {server_info->['clangd15', '--background-index', '--header-insertion=never']}, + \ 'allowlist': ['c', 'cpp', 'objc'], + \ 'initialization_options': {}, + \ }) +.... + +РзавиÑимоÑÑи Ð¾Ñ ÑÑÑановленной веÑÑии `clangd` Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸ÑÑ `server-info`, ÑÑÐ¾Ð±Ñ ÑказаÑÑ Ð½Ð° пÑавилÑнÑй бинаÑнÑй Ñайл. + +ÐбÑаÑиÑеÑÑ Ðº link:https://github.com/prabirshrestha/vim-lsp/blob/master/README.md#registering-servers[], ÑÑÐ¾Ð±Ñ ÑзнаÑÑ Ð¾ наÑÑÑойке ÑоÑеÑаний ÐºÐ»Ð°Ð²Ð¸Ñ Ð¸ авÑÐ¾Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð°. ÐÑиÑиалÑнÑй ÑÐ°Ð¹Ñ clangd Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð¿Ð¾ ÑÑÑлке link:https://clangd.llvm.org[], а ÑепозиÑоÑий ccls â link:https://github.com/MaskRay/ccls/[]. + +Ðиже пÑÐ¸Ð²ÐµÐ´ÐµÐ½Ñ ÑÑалоннÑе наÑÑÑойки ÑоÑеÑаний ÐºÐ»Ð°Ð²Ð¸Ñ Ð¸ авÑÐ¾Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð°. ÐомеÑÑиÑе ÑледÑÑÑий ÑÑÐ°Ð³Ð¼ÐµÐ½Ñ Ð² [.filepath]#~/.config/nvim/init.vim# или [.filepath]#~/.vim/vimrc# Ð´Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑелей Vim, ÑÑÐ¾Ð±Ñ Ð¸ÑполÑзоваÑÑ ÐµÐ³Ð¾: + +[source, vim] +.... +function! s:on_lsp_buffer_enabled() abort + setlocal omnifunc=lsp#complete + setlocal completeopt-=preview + setlocal keywordprg=:LspHover + + nmap <buffer> <C-]> <plug>(lsp-definition) + nmap <buffer> <C-W>] <plug>(lsp-peek-definition) + nmap <buffer> <C-W><C-]> <plug>(lsp-peek-definition) + nmap <buffer> gr <plug>(lsp-references) + nmap <buffer> <C-n> <plug>(lsp-next-reference) + nmap <buffer> <C-p> <plug>(lsp-previous-reference) + nmap <buffer> gI <plug>(lsp-implementation) + nmap <buffer> go <plug>(lsp-document-symbol) + nmap <buffer> gS <plug>(lsp-workspace-symbol) + nmap <buffer> ga <plug>(lsp-code-action) + nmap <buffer> gR <plug>(lsp-rename) + nmap <buffer> gm <plug>(lsp-signature-help) +endfunction + +augroup lsp_install + au! + autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled() +augroup END +.... + +[[settings-vscode]] +=== VSCode + +==== ÐÐ»Ð°Ð³Ð¸Ð½Ñ ÐºÐ»Ð¸ÐµÐ½Ñа LSP + +ÐÐ»Ñ ÑабоÑÑ Ð´ÐµÐ¼Ð¾Ð½Ð° ÑзÑкового ÑеÑвеÑа Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñ ÐºÐ»Ð¸ÐµÐ½ÑÑкие Ð¿Ð»Ð°Ð³Ð¸Ð½Ñ LSP. ÐажмиÑе `Ctrl+Shift+X`, ÑÑÐ¾Ð±Ñ Ð¾ÑкÑÑÑÑ Ð¿Ð°Ð½ÐµÐ»Ñ Ð¿Ð¾Ð¸Ñка ÑаÑÑиÑений в ÑеÑи. ÐведиÑе `llvm-vs-code-extensions.vscode-clangd` пÑи иÑполÑзовании clangd или `ccls-project.ccls` пÑи иÑполÑзовании ccls. + +ÐаÑем нажмиÑе `Ctrl+Shift+P`, ÑÑÐ¾Ð±Ñ Ð¾ÑкÑÑÑÑ Ð¿Ð°Ð»Ð¸ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´ ÑедакÑоÑа. ÐведиÑе `Preferences: Open Settings (JSON)` в палиÑÑÑ Ð¸ нажмиÑе `Enter`, ÑÑÐ¾Ð±Ñ Ð¾ÑкÑÑÑÑ [.filepath]#settings.json#. РзавиÑимоÑÑи Ð¾Ñ ÑеализаÑии ÑзÑкового ÑеÑвеÑа, добавÑÑе Ð¾Ð´Ð½Ñ Ð¸Ð· ÑледÑÑÑÐ¸Ñ Ð¿Ð°Ñ ÐºÐ»ÑÑ/знаÑение JSON в [.filepath]#settings.json#: + +.ÐÐ»Ñ clangd +[source, json] +.... +[ + /* Begin of your existing configurations */ + ... + /* End of your existing configurations */ + "clangd.arguments": [ + "--background-index", + "--header-insertion=never" + ], + "clangd.path": "clangd12" +] +.... + +.ÐÐ»Ñ ccls +[source, json] +.... +[ + /* Begin of your existing configurations */ + ... + /* End of your existing configurations */ + "ccls.cache.hierarchicalPath": true +] +.... + +[[cdb]] +== Ðаза даннÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии + +Ðаза даннÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии ÑодеÑÐ¶Ð¸Ñ Ð¼Ð°ÑÑив обÑекÑов команд компилÑÑии. ÐаждÑй обÑÐµÐºÑ Ð¾Ð¿ÑеделÑÐµÑ ÑпоÑоб компилÑÑии иÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñайла. Файл Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии обÑÑно назÑваеÑÑÑ [.filename]#compile_commands.json#. Ðаза даннÑÑ Ð¸ÑполÑзÑеÑÑÑ ÑеализаÑиÑми ÑзÑковÑÑ ÑеÑвеÑов Ð´Ð»Ñ Ñелей индекÑиÑованиÑ. + +ÐожалÑйÑÑа, обÑаÑиÑеÑÑ Ðº link:https://clang.llvm.org/docs/JSONCompilationDatabase.html#format[] Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´ÑобноÑÑей о ÑоÑмаÑе Ñайла Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии. + +[[cdb-generators]] +=== ÐенеÑаÑоÑÑ + +[[generators-scan-build-py]] +==== ÐÑполÑзование scan-build-py + +===== УÑÑановка + +ÐнÑÑÑÑÐ¼ÐµÐ½Ñ `intercept-build` из scan-build-py иÑполÑзÑеÑÑÑ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии. + +УÑÑановиÑе Ð¿Ð°ÐºÐµÑ package:devel/python[], ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð¸Ð½ÑеÑпÑеÑаÑÐ¾Ñ python. ÐÐ»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ `intercept-build` из LLVM: + +[source, shell] +.... +# git clone https://github.com/llvm/llvm-project /path/to/llvm-project +.... + +где [.filename]#/path/to/llvm-project/# â ÑÑо желаемÑй пÑÑÑ Ð´Ð»Ñ ÑепозиÑоÑиÑ. ÐÐ»Ñ ÑдобÑÑва ÑоздайÑе Ð°Ð»Ð¸Ð°Ñ Ð² Ñайле конÑигÑÑаÑии оболоÑки: + +[source, shell] +.... +alias intercept-build='/path/to/llvm-project/clang/tools/scan-build-py/bin/intercept-build' +.... + +link:https://github.com/rizsotto/scan-build[rizsotto/scan-build] можно иÑполÑзоваÑÑ Ð²Ð¼ÐµÑÑо LLVM's scan-build-py. LLVM's scan-build-py бÑл обÑединÑн в деÑево LLVM из rizsotto/scan-build. ÐÑÑ ÑеализаÑÐ¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ ÑÑÑановиÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ `pip install --user scan-build`. СкÑÐ¸Ð¿Ñ `intercept-build` по ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² [.filename]#~/.local/bin#. + +===== ÐÑполÑзование + +РкоÑневом каÑалоге иÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ кода FreeBSD ÑоздайÑе Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ `intercept-build`: + +[source, shell] +.... +# intercept-build --append make buildworld buildkernel -j`sysctl -n hw.ncpu` +.... + +Флаг `--append` ÑказÑÐ²Ð°ÐµÑ `intercept-build` пÑоÑиÑаÑÑ ÑÑÑеÑÑвÑÑÑÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии (еÑли она ÑÑÑеÑÑвÑеÑ) и добавиÑÑ ÑезÑлÑÑаÑÑ Ð² Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ . ÐапиÑи Ñ Ð´ÑблиÑÑÑÑимиÑÑ ÐºÐ»ÑÑами команд обÑединÑÑÑÑÑ. СгенеÑиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ Ð±Ð°Ð·Ð° даннÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии по ÑмолÑÐ°Ð½Ð¸Ñ ÑÐ¾Ñ ÑанÑеÑÑÑ Ð² ÑекÑÑей ÑабоÑей диÑекÑоÑии как [.filename]#compile_commands.json#. + +[[generators-bear]] +==== ÐÑполÑзование devel/bear + +===== ÐÑполÑзование + +РкоÑневом каÑалоге иÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ кода FreeBSD, ÑÑÐ¾Ð±Ñ ÑоздаÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ `bear`: + +[source, shell] +.... +# bear --append -- make buildworld buildkernel -j`sysctl -n hw.ncpu` +.... + +Флаг `--append` ÑказÑÐ²Ð°ÐµÑ `bear` пÑоÑиÑаÑÑ ÑÑÑеÑÑвÑÑÑÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии, еÑли она еÑÑÑ, и добавиÑÑ ÑезÑлÑÑаÑÑ Ð² неÑ. ÐапиÑи Ñ Ð´ÑблиÑÑÑÑимиÑÑ ÐºÐ»ÑÑами команд обÑединÑÑÑÑÑ. СгенеÑиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ Ð±Ð°Ð·Ð° даннÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии по ÑмолÑÐ°Ð½Ð¸Ñ ÑÐ¾Ñ ÑанÑеÑÑÑ Ð² ÑекÑÑей ÑабоÑей диÑекÑоÑии как [.filename]#compile_commands.json#. + +[[final]] +== ÐоÑледние Ñаги + +ÐоÑле ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии оÑкÑойÑе лÑбой иÑÑ Ð¾Ð´Ð½Ñй Ñайл в деÑеве иÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ кода FreeBSD, и ÑеÑвеÑнÑй демон LSP Ñакже запÑÑÑиÑÑÑ Ð² Ñоновом Ñежиме. ÐеÑвое оÑкÑÑÑие иÑÑ Ð¾Ð´Ð½ÑÑ Ñайлов в деÑеве src Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð·Ð½Ð°ÑиÑелÑно болÑÑе вÑемени, пÑежде Ñем ÑеÑÐ²ÐµÑ LSP ÑÐ¼Ð¾Ð¶ÐµÑ Ð¿ÑедоÑÑавиÑÑ Ð¿Ð¾Ð»Ð½Ñй ÑезÑлÑÑаÑ, из-за пеÑвонаÑалÑного Ñонового индекÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑеÑвеÑом LSP, коÑоÑÑй компилиÑÑÐµÑ Ð²Ñе пеÑеÑиÑленнÑе запиÑи в базе даннÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии. Ðднако демоР½ ÑзÑкового ÑеÑвеÑа не индекÑиÑÑÐµÑ Ð¸ÑÑ Ð¾Ð´Ð½Ñе ÑайлÑ, оÑÑÑÑÑÑвÑÑÑие в базе даннÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии, поÑÑÐ¾Ð¼Ñ Ð¿Ð¾Ð»Ð½Ñе ÑÐ µÐ·ÑлÑÑаÑÑ Ð½Ðµ оÑобÑажаÑÑÑÑ Ð´Ð»Ñ Ð¸ÑÑ Ð¾Ð´Ð½ÑÑ Ñайлов, коÑоÑÑе не компилиÑовалиÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ `make`. diff --git a/documentation/content/ru/articles/freebsd-src-lsp/_index.po b/documentation/content/ru/articles/freebsd-src-lsp/_index.po new file mode 100644 index 0000000000..fba2d1f2ad --- /dev/null +++ b/documentation/content/ru/articles/freebsd-src-lsp/_index.po @@ -0,0 +1,677 @@ +# SOME DESCRIPTIVE TITLE +# Copyright (C) YEAR The FreeBSD Project +# This file is distributed under the same license as the FreeBSD Documentation package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: FreeBSD Documentation VERSION\n" +"POT-Creation-Date: 2025-09-25 18:20+0300\n" +"PO-Revision-Date: 2025-08-02 04:45+0000\n" +"Last-Translator: Vladlen Popolitov <[email protected]>\n" +"Language-Team: Russian <https://translate-dev.freebsd.org/projects/" +"documentation/articlesfreebsd-src-lsp_index/ru/>\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.17\n" + +#. type: Yaml Front Matter Hash Value: description +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:1 +#, no-wrap +msgid "Use Language Servers for development in the FreeBSD src tree to get precise go-to-definition and completion results." +msgstr "ÐÑполÑзÑйÑе ÑзÑковÑе ÑеÑвеÑÑ Ð´Ð»Ñ ÑазÑабоÑки в деÑеве иÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ кода FreeBSD, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑаÑÑ ÑоÑнÑе ÑезÑлÑÑаÑÑ Ð¿Ñи пеÑÐµÑ Ð¾Ð´Ð°Ñ Ðº опÑеделениÑм ÑÑнкÑий и пеÑеменнÑÑ Ð¸ пÑи авÑодополнениÑÑ ." + +#. type: Title = +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:1 +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:13 +#, no-wrap +msgid "Use Language Servers for Development in the FreeBSD Src Tree" +msgstr "ÐÑполÑзование ÑазÑабоÑÑиками ÑзÑковÑÑ ÑеÑвеÑов в деÑеве иÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ кода FreeBSD" + +#. type: Title == +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:47 +#, no-wrap +msgid "Introduction" +msgstr "Ðведение" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:50 +msgid "" +"This guide is about setting up a FreeBSD src tree with language servers " +"performing source code indexing. The guide describes the steps for Vim/" +"NeoVim and VSCode. If you use a different text editor you can use this guide " +"as a reference and search the equivalent commands for your preferred editor." +msgstr "" +"ÐÑо ÑÑководÑÑво поÑвÑÑено наÑÑÑойке деÑева иÑÑ Ð¾Ð´Ð½ÑÑ ÐºÐ¾Ð´Ð¾Ð² FreeBSD Ñ " +"иÑполÑзованием ÑзÑковÑÑ ÑеÑвеÑов Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑаÑии иÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ кода. Ð " +"ÑÑководÑÑве опиÑÐ°Ð½Ñ Ñаги Ð´Ð»Ñ Vim/NeoVim и VSCode. ÐÑли Ð²Ñ Ð¸ÑполÑзÑеÑе дÑÑгой " +"ÑекÑÑовÑй ÑедакÑоÑ, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ ÑÑо ÑÑководÑÑво в каÑеÑÑве " +"ÑпÑавоÑника и найÑи ÑквиваленÑнÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð´Ð»Ñ Ð²Ð°Ñего лÑбимого ÑедакÑоÑа." + +#. type: Title == +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:52 +#, no-wrap +msgid "Requirements" +msgstr "ТÑебованиÑ" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:55 +msgid "" +"In order to follow this guide we need to install certain requirements. We " +"need a Language server, `ccls` or `clangd`, and optionally a compilation " +"database." +msgstr "" +"ÐÐ»Ñ ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ ÑÑÐ¾Ð¼Ñ ÑÑководÑÑÐ²Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑÑÑановиÑÑ Ð¾Ð¿ÑеделÑннÑе " +"ÑÑебованиÑ. Ðам понадобиÑÑÑ ÑзÑковой ÑеÑвеÑ, `ccls` или `clangd`, а Ñакже, " +"опÑионалÑно, база даннÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии." + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:57 +msgid "" +"The installation of the Language server can be performed via `pkg` or via " +"ports. If we chose `clangd` we need to install `llvm`." +msgstr "" +"УÑÑановка ÑзÑкового ÑеÑвеÑа Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²Ñполнена ÑеÑез `pkg` или ÑеÑез " +"поÑÑÑ. ÐÑли Ð¼Ñ Ð²ÑбеÑем `clangd`, нам нÑжно ÑÑÑановиÑÑ `llvm`." + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:59 +msgid "Using `pkg` to install `ccls`:" +msgstr "ÐÑполÑзование `pkg` Ð´Ð»Ñ ÑÑÑановки `ccls`:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:63 +#, no-wrap +msgid "# pkg install ccls\n" +msgstr "# pkg install ccls\n" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:66 +msgid "" +"If we want to use `clangd` we need to install `llvm` (The example command " +"uses `llvm15` but choose the version you desire):" +msgstr "" +"ÐÑли Ð¼Ñ Ñ Ð¾Ñим иÑполÑзоваÑÑ `clangd`, нам Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑÑÑановиÑÑ `llvm` (в " +"пÑимеÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¸ÑполÑзÑеÑÑÑ `llvm15`, но Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе вÑбÑаÑÑ Ð½ÑжнÑÑ Ð²ÐµÑÑиÑ):" + +#. type: delimited block . 4 +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:70 +#, no-wrap +msgid "# pkg install llvm15\n" +msgstr "# pkg install llvm15\n" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:73 +msgid "" +"To install via ports choose a favorite combination of tools from each " +"category below:" +msgstr "" +"ÐÐ»Ñ ÑÑÑановки ÑеÑез поÑÑÑ Ð²ÑбеÑиÑе пÑедпоÑÑиÑелÑнÑÑ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°ÑÐ¸Ñ Ð¸Ð½ÑÑÑÑменÑов " +"из каждой каÑегоÑии ниже:" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:75 +msgid "Language server implementations" +msgstr "РеализаÑии ÑзÑковÑÑ ÑеÑвеÑов" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:76 +msgid "package:devel/ccls[]" +msgstr "package:devel/ccls[]" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:77 +msgid "" +"package:devel/llvm12[] (Other versions are okay, but newer is better. " +"Replace `clangd12` with clangdN in case other versions are used.)" +msgstr "" +"package:devel/llvm12[] (ÐÑÑгие веÑÑии Ñакже Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑ, но Ñем новее, Ñем " +"лÑÑÑе. ÐамениÑе `clangd12` на clangdN в ÑлÑÑае иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´ÑÑÐ³Ð¸Ñ Ð²ÐµÑÑий.)" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:78 +msgid "Editors" +msgstr "РедакÑоÑÑ" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:79 +msgid "package:editors/vim[]" +msgstr "package:editors/vim[]" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:80 +msgid "package:editors/neovim[]" +msgstr "package:editors/neovim[]" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:81 +msgid "package:editors/vscode[]" +msgstr "package:editors/vscode[]" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:82 +msgid "Compilation database generator" +msgstr "ÐенеÑаÑÐ¾Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:83 +msgid "package:devel/python[] (For llvm's scan-build-py implementation)" +msgstr "package:devel/python[] (ÐÐ»Ñ ÑеализаÑии scan-build-py из llvm)" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:84 +msgid "package:devel/py-pip[] (For rizsotto's scan-build implementation)" +msgstr "package:devel/py-pip[] (ÐÐ»Ñ ÑеализаÑии scan-build Ð¾Ñ rizsotto)" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:85 +msgid "package:devel/bear[]" +msgstr "package:devel/bear[]" + +#. type: Title == +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:87 +#, no-wrap +msgid "Editor settings" +msgstr "ÐаÑÑÑойки ÑедакÑоÑа" + +#. type: Title === +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:90 +#, no-wrap +msgid "Vim/Neovim" +msgstr "Vim/Neovim" + +#. type: Title ==== +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:92 +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:178 +#, no-wrap +msgid "LSP client plugins" +msgstr "ÐÐ»Ð°Ð³Ð¸Ð½Ñ ÐºÐ»Ð¸ÐµÐ½Ñа LSP" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:96 +msgid "" +"The built-in plugin manager is used for both editors in this example. The " +"LSP client plugin used is link:https://github.com/prabirshrestha/vim-" +"lsp[prabirshrestha/vim-lsp]." +msgstr "" +"ÐÑÑÑоеннÑй Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑ Ð¿Ð»Ð°Ð³Ð¸Ð½Ð¾Ð² иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¾Ð±Ð¾Ð¸Ñ ÑедакÑоÑов в ÑÑом " +"пÑимеÑе. Ðлагин LSP-клиенÑа, коÑоÑÑй иÑполÑзÑеÑÑÑ, â ÑÑо link:https://" +"github.com/prabirshrestha/vim-lsp[prabirshrestha/vim-lsp]." + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:98 +msgid "To set up the LSP client plugin for Neovim:" +msgstr "ÐÐ»Ñ Ð½Ð°ÑÑÑойки клиенÑÑкого плагина LSP Ð´Ð»Ñ Neovim:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:103 +#, no-wrap +msgid "" +"# mkdir -p ~/.config/nvim/pack/lsp/start\n" +"# git clone https://github.com/prabirshrestha/vim-lsp ~/.config/nvim/pack/lsp/start/vim-lsp\n" +msgstr "" +"# mkdir -p ~/.config/nvim/pack/lsp/start\n" +"# git clone https://github.com/prabirshrestha/vim-lsp ~/.config/nvim/pack/lsp/start/vim-lsp\n" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:106 +msgid "and for Vim:" +msgstr "и Ð´Ð»Ñ Vim:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:111 +#, no-wrap +msgid "" +"# mkdir -p ~/.vim/pack/lsp/start\n" +"# git clone https://github.com/prabirshrestha/vim-lsp ~/.vim/pack/lsp/start/vim-lsp\n" +msgstr "" +"# mkdir -p ~/.vim/pack/lsp/start\n" +"# git clone https://github.com/prabirshrestha/vim-lsp ~/.vim/pack/lsp/start/vim-lsp\n" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:114 +msgid "" +"To enable the LSP client plugin in the editor, add the following snippet " +"into [.filepath]#~/.config/nvim/init.vim# when using Neovim, or " +"[.filepath]#~/.vim/vimrc# when using Vim:" +msgstr "" +"ЧÑÐ¾Ð±Ñ Ð²ÐºÐ»ÑÑиÑÑ Ð¿Ð»Ð°Ð³Ð¸Ð½ LSP-клиенÑа в ÑедакÑоÑе, добавÑÑе ÑледÑÑÑий ÑÑÐ°Ð³Ð¼ÐµÐ½Ñ Ð² " +"[.filepath]#~/.config/nvim/init.vim# пÑи иÑполÑзовании Neovim или в " +"[.filepath]#~/.vim/vimrc# пÑи иÑполÑзовании Vim:" + +#. type: Block title +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:115 +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:203 +#, no-wrap +msgid "For ccls" +msgstr "ÐÐ»Ñ ccls" + +#. type: delimited block . 4 +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:127 +#, no-wrap +msgid "" +"au User lsp_setup call lsp#register_server({\n" +" \\ 'name': 'ccls',\n" +" \\ 'cmd': {server_info->['ccls']},\n" +" \\ 'allowlist': ['c', 'cpp', 'objc'],\n" +" \\ 'initialization_options': {\n" +" \\ 'cache': {\n" +" \\ 'hierarchicalPath': v:true\n" +" \\ }\n" +" \\ }})\n" +msgstr "" +"au User lsp_setup call lsp#register_server({\n" +" \\ 'name': 'ccls',\n" +" \\ 'cmd': {server_info->['ccls']},\n" +" \\ 'allowlist': ['c', 'cpp', 'objc'],\n" +" \\ 'initialization_options': {\n" +" \\ 'cache': {\n" +" \\ 'hierarchicalPath': v:true\n" +" \\ }\n" +" \\ }})\n" + +#. type: Block title +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:129 +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:188 +#, no-wrap +msgid "For clangd" +msgstr "ÐÐ»Ñ clangd" + +#. type: delimited block . 4 +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:138 +#, no-wrap +msgid "" +"au User lsp_setup call lsp#register_server({\n" +" \\ 'name': 'clangd',\n" +" \\ 'cmd': {server_info->['clangd15', '--background-index', '--header-insertion=never']},\n" +" \\ 'allowlist': ['c', 'cpp', 'objc'],\n" +" \\ 'initialization_options': {},\n" +" \\ })\n" +msgstr "" +"au User lsp_setup call lsp#register_server({\n" +" \\ 'name': 'clangd',\n" +" \\ 'cmd': {server_info->['clangd15', '--background-index', '--header-insertion=never']},\n" +" \\ 'allowlist': ['c', 'cpp', 'objc'],\n" +" \\ 'initialization_options': {},\n" +" \\ })\n" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:141 +msgid "" +"Depending on the version that you installed for `clangd` you might need to " +"update the `server-info` to point to the correct binary." +msgstr "" +"РзавиÑимоÑÑи Ð¾Ñ ÑÑÑановленной веÑÑии `clangd` Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸ÑÑ " +"`server-info`, ÑÑÐ¾Ð±Ñ ÑказаÑÑ Ð½Ð° пÑавилÑнÑй бинаÑнÑй Ñайл." + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:144 +msgid "" +"Please refer to link:https://github.com/prabirshrestha/vim-lsp/blob/master/" +"README.md#registering-servers[] to learn about setting up key bindings and " +"code completion. The official site of clangd is link:https://" +"clangd.llvm.org[], and the repository link of ccls is link:https://" +"github.com/MaskRay/ccls/[]." +msgstr "" +"ÐбÑаÑиÑеÑÑ Ðº link:https://github.com/prabirshrestha/vim-lsp/blob/master/" +"README.md#registering-servers[], ÑÑÐ¾Ð±Ñ ÑзнаÑÑ Ð¾ наÑÑÑойке ÑоÑеÑаний ÐºÐ»Ð°Ð²Ð¸Ñ Ð¸ " +"авÑÐ¾Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð°. ÐÑиÑиалÑнÑй ÑÐ°Ð¹Ñ clangd Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð¿Ð¾ ÑÑÑлке " +"link:https://clangd.llvm.org[], а ÑепозиÑоÑий ccls â link:https://github.com/" +"MaskRay/ccls/[]." + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:147 +msgid "" +"Below are the reference settings of keybindings and code completions. Put " +"the following snippet into [.filepath]#~/.config/nvim/init.vim#, or " +"[.filepath]#~/.vim/vimrc# for Vim users to use it:" +msgstr "" +"Ðиже пÑÐ¸Ð²ÐµÐ´ÐµÐ½Ñ ÑÑалоннÑе наÑÑÑойки ÑоÑеÑаний ÐºÐ»Ð°Ð²Ð¸Ñ Ð¸ авÑÐ¾Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð°. " +"ÐомеÑÑиÑе ÑледÑÑÑий ÑÑÐ°Ð³Ð¼ÐµÐ½Ñ Ð² [.filepath]#~/.config/nvim/init.vim# или " +"[.filepath]#~/.vim/vimrc# Ð´Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑелей Vim, ÑÑÐ¾Ð±Ñ Ð¸ÑполÑзоваÑÑ ÐµÐ³Ð¾:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:154 +#, no-wrap +msgid "" +"function! s:on_lsp_buffer_enabled() abort\n" +" setlocal omnifunc=lsp#complete\n" +" setlocal completeopt-=preview\n" +" setlocal keywordprg=:LspHover\n" +msgstr "" +"function! s:on_lsp_buffer_enabled() abort\n" +" setlocal omnifunc=lsp#complete\n" +" setlocal completeopt-=preview\n" +" setlocal keywordprg=:LspHover\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:168 +#, no-wrap +msgid "" +" nmap <buffer> <C-]> <plug>(lsp-definition)\n" +" nmap <buffer> <C-W>] <plug>(lsp-peek-definition)\n" +" nmap <buffer> <C-W><C-]> <plug>(lsp-peek-definition)\n" +" nmap <buffer> gr <plug>(lsp-references)\n" +" nmap <buffer> <C-n> <plug>(lsp-next-reference)\n" +" nmap <buffer> <C-p> <plug>(lsp-previous-reference)\n" +" nmap <buffer> gI <plug>(lsp-implementation)\n" +" nmap <buffer> go <plug>(lsp-document-symbol)\n" +" nmap <buffer> gS <plug>(lsp-workspace-symbol)\n" +" nmap <buffer> ga <plug>(lsp-code-action)\n" +" nmap <buffer> gR <plug>(lsp-rename)\n" +" nmap <buffer> gm <plug>(lsp-signature-help)\n" +"endfunction\n" +msgstr "" +" nmap <buffer> <C-]> <plug>(lsp-definition)\n" +" nmap <buffer> <C-W>] <plug>(lsp-peek-definition)\n" +" nmap <buffer> <C-W><C-]> <plug>(lsp-peek-definition)\n" +" nmap <buffer> gr <plug>(lsp-references)\n" +" nmap <buffer> <C-n> <plug>(lsp-next-reference)\n" +" nmap <buffer> <C-p> <plug>(lsp-previous-reference)\n" +" nmap <buffer> gI <plug>(lsp-implementation)\n" +" nmap <buffer> go <plug>(lsp-document-symbol)\n" +" nmap <buffer> gS <plug>(lsp-workspace-symbol)\n" +" nmap <buffer> ga <plug>(lsp-code-action)\n" +" nmap <buffer> gR <plug>(lsp-rename)\n" +" nmap <buffer> gm <plug>(lsp-signature-help)\n" +"endfunction\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:173 +#, no-wrap +msgid "" +"augroup lsp_install\n" +" au!\n" +" autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled()\n" +"augroup END\n" +msgstr "" +"augroup lsp_install\n" +" au!\n" +" autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled()\n" +"augroup END\n" + +#. type: Title === +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:176 +#, no-wrap +msgid "VSCode" +msgstr "VSCode" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:183 +msgid "" +"LSP client plugins are required to launch the language server daemon. Press " +"`Ctrl+Shift+X` to show the extension online search panel. Enter `llvm-vs-" +"code-extensions.vscode-clangd` when running clangd, or `ccls-project.ccls` " +"when running ccls." +msgstr "" +"ÐÐ»Ñ ÑабоÑÑ Ð´ÐµÐ¼Ð¾Ð½Ð° ÑзÑкового ÑеÑвеÑа Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñ ÐºÐ»Ð¸ÐµÐ½ÑÑкие Ð¿Ð»Ð°Ð³Ð¸Ð½Ñ LSP. " +"ÐажмиÑе `Ctrl+Shift+X`, ÑÑÐ¾Ð±Ñ Ð¾ÑкÑÑÑÑ Ð¿Ð°Ð½ÐµÐ»Ñ Ð¿Ð¾Ð¸Ñка ÑаÑÑиÑений в ÑеÑи. " +"ÐведиÑе `llvm-vs-code-extensions.vscode-clangd` пÑи иÑполÑзовании clangd или " +"`ccls-project.ccls` пÑи иÑполÑзовании ccls." + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:187 +msgid "" +"Then, press `Ctrl+Shift+P` to show the editor commands palette. Enter " +"`Preferences: Open Settings (JSON)` into the palette and hit `Enter` to open " +"[.filepath]#settings.json#. Depending on the language server " +"implementations, put one of the following JSON key/value pairs in " +"[.filepath]#settings.json#:" +msgstr "" +"ÐаÑем нажмиÑе `Ctrl+Shift+P`, ÑÑÐ¾Ð±Ñ Ð¾ÑкÑÑÑÑ Ð¿Ð°Ð»Ð¸ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´ ÑедакÑоÑа. " +"ÐведиÑе `Preferences: Open Settings (JSON)` в палиÑÑÑ Ð¸ нажмиÑе `Enter`, " +"ÑÑÐ¾Ð±Ñ Ð¾ÑкÑÑÑÑ [.filepath]#settings.json#. РзавиÑимоÑÑи Ð¾Ñ ÑеализаÑии " +"ÑзÑкового ÑеÑвеÑа, добавÑÑе Ð¾Ð´Ð½Ñ Ð¸Ð· ÑледÑÑÑÐ¸Ñ Ð¿Ð°Ñ ÐºÐ»ÑÑ/знаÑение JSON в " +"[.filepath]#settings.json#:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:201 +#, no-wrap +msgid "" +"[\n" +" /* Begin of your existing configurations */\n" +" ...\n" +" /* End of your existing configurations */\n" +" \"clangd.arguments\": [\n" +" \"--background-index\",\n" +" \"--header-insertion=never\"\n" +" ],\n" +" \"clangd.path\": \"clangd12\"\n" +"]\n" +msgstr "" +"[\n" +" /* Begin of your existing configurations */\n" +" ...\n" +" /* End of your existing configurations */\n" +" \"clangd.arguments\": [\n" +" \"--background-index\",\n" +" \"--header-insertion=never\"\n" +" ],\n" +" \"clangd.path\": \"clangd12\"\n" +"]\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:212 +#, no-wrap +msgid "" +"[\n" +" /* Begin of your existing configurations */\n" +" ...\n" +" /* End of your existing configurations */\n" +" \"ccls.cache.hierarchicalPath\": true\n" +"]\n" +msgstr "" +"[\n" +" /* Begin of your existing configurations */\n" +" ...\n" +" /* End of your existing configurations */\n" +" \"ccls.cache.hierarchicalPath\": true\n" +"]\n" + +#. type: Title == +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:215 +#, no-wrap +msgid "Compilation database" +msgstr "Ðаза даннÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:221 +msgid "" +"A Compilation database contains an array of compile command objects. Each " +"object specifies a way of compiling a source file. The compilation database " +"file is usually [.filename]#compile_commands.json#. The database is used by " +"language server implementations for indexing purpose." +msgstr "" +"Ðаза даннÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии ÑодеÑÐ¶Ð¸Ñ Ð¼Ð°ÑÑив обÑекÑов команд компилÑÑии. ÐаждÑй " +"обÑÐµÐºÑ Ð¾Ð¿ÑеделÑÐµÑ ÑпоÑоб компилÑÑии иÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñайла. Файл Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ " +"компилÑÑии обÑÑно назÑваеÑÑÑ [.filename]#compile_commands.json#. Ðаза даннÑÑ " +"иÑполÑзÑеÑÑÑ ÑеализаÑиÑми ÑзÑковÑÑ ÑеÑвеÑов Ð´Ð»Ñ Ñелей индекÑиÑованиÑ." + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:223 +msgid "" +"Please refer to link:https://clang.llvm.org/docs/" +"JSONCompilationDatabase.html#format[] for details on the format of the " +"compilation database file." +msgstr "" +"ÐожалÑйÑÑа, обÑаÑиÑеÑÑ Ðº link:https://clang.llvm.org/docs/" +"JSONCompilationDatabase.html#format[] Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´ÑобноÑÑей о ÑоÑмаÑе " +"Ñайла Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии." + +#. type: Title === +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:225 +#, no-wrap +msgid "Generators" +msgstr "ÐенеÑаÑоÑÑ" + +#. type: Title ==== +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:228 +#, no-wrap +msgid "Using scan-build-py" +msgstr "ÐÑполÑзование scan-build-py" + +#. type: Title ===== +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:230 +#, no-wrap +msgid "Installation" +msgstr "УÑÑановка" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:234 +msgid "" +"`intercept-build` tool from scan-build-py is used to generate compilation " +"database." +msgstr "" +"ÐнÑÑÑÑÐ¼ÐµÐ½Ñ `intercept-build` из scan-build-py иÑполÑзÑеÑÑÑ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð±Ð°Ð·Ñ " +"даннÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии." + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:237 +msgid "" +"Install package:devel/python[] to get python interpreter first. To get " +"`intercept-build` from LLVM:" +msgstr "" +"УÑÑановиÑе Ð¿Ð°ÐºÐµÑ package:devel/python[], ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð¸Ð½ÑеÑпÑеÑаÑÐ¾Ñ " +"python. ÐÐ»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ `intercept-build` из LLVM:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:241 +#, no-wrap +msgid "# git clone https://github.com/llvm/llvm-project /path/to/llvm-project\n" +msgstr "# git clone https://github.com/llvm/llvm-project /path/to/llvm-project\n" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:244 +msgid "" +"where [.filename]#/path/to/llvm-project/# is your desired path for the " +"repository. Make an alias in the shell configuration file for convenience:" +msgstr "" +"где [.filename]#/path/to/llvm-project/# â ÑÑо желаемÑй пÑÑÑ Ð´Ð»Ñ ÑепозиÑоÑиÑ. " +"ÐÐ»Ñ ÑдобÑÑва ÑоздайÑе Ð°Ð»Ð¸Ð°Ñ Ð² Ñайле конÑигÑÑаÑии оболоÑки:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:248 +#, no-wrap +msgid "alias intercept-build='/path/to/llvm-project/clang/tools/scan-build-py/bin/intercept-build'\n" +msgstr "alias intercept-build='/path/to/llvm-project/clang/tools/scan-build-py/bin/intercept-build'\n" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:254 +msgid "" +"link:https://github.com/rizsotto/scan-build[rizsotto/scan-build] can be used " +"instead of LLVM's scan-build-py. The LLVM's scan-build-py was rizsotto/scan-" +"build merged into the LLVM tree. This implementation can be installed by " +"`pip install --user scan-build`. The `intercept-build` script is in " +"[.filename]#~/.local/bin# by default." +msgstr "" +"link:https://github.com/rizsotto/scan-build[rizsotto/scan-build] можно " +"иÑполÑзоваÑÑ Ð²Ð¼ÐµÑÑо LLVM's scan-build-py. LLVM's scan-build-py бÑл обÑединÑн " +"в деÑево LLVM из rizsotto/scan-build. ÐÑÑ ÑеализаÑÐ¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ ÑÑÑановиÑÑ Ñ " +"помоÑÑÑ `pip install --user scan-build`. СкÑÐ¸Ð¿Ñ `intercept-build` по " +"ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² [.filename]#~/.local/bin#." + +#. type: Title ===== +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:255 +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:271 +#, no-wrap +msgid "Usage" +msgstr "ÐÑполÑзование" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:258 +msgid "" +"In the top-level directory of the FreeBSD src tree, generate the compilation " +"database with `intercept-build`:" +msgstr "" +"РкоÑневом каÑалоге иÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ кода FreeBSD ÑоздайÑе Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии Ñ " +"помоÑÑÑ `intercept-build`:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:262 +#, no-wrap +msgid "# intercept-build --append make buildworld buildkernel -j`sysctl -n hw.ncpu`\n" +msgstr "# intercept-build --append make buildworld buildkernel -j`sysctl -n hw.ncpu`\n" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:267 +msgid "" +"The `--append` flag tells the `intercept-build` to read an existing " +"compilation database (if a compilation database exists) and append the " +"results to the database. Entries with duplicated command keys are merged. " +"The generated compilation database by default is saved in the current " +"working directory as [.filename]#compile_commands.json#." +msgstr "" +"Флаг `--append` ÑказÑÐ²Ð°ÐµÑ `intercept-build` пÑоÑиÑаÑÑ ÑÑÑеÑÑвÑÑÑÑÑ Ð±Ð°Ð·Ñ " +"даннÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии (еÑли она ÑÑÑеÑÑвÑеÑ) и добавиÑÑ ÑезÑлÑÑаÑÑ Ð² Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ . " +"ÐапиÑи Ñ Ð´ÑблиÑÑÑÑимиÑÑ ÐºÐ»ÑÑами команд обÑединÑÑÑÑÑ. СгенеÑиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ Ð±Ð°Ð·Ð° " +"даннÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии по ÑмолÑÐ°Ð½Ð¸Ñ ÑÐ¾Ñ ÑанÑеÑÑÑ Ð² ÑекÑÑей ÑабоÑей диÑекÑоÑии как " +"[.filename]#compile_commands.json#." + +#. type: Title ==== +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:269 +#, no-wrap +msgid "Using devel/bear" +msgstr "ÐÑполÑзование devel/bear" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:274 +msgid "" +"In the top-level directory of the FreeBSD src tree, to generate compilation " +"database with `bear`:" +msgstr "" +"РкоÑневом каÑалоге иÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ кода FreeBSD, ÑÑÐ¾Ð±Ñ ÑоздаÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ " +"компилÑÑии Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ `bear`:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:278 +#, no-wrap +msgid "# bear --append -- make buildworld buildkernel -j`sysctl -n hw.ncpu`\n" +msgstr "# bear --append -- make buildworld buildkernel -j`sysctl -n hw.ncpu`\n" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:283 +msgid "" +"The `--append` flag tells `bear` to read an existing compilation database if " +"it is present, and append the results to the database. Entries with " +"duplicated command keys are merged. The generated compilation database by " +"default is saved in the current working directory as " +"[.filename]#compile_commands.json#." +msgstr "" +"Флаг `--append` ÑказÑÐ²Ð°ÐµÑ `bear` пÑоÑиÑаÑÑ ÑÑÑеÑÑвÑÑÑÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ " +"компилÑÑии, еÑли она еÑÑÑ, и добавиÑÑ ÑезÑлÑÑаÑÑ Ð² неÑ. ÐапиÑи Ñ " +"дÑблиÑÑÑÑимиÑÑ ÐºÐ»ÑÑами команд обÑединÑÑÑÑÑ. СгенеÑиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ Ð±Ð°Ð·Ð° даннÑÑ " +"компилÑÑии по ÑмолÑÐ°Ð½Ð¸Ñ ÑÐ¾Ñ ÑанÑеÑÑÑ Ð² ÑекÑÑей ÑабоÑей диÑекÑоÑии как " +"[.filename]#compile_commands.json#." + +#. type: Title == +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:285 +#, no-wrap +msgid "Final" +msgstr "ÐоÑледние Ñаги" + +#. type: Plain text +#: documentation/content/en/articles/freebsd-src-lsp/_index.adoc:289 +msgid "" +"Once the compilation database is generated, open any source files in the " +"FreeBSD src tree and LSP server daemon will be launched as well in " +"background. Opening source files in the src tree for the first time takes " +"significantly longer time before the LSP server is able to give a complete " +"result, due to initial background indexing by the LSP server compiling all " +"the listed entries in the compilation database. The language server daemon " +"however does not index the source files not appearing in the compilation " +"database, thus no complete results are shown on source files not being " +"compiled during the `make`." +msgstr "" +"ÐоÑле ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии оÑкÑойÑе лÑбой иÑÑ Ð¾Ð´Ð½Ñй Ñайл в деÑеве " +"иÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ кода FreeBSD, и ÑеÑвеÑнÑй демон LSP Ñакже запÑÑÑиÑÑÑ Ð² Ñоновом " +"Ñежиме. ÐеÑвое оÑкÑÑÑие иÑÑ Ð¾Ð´Ð½ÑÑ Ñайлов в деÑеве src Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð·Ð½Ð°ÑиÑелÑно " +"болÑÑе вÑемени, пÑежде Ñем ÑеÑÐ²ÐµÑ LSP ÑÐ¼Ð¾Ð¶ÐµÑ Ð¿ÑедоÑÑавиÑÑ Ð¿Ð¾Ð»Ð½Ñй ÑезÑлÑÑаÑ, " +"из-за пеÑвонаÑалÑного Ñонового индекÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑеÑвеÑом LSP, коÑоÑÑй " +"компилиÑÑÐµÑ Ð²Ñе пеÑеÑиÑленнÑе запиÑи в базе даннÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии. Ðднако демон " +"ÑзÑкового ÑеÑвеÑа не индекÑиÑÑÐµÑ Ð¸ÑÑ Ð¾Ð´Ð½Ñе ÑайлÑ, оÑÑÑÑÑÑвÑÑÑие в базе даннÑÑ " +"компилÑÑии, поÑÑÐ¾Ð¼Ñ Ð¿Ð¾Ð»Ð½Ñе ÑезÑлÑÑаÑÑ Ð½Ðµ оÑобÑажаÑÑÑÑ Ð´Ð»Ñ Ð¸ÑÑ Ð¾Ð´Ð½ÑÑ Ñайлов, " +"коÑоÑÑе не компилиÑовалиÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ `make`."