mirror of
https://github.com/arcan1s/arcanis.me.git
synced 2025-04-24 23:37:19 +00:00
edit title
This commit is contained in:
parent
b2904998b8
commit
456b8eefa0
@ -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: В данных статьях описываются некоторые основы создания файлов дополнений для собственной программы.
|
||||
---
|
||||
<h2><a name="preamble" class="anchor" href="#preamble"><span class="octicon octicon-link"></span></a>Преамбула</h2>
|
||||
<p>В процессе разработки <a href="/ru/projects/netctl-gui">одного своего проекта</a> возникло желание добавить также файлы автодополнений (только не спрашивайте зачем). Благо я как-то уже брался за написание подобных вещей, но читать что-либо тогда мне было лень, и так и не осилил.</p>
|
||||
<p>В процессе разработки <a href="/ru/projects/netctl-gui">одного своего проекта</a> возникло желание добавить также файлы дополнений (только не спрашивайте зачем). Благо я как-то уже брался за написание подобных вещей, но читать что-либо тогда мне было лень, и так и не осилил.</p>
|
||||
|
||||
<h2><a name="introduction" class="anchor" href="#introduction"><span class="octicon octicon-link"></span></a>Введение</h2>
|
||||
<p>Существует несколько возможных вариантов написания файла автодополнения для zsh. В случае данной статьи я остановлюсь только на одном из них, который предоставляет большие возможности и не требует больших затрат (например, работы с регулярными выражениями).</p>
|
||||
|
@ -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: В данных статьях описываются некоторые основы создания файлов дополнений для собственной программы.
|
||||
---
|
||||
<h2><a name="preamble" class="anchor" href="#preamble"><span class="octicon octicon-link"></span></a>Преамбула</h2>
|
||||
<p>В процессе разработки <a href="/ru/projects/netctl-gui">одного своего проекта</a> возникло желание добавить также файлы автодополнений (только не спрашивайте зачем). Благо я как-то уже брался за написание подобных вещей, но читать что-либо тогда мне было лень, и так и не осилил.</p>
|
||||
<p>В процессе разработки <a href="/ru/projects/netctl-gui">одного своего проекта</a> возникло желание добавить также файлы дополнений (только не спрашивайте зачем). Благо я как-то уже брался за написание подобных вещей, но читать что-либо тогда мне было лень, и так и не осилил.</p>
|
||||
|
||||
<h2><a name="introduction" class="anchor" href="#introduction"><span class="octicon octicon-link"></span></a>Введение</h2>
|
||||
<p>Bash, в <a href="/ru/2014/07/17/writting-own-completions-p1">отличие от zsh</a>, требует к себе некоторого велосипедостроения в отношении дополнений. Бегло погуглив, я не нашел более-менее нормальных туториалов, потому за основу были взяты имеющиеся в системе файлы дополнений для <code>pacman</code>.</p>
|
||||
@ -17,7 +17,7 @@ description: В данных статьях описываются некото
|
||||
<p>Рассмотрим на примере все того же моего приложения. Я напомню, что часть справки к которому выглядит таким образом:</p>
|
||||
{% 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 %}
|
||||
|
||||
<p>Список флагов:
|
||||
@ -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 %}
|
||||
|
||||
Далее, опять, <b>без выделения в отдельную функцию</b> делаем соответствие функция-команда:
|
||||
|
||||
{% highlight bash %}
|
||||
complete -F _netctl_gui netctl-gui
|
||||
complete -F _netctl_gui netctl-gui
|
||||
{% endhighlight %}
|
||||
</p>
|
||||
|
||||
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user