diff --git a/ru/_posts/2014-07-17-writting-own-completions-p1.html b/ru/_posts/2014-07-17-writting-own-completions-p1.html index 0ec1f99..24e7217 100644 --- a/ru/_posts/2014-07-17-writting-own-completions-p1.html +++ b/ru/_posts/2014-07-17-writting-own-completions-p1.html @@ -4,12 +4,12 @@ type: paper hasTr: true layout: paper tags: linux, разработка -title: Написание собственных дополнений для Shell. Zsh +title: Написание своих дополнений для Shell. Zsh short: writting-own-completions-p1 -description: В данных статьях описываются некоторые основы создания файлов автодополнений для собственной программы. +description: В данных статьях описываются некоторые основы создания файлов дополнений для собственной программы. ---

Преамбула

-

В процессе разработки одного своего проекта возникло желание добавить также файлы автодополнений (только не спрашивайте зачем). Благо я как-то уже брался за написание подобных вещей, но читать что-либо тогда мне было лень, и так и не осилил.

+

В процессе разработки одного своего проекта возникло желание добавить также файлы дополнений (только не спрашивайте зачем). Благо я как-то уже брался за написание подобных вещей, но читать что-либо тогда мне было лень, и так и не осилил.

Введение

Существует несколько возможных вариантов написания файла автодополнения для zsh. В случае данной статьи я остановлюсь только на одном из них, который предоставляет большие возможности и не требует больших затрат (например, работы с регулярными выражениями).

diff --git a/ru/_posts/2014-07-17-writting-own-completions-p2.html b/ru/_posts/2014-07-17-writting-own-completions-p2.html index 3ca8c6b..0cc5942 100644 --- a/ru/_posts/2014-07-17-writting-own-completions-p2.html +++ b/ru/_posts/2014-07-17-writting-own-completions-p2.html @@ -4,12 +4,12 @@ type: paper hasTr: true layout: paper tags: linux, разработка -title: Написание собственных дополнений для Shell. Bash +title: Написание своих дополнений для Shell. Bash short: writting-own-completions-p2 -description: В данных статьях описываются некоторые основы создания файлов автодополнений для собственной программы. +description: В данных статьях описываются некоторые основы создания файлов дополнений для собственной программы. ---

Преамбула

-

В процессе разработки одного своего проекта возникло желание добавить также файлы автодополнений (только не спрашивайте зачем). Благо я как-то уже брался за написание подобных вещей, но читать что-либо тогда мне было лень, и так и не осилил.

+

В процессе разработки одного своего проекта возникло желание добавить также файлы дополнений (только не спрашивайте зачем). Благо я как-то уже брался за написание подобных вещей, но читать что-либо тогда мне было лень, и так и не осилил.

Введение

Bash, в отличие от zsh, требует к себе некоторого велосипедостроения в отношении дополнений. Бегло погуглив, я не нашел более-менее нормальных туториалов, потому за основу были взяты имеющиеся в системе файлы дополнений для pacman.

@@ -17,7 +17,7 @@ description: В данных статьях описываются некото

Рассмотрим на примере все того же моего приложения. Я напомню, что часть справки к которому выглядит таким образом:

{% highlight bash %} netctl-gui [ -h | --help ] [ -e ESSID | --essid ESSID ] [ -с FILE | --config FILE ] - [ -o PROFILE | --open PROFILE ] [ -t NUM | --tab NUM ] [ --set-opts OPTIONS ] + [ -o PROFILE | --open PROFILE ] [ -t NUM | --tab NUM ] [ --set-opts OPTIONS ] {% endhighlight %}

Список флагов: @@ -39,20 +39,20 @@ netctl-gui [ -h | --help ] [ -e ESSID | --essid ESSID ] [ -с FILE | --config FI _netctl_gui_arglist=() _netctl_gui_settings=() _netctl_gui_tabs=() -_netctl_profiles() {} +_netctl_profiles() {} {% endhighlight %} Затем идут основные функции, которые будут вызываться для дополнения для определенной команды. В моем случае команда одна, и функция одна: {% highlight bash %} # work block -_netctl-gui() {} +_netctl-gui() {} {% endhighlight %} Далее, опять, без выделения в отдельную функцию делаем соответствие функция-команда: {% highlight bash %} -complete -F _netctl_gui netctl-gui +complete -F _netctl_gui netctl-gui {% endhighlight %}

@@ -105,7 +105,7 @@ _netctl_gui() { wantfiles='-@(c|-config)' wantprofiles='-@(o|-open|s|-select)' wantsettings='-@(-set-opts)' - + wanttabs='-@(t|-tab)' _get_comp_words_by_ref cur prev