<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.docbook.org/xml/4.2/docbookx.dtd">
<article lang="fr">
<artheader>
  <title>Activer la complétion sur les packages Debian avec Zsh</title>
  <authorgroup>
  <author>
        <firstname>Nowicki</firstname>
        <surname>Christophe</surname>
  </author>
  </authorgroup>
  <date>juillet 2003</date>
  <legalnotice>
      <para>
         Permission est accordée de copier, distribuer et/ou modifier ce
         document selon les termes de la Licence de Documentation Libre GNU
         (GNU Free Documentation License), version 1.1 ou toute version
         ultérieure publiée par la Free Software Foundation.
         Pas de section inaltérable.
      </para>
  </legalnotice>
  <copyright>
      <year>2003</year>
      <holder>Nowicki Christophe</holder>
   </copyright>
</artheader>

<abstract>
  <title>Introduction</title>
   <para>
   Ce document explique comment activer la complétion sur les packages
   Debian a l'aide de Zsh.
   </para>
</abstract>

<sect1>
  <title>Installer Zsh</title>
  <para>
  Nous allons installer Zsh avec l'aide d'apt et changer le shell par
  default de l'utilisateur root.
  </para>
  <para>
  <screen format="linespecific">
  <prompt moreinfo="none">#</prompt><userinput moreinfo="none">echo $SHELL</userinput>
  <computeroutput moreinfo="none">/bin/bash</computeroutput>
  <prompt moreinfo="none">#</prompt><userinput moreinfo="none">apt-get install zsh</userinput>
  <computeroutput moreinfo="none">Reading Package Lists... Done</computeroutput>
  <computeroutput moreinfo="none">Building Dependency Tree... Done</computeroutput>
  <computeroutput moreinfo="none">The following NEW packages will be installed:</computeroutput>
  <computeroutput moreinfo="none"><![CDATA[  zsh]]></computeroutput>
  <computeroutput moreinfo="none">0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.</computeroutput>
  <computeroutput moreinfo="none">Need to get 1676kB of archives.</computeroutput>
  <computeroutput moreinfo="none">After unpacking 4985kB of additional disk space will be used.</computeroutput>
  <computeroutput moreinfo="none">Get:1 http://192.168.0.1 unstable/main zsh 4.0.7-5 [1676kB]</computeroutput>
  <computeroutput moreinfo="none">Fetched 1676kB in 0s (4041kB/s)</computeroutput>
  <computeroutput moreinfo="none">Reading changelogs... Done</computeroutput>
  <computeroutput moreinfo="none">Preconfiguring packages ...</computeroutput>
  <computeroutput moreinfo="none">Selecting previously deselected package zsh.</computeroutput>
  <computeroutput moreinfo="none">(Reading database ... 150836 files and directories currently installed.)</computeroutput>
  <computeroutput moreinfo="none">Unpacking zsh (from .../archives/zsh_4.0.7-5_i386.deb) ...</computeroutput>
  <computeroutput moreinfo="none">Setting up zsh (4.0.7-5) ...</computeroutput>
  <prompt moreinfo="none">#</prompt><userinput moreinfo="none">chsh</userinput>
  <computeroutput moreinfo="none">Changing the login shell for root</computeroutput>
  <computeroutput moreinfo="none">Enter the new value, or press return for the default</computeroutput>
  <computeroutput moreinfo="none"><![CDATA[        Login Shell
  [/bin/bash]:]]><userinput moreinfo="none">/bin/zsh</userinput></computeroutput>
  <prompt moreinfo="none">#</prompt><userinput moreinfo="none">su -</userinput>
  <prompt moreinfo="none">#</prompt><userinput moreinfo="none">echo $SHELL</userinput>
  <computeroutput moreinfo="none">/bin/zsh</computeroutput>
  </screen>
  </para>
  <para>
  Voila le login shell de l'utilisateur root est Zsh. Il ne nous reste
  plus qu'à activer la complétion de celui-ci.
  </para>
</sect1>

<sect1>
  <title>Activer la complétion</title>
  <para>
  Par default la complétion de zsh n'est pas activée. Il faut donc
  modifier le fichier .zshrc dans le repertoire de l'utilisateur, ou bien
  dans le fichier /etc/zshrc. Le script Zsh compinstall automatise
  l'activation de la complétion. Il se trouve dans le répertoire
  /usr/share/zsh/<![CDATA[<VERSION DE ZSH>]]>/functions/Completion par
  default sur Debian GNU/Linux.
  </para>
  <para>
  <screen format="linespecific">
  <prompt moreinfo="none">#</prompt><userinput moreinfo="none">cd /usr/share/zsh/4.0.7/functions/Completion</userinput>
  <prompt moreinfo="none">#</prompt><userinput moreinfo="none">source compinstall</userinput>
  <computeroutput moreinfo="none">I haven't found any existing completion definitions.</computeroutput>
  <computeroutput moreinfo="none">If you have some already defined by compinstall, edit the name of the</computeroutput>
  <computeroutput moreinfo="none">file where these can be found.  Note that this will only work if they</computeroutput>
  <computeroutput moreinfo="none">are exactly the form in which compinstall inserted them.  If you leave</computeroutput>
  <computeroutput moreinfo="none">the line as it is, or empty, I won't search.</computeroutput>
  <computeroutput moreinfo="none">file&gt;/root/.zshrc</computeroutput>
  <computeroutput moreinfo="none">Starting a new completion configuration from scratch.</computeroutput>
  <computeroutput moreinfo="none">This will be written to the new file /root/.zshrc.</computeroutput>
  <computeroutput moreinfo="none">Note that you will be given a chance to save the new setup</computeroutput>
  <computeroutput moreinfo="none">somewhere else at the end.</computeroutput>
  <computeroutput moreinfo="none">--- Hit newline to continue or `q' to exit without saving ---</computeroutput>
  <computeroutput moreinfo="none"/>
  <computeroutput moreinfo="none">d=/usr/share/zsh/4.0.7/functions/Zle</computeroutput>
  <computeroutput moreinfo="none">compdir=/usr/share/zsh/4.0.7/functions/Completion</computeroutput>
  <computeroutput moreinfo="none">subdirs=1</computeroutput>
  <computeroutput moreinfo="none">lines=''</computeroutput>
  <computeroutput moreinfo="none">Completion directories /usr/share/zsh/4.0.7/functions/Completion/*</computeroutput>
  <computeroutput moreinfo="none">are already in your $fpath, good.</computeroutput>
  <computeroutput moreinfo="none">--- Hit newline to continue or `q' to exit without saving ---</computeroutput> 
  </screen>
  </para>
  <para>
  <screen width="80" format="linespecific">
<computeroutput moreinfo="none"><![CDATA[                 *** compinstall: main menu ***]]></computeroutput>
<computeroutput moreinfo="none"><![CDATA[Note that hitting `q' in menus does not abort the set of changes from]]></computeroutput>
<computeroutput moreinfo="none"><![CDATA[lower level menus.  However, quitting at top level will ensure that]]></computeroutput>
<computeroutput moreinfo="none"><![CDATA[noting at all is actually written out.]]></computeroutput>
<computeroutput moreinfo="none"/>
<computeroutput moreinfo="none"><![CDATA[1.  Completers:  choose completion behaviour for tasks such as]]></computeroutput>
<computeroutput moreinfo="none"><![CDATA[    approximation, spell-checking, expansion.]]></computeroutput>
<computeroutput moreinfo="none"/>
<computeroutput moreinfo="none"><![CDATA[2.  Matching control: set behaviour for case-insensitive matching,]]></computeroutput>
<computeroutput moreinfo="none"><![CDATA[    extended (partial-word) matching and substring matching.]]></computeroutput>
<computeroutput moreinfo="none"/>
<computeroutput moreinfo="none"><![CDATA[3.  Styles for changing the way completions are displayed and inserted.]]></computeroutput>
<computeroutput moreinfo="none"/>
<computeroutput moreinfo="none"><![CDATA[4.  Styles for particular completions.]]></computeroutput>
<computeroutput moreinfo="none"/>
<computeroutput moreinfo="none"><![CDATA[c.  Change context (plus more information on contexts).]]></computeroutput>
<computeroutput moreinfo="none"/>
<computeroutput moreinfo="none"><![CDATA[q.  Return without saving.]]></computeroutput>
<computeroutput moreinfo="none"><![CDATA[0.  Save and exit.]]></computeroutput>
<computeroutput moreinfo="none"/>
<computeroutput moreinfo="none"><![CDATA[--- Hit choice ---]]></computeroutput>
 </screen>
  </para>
  <para>
  Nous allons configurer les modules de complétion à l'aide de l'option 1 du menu.
  </para>
  <para>
  <screen width="80" format="linespecific">
<computeroutput moreinfo="none"><![CDATA[              *** compinstall: completer menu ***]]></computeroutput>
<computeroutput moreinfo="none"/>
<computeroutput moreinfo="none"><![CDATA[Current context: :completion:*]]></computeroutput>
<computeroutput moreinfo="none"/>
<computeroutput moreinfo="none"><![CDATA[The following completers are available.  Those marked `(*)' are already]]></computeroutput>
<computeroutput moreinfo="none"><![CDATA[set for the context shown above.  If none are selected, the completers]]></computeroutput>
<computeroutput moreinfo="none"><![CDATA[will not be set for this context at all.]]></computeroutput>
<computeroutput moreinfo="none"/>
<computeroutput moreinfo="none"><![CDATA[1. (*) Basic completion.]]></computeroutput>
<computeroutput moreinfo="none"><![CDATA[2. (*) Approximate completion:  completion with correction of existing word.]]></computeroutput>
<computeroutput moreinfo="none"><![CDATA[3. (*) Correction:  correct existing word, no completion.]]></computeroutput>
<computeroutput moreinfo="none"><![CDATA[4. (*) Expansion: use globbing and parameter substitution, if possible.]]></computeroutput>
<computeroutput moreinfo="none"/>
<computeroutput moreinfo="none"><![CDATA[o.     Set options for the completers above.]]></computeroutput>
<computeroutput moreinfo="none"><![CDATA[m.     Set completers that modify the behaviour of the four main ones above.]]></computeroutput>
<computeroutput moreinfo="none"><![CDATA[q.     Return without saving.]]></computeroutput>
<computeroutput moreinfo="none"><![CDATA[0.     Done setting completers.]]></computeroutput>
<computeroutput moreinfo="none"/>
<computeroutput moreinfo="none"><![CDATA[--- Hit selection --- ]]></computeroutput>
  </screen>
  </para>
  <para>
  Pour avoir la complétion sur les packages, il suffit de choisir "Basic
  completion". Après avoir choisi le comportement de Zsh, il faut
  retourner au menu principal à l'aide de la touche "0". Et sauvegarder
  son choix par cette même touche "0". 
  </para>
  <para>
  <screen format="linespecific">
  <computeroutput moreinfo="none">--- Hit choice --- </computeroutput><userinput moreinfo="none">0</userinput>
  <computeroutput moreinfo="none">output=''</computeroutput>
  <computeroutput moreinfo="none">Save new settings to /root/.zshrc? </computeroutput><userinput moreinfo="none">y</userinput>
  <computeroutput moreinfo="none"/>
  <computeroutput moreinfo="none">Successfully added compinstall lines to /root/.zshrc.</computeroutput>
  <computeroutput moreinfo="none">Set new styles for immediate use?</computeroutput><userinput moreinfo="none">n</userinput>
  </screen>
  </para>
  <para>
  Zsh doit etre relancé pour que la nouvelle configuration soit prise en compte.
  </para>
  <para>
  <screen format="linespecific">
  <prompt moreinfo="none">#</prompt><userinput moreinfo="none">zsh</userinput>
  <prompt moreinfo="none">#</prompt><userinput moreinfo="none">apt-get install ppp</userinput>
  <computeroutput moreinfo="none">ppp-pam          ppp-sh4-cross    pppdcapiplugin   pppoeconf</computeroutput>
  <computeroutput moreinfo="none">ppp-sh3-cross    ppp-udeb         pppoe            pppstatus</computeroutput>
  </screen>
  </para>
  <para>
  Comme vous pouvez le voir, Zsh complete tout les packages qui
  commencent par ppp et qui ne sont pas installé sur mon systeme. 
  Il peut effectuer des complétions sur beaucoups d'autres choses. Mais je vous
  laisse le découvrir par vous meme. 
  </para>
  <para>Un dernière petite precision a propos du script compinstall.
  Celui-ci ajoute les lignes suivantes dans le fichier /root/.zshrc</para>
  <para>
  <programlisting format="linespecific"><![CDATA[
# The following lines were added by compinstall

zstyle ':completion:*' completer _expand _complete _correct _approximate
zstyle :compinstall filename '/root/.zshrc'

autoload -U compinit
compinit
# End of lines added by compinstall]]>
  </programlisting>
  </para>
  <para>
  Le script compinstall se trouve dans le PATH de Zsh, et il est possible
  de modifier le comportement du compléteur a n'importe quel moment.
  Vous pouvez copier le fichier de configuration .zshrc de l'utilisateur
  root dans le fichier de configuration global de Zsh pour que chaque
  utilisateur qui l'utilise beneficie de la complétion. 
  </para>
  <para>
  <screen format="linespecific">
  <prompt moreinfo="none">#</prompt><userinput moreinfo="none">cp /root/.zshrc /etc/zsh/zshrc</userinput>
  </screen>
  </para>
</sect1>
</article>
