Ceci est le fichier Info drkm.info, produit par Makeinfo version 4.5 à partir drkm.texi. Copyright (C) 2002, 2003, 2004, 2005 Florent Georges  File: drkm.info, Node: Top, Next: What is drkm-lib ?, Up: (dir) This manual describes drkm-lib, the drkm's GNU Emacs Lisp Library version 0.1. * Menu: Old ... * What is drkm-lib ?:: What is drkm-lib ? Modules * drkm:: Module général, routines générales. * drkm-TMP:: Module temporaire. * drkm-assert:: Assertions. * drkm-cl:: Common Lisp. * drkm-comments:: Commentaires. * drkm-compat:: Compatibilité. * drkm-config:: Framework de configuration. * drkm-custom:: Support pour le package Custom. * drkm-elisp-doc:: Emacs Lisp documentation strings. * drkm-errors:: Erreurs. * drkm-face:: Faces. * drkm-file:: Fichiers et répertoires. * drkm-font-lock:: Font Locking. * drkm-fstyle-drkm:: Style de fichier `drkm'. * drkm-ical:: iCalendar. * drkm-key:: Keys. * drkm-log:: Logging. * drkm-occur:: FIXME: ??? * drkm-test:: Tests. * drkm-time:: Routines de gestion des dates et du temps. * drkm-vcard:: Représentation de vCards. * drkm-vcard-mode:: Mode d'édition de vCards. * drkm-version-is:: Identification des versions et saveurs d'Emacs. Indices * Concept Index:: Index over important concepts. * Function Index:: Index over important functions. * Type Index:: Index over important types.  File: drkm.info, Node: What is drkm-lib ?, Next: drkm, Prev: Top, Up: Top 1 What is drkm-lib ? ******************** Blah, blah, blah.  File: drkm.info, Node: drkm, Next: drkm-TMP, Prev: What is drkm-lib ?, Up: Top 2 drkm ******  File: drkm.info, Node: drkm-TMP, Next: drkm-assert, Prev: drkm, Up: Top 3 drkm-TMP **********  File: drkm.info, Node: drkm-assert, Next: drkm-cl, Prev: drkm-TMP, Up: Top 4 drkm-assert *************  File: drkm.info, Node: drkm-cl, Next: drkm-comments, Prev: drkm-assert, Up: Top 5 drkm-cl *********  File: drkm.info, Node: drkm-comments, Next: drkm-compat, Prev: drkm-cl, Up: Top 6 drkm-comments ***************  File: drkm.info, Node: drkm-compat, Next: drkm-config, Prev: drkm-comments, Up: Top 7 drkm-compat *************  File: drkm.info, Node: drkm-config, Next: drkm-custom, Prev: drkm-compat, Up: Top 8 drkm-config ************* Ce module définit un framework de configuration d'Emacs. Il permet de configurer un mode (il devrait pouvoir configurer des packages, mais c'est pour l'instant plutôt des modes), cfr. `drkm-conf:configure()'. Il permet également de jouer au démarrage avec les fichiers subdirs.el et loaddefs.el, cfr. respectivement *Note Config Subdirs:: et *Note Config Loaddefs::. - Fonction: drkm-conf:init drkm-lib-dir Dirige l'initialisation personnelle d'Emacs, comme le `load-path'. TODO: Fait beaucoup de choses. Cfr. pour l'instant sa docstring, *Note Config Subdirs:: et *Note Config Loaddefs::. - Macro: drkm-conf:configure mode &key :config :auto-mode :interpreters :autoloads :autoload-files :font-lock :hooks :info-dirs Cette macro configure le mode `MODE', qui est un symbole non-quoté. Elle évalue une et une seule fois ses arguments (sauf `MODE'). Elle délègue son travail aux fonctions, dans l'ordre, `drkm-conf::configure-impl()', `drkm-conf::configure-config()', `drkm-conf::configure-font-lock()', `drkm-conf::configure-hooks()', `drkm-conf:add-list-to-info-path()'. Voir la documentation de celles-ci pour plus de détails. - Fonction: drkm-conf::configure-impl mode auto-mode interpreters autoloads autoload-files - Fonction: drkm-conf::configure-config function feature Si `FUNCTION' est nil, charge la `FEATURE'. Sinon, procède comme expliqué ci-desous. `FUNCTION' est le symbole du mode à configurer, qui est une fonction. Il faut requérir la `FEATURE' lors du prochain appel de `FUNCTION'. Selon la valeur de la function cell du symbole `FUNCTION', des choses différentes sont entreprises. Si `FUNCTION' n'est pas liée à une fonction, on définit cette fonction, de manière à ce qu'à l'exécution, elle : (i) annulle sa définition (fboundp -> nil), (ii) charge la `FEATURE', (iii) exécute la fonction liée au symbole, avec les arguments reçus. Il faut donc que la `FEATURE' définisse cette fonction. Par exemple en chargeant un module exécutant un `defun()' de cette fonction. Si `FUNCTION' est un autoload, on remplace cette définition par une fonction qui, à l'éxécution : (i) replace l'autoload dans la définition de fonction du symbole, (ii) charge la `FEATURE', (iii) exécute la fonction liée au symbole, avec les arguments reçus. La `FEATURE' peut donc définir cette fonction, par exemple en chargeant le module où elle est définie. Sinon, la définition sera trouvée en fonction de l'autoload initial. Si `FUNCTION' est une fonction, on crée un advice en tête de cette fonction, qui : (i) se supprime des advices de cette fonction, (ii) charge la `FEATURE', (iii) exécute la fonction liée au symbole, avec les arguments reçus. La `FEATURE' ne devrait donc pas redéfinir la fonction, puisqu'elle est déjà définie. Mais cela est possible. Dans tous les cas, c'est donc le même schéma. On modifie la définition de fonction du symbole, de manière à ce qu'elle : · restaure la définition originale ; · charge la `FEATURE' ; · appelle effectivement la fonction avec les arguments qu'elle a elle-même reçus. `FEATURE' est sensée configurer le mode `MODE', et la plupart du temps le définir. Si le module définissant `MODE' n'a pas encore été chargé, elle peut contrôler le moment du chargement. Donc exécuter ce qui doit l'être avant le chargement du module, puis le charger, et enfin exécuter ce qui doit l'être après le chargement : (code-to-execute-before ...) (setq the-variable ...) (require 'the-mode) (code-to-execute-after ...) (setq the-constant ...) (provide 'config-the-mode) - Fonction: drkm-conf::configure-font-lock mode &optional keywords - Fonction: drkm-conf::configure-hooks mode &optional values * Menu: * Config Subdirs:: Les fichiers subdirs.el. * Config Loaddefs:: Les fichiers loaddefs.el.  File: drkm.info, Node: Config Subdirs, Next: Config Loaddefs, Up: drkm-config 8.1 subdirs.el Files ==================== Les fichiers subdirs.el permettent une certaine décentralisation de la configuration. Leur intérêt se situe essentiellement au niveau de l'installation de packages. Le principe est tout simple. On part d'une liste de répertoires connus, que l'on parcours à la recherche de packages. On charge (au moyen de `load()') le fichier subdirs.el présent dans ce répertoire. Il peut alors ajouter certains des sous-répertoires au `load-path', et recurser sur ceux-ci. En fait, puisque l'on se sert de `load()', il s'agit de fichiers Emacs Lisp classiques, et ils peuvent faire tout et n'importe quoi. Il existe néanmoins quelques fonctions de support aux tâches les plus fréquentes dans ce genre de fichiers (l'ajout au `load-path', l'ajout à `Info-directory-list', la récursion sur les sous-répertoires, etc.), ce qui en fait en général de petits fichiers facilement maintenables. L'intérêt est que ces fichiers se trouvent dans les répertoires qu'ils configurent. Vous installez une nouvelle version d'un package, et vous aimez garder les noms de répertoire comprenant la version ? Pas besoin de changer votre ~/.emacs (ou celui de chacun des utilisateurs de votre système). Il suffit de modifier le subdirs.el du répertoire dans lequel vous avez installé le package. Ils peuvent également contrôler le chargement (ou non) du fichier loaddefs.el de leur répertoire. *Note Config Loaddefs::. Leur lancement initial est dirigé par `drkm-conf:init()'. - Option de l'Usager: drkm-conf:subdirs-file-name ... - Option de l'Usager: drkm-conf:subdirs-in-std-dirs-file-name ... - Fonction: drkm-conf:subdirs-add-info-path info-dir &optional default-directory &key if-dir Ajoute des répertoires au path de recherche des fichiers Info, `Info-directory-list'. `INFO-DIR' peut être une chaîne de caractères ou une liste de chaînes de caractères. Ces chaînes sont les noms des répertoires à ajouter. `DEFAULT-DIRECTORY' sert de répertoire courant pour les noms de répertoire relatifs. Si `:IF-DIR' est non-nil, seuls les répertoires contenant un fichier nommé dir sont pris en compte. Il s'agit en effet d'une bonne pratique de fournir un fichier dir dans les répertoires du path des fichiers Info. TODO: Permettre que `INFO-DIR' soit nil, auquel cas la liste est initialisée avec les noms des sous-répertoires de `DEFAULT-DIRECTORY'. - Fonction: drkm-conf:subdirs-initialize-all-subdirs ... - Fonction: drkm-conf:subdirs-initialize-dirs ...  File: drkm.info, Node: Config Loaddefs, Prev: Config Subdirs, Up: drkm-config 8.2 loaddefs.el Files ===================== À RÉDIGER: fournit la base de la gestion des loaddefs.el, augmentée par . Cela semble suffisant, bien que je n'aime pas trop le mécanisme de sélection de fichiers de ce dernier. Son utilisation est : emacs -batch \ -l cedet-autogen \ -f cedet-batch-update-autoloads \ loaddefs.el [dir] [subdirs ...] - Option de l'Usager: drkm-conf:loaddefs-file-name TODO: ... - Option de l'Usager: drkm-conf:loaddefs-in-std-dirs-file-name TODO: ... - Option de l'Usager: drkm-conf:load-loaddefs-p TODO: ...  File: drkm.info, Node: drkm-custom, Next: drkm-elisp-doc, Prev: drkm-config, Up: Top 9 drkm-custom ************* - Widget: drkm-cus:link Destiné à être employé associé au mot clef `:link' d'un `defgroup()' ou d'un `defcustom()' : (defgroup my-group nil ... :link '(drkm-cus:link "")) On peut alors employer aussi bien des références d'Info (INFO), que des URLs (URL), des fichiers (FILE) ou des pages de wiki (WIKI). Pour l'instant, seul l'accesseur d'Info est opérationel (càd que lorsque l'on clique sur le bouton associé, le lecteur Info s'ouvre à la bonne page).  File: drkm.info, Node: drkm-elisp-doc, Next: drkm-errors, Prev: drkm-custom, Up: Top 10 drkm-elisp-doc *****************  File: drkm.info, Node: drkm-errors, Next: drkm-face, Prev: drkm-elisp-doc, Up: Top 11 drkm-errors **************  File: drkm.info, Node: drkm-face, Next: drkm-file, Prev: drkm-errors, Up: Top 12 drkm-face ************  File: drkm.info, Node: drkm-file, Next: drkm-font-lock, Prev: drkm-face, Up: Top 13 drkm-file ************  File: drkm.info, Node: drkm-font-lock, Next: drkm-fstyle-drkm, Prev: drkm-file, Up: Top 14 drkm-font-lock *****************  File: drkm.info, Node: drkm-fstyle-drkm, Next: drkm-ical, Prev: drkm-font-lock, Up: Top 15 drkm-fstyle-drkm *******************  File: drkm.info, Node: drkm-ical, Next: drkm-key, Prev: drkm-fstyle-drkm, Up: Top 16 drkm-ical ************  File: drkm.info, Node: drkm-key, Next: drkm-log, Prev: drkm-ical, Up: Top 17 drkm-key ***********  File: drkm.info, Node: drkm-log, Next: drkm-occur, Prev: drkm-key, Up: Top 18 drkm-log ***********  File: drkm.info, Node: drkm-occur, Next: drkm-test, Prev: drkm-log, Up: Top 19 drkm-occur *************  File: drkm.info, Node: drkm-test, Next: drkm-time, Prev: drkm-occur, Up: Top 20 drkm-test ************  File: drkm.info, Node: drkm-time, Next: drkm-vcard, Prev: drkm-test, Up: Top 21 drkm-time ************  File: drkm.info, Node: drkm-vcard, Next: drkm-vcard-mode, Prev: drkm-time, Up: Top 22 drkm-vcard *************  File: drkm.info, Node: drkm-vcard-mode, Next: drkm-version-is, Prev: drkm-vcard, Up: Top 23 drkm-vcard-mode ******************  File: drkm.info, Node: drkm-version-is, Next: Concept Index, Prev: drkm-vcard-mode, Up: Top 24 drkm-version-is ******************  File: drkm.info, Node: Concept Index, Next: Function Index, Prev: drkm-version-is, Up: Top Conept Index ************ * Menu: * Config Loaddefs: Config Loaddefs. * Config Subdirs: Config Subdirs. * drkm: drkm. * drkm-assert: drkm-assert. * drkm-cl: drkm-cl. * drkm-comments: drkm-comments. * drkm-compat: drkm-compat. * drkm-config: drkm-config. * drkm-custom: drkm-custom. * drkm-elisp-doc: drkm-elisp-doc. * drkm-errors: drkm-errors. * drkm-face: drkm-face. * drkm-file: drkm-file. * drkm-font-lock: drkm-font-lock. * drkm-fstyle-drkm: drkm-fstyle-drkm. * drkm-ical: drkm-ical. * drkm-key: drkm-key. * drkm-lib, introduction: What is drkm-lib ?. * drkm-log: drkm-log. * drkm-occur: drkm-occur. * drkm-test: drkm-test. * drkm-time: drkm-time. * drkm-TMP: drkm-TMP. * drkm-vcard: drkm-vcard. * drkm-vcard-mode: drkm-vcard-mode. * drkm-version-is: drkm-version-is. * Introduction: Top. * Introduction to drkm-lib: What is drkm-lib ?. * loaddefs.el: Config Loaddefs. * subdirs.el: Config Subdirs. * What is drkm-lib ?: What is drkm-lib ?.  File: drkm.info, Node: Function Index, Next: Type Index, Prev: Concept Index, Up: Top Function Index ************** * Menu: * drkm-conf::configure-config: drkm-config. * drkm-conf::configure-font-lock: drkm-config. * drkm-conf::configure-hooks: drkm-config. * drkm-conf::configure-impl: drkm-config. * drkm-conf:configure: drkm-config. * drkm-conf:init: drkm-config. * drkm-conf:subdirs-add-info-path: Config Subdirs. * drkm-conf:subdirs-initialize-all-subdirs: Config Subdirs. * drkm-conf:subdirs-initialize-dirs: Config Subdirs.  File: drkm.info, Node: Type Index, Prev: Function Index, Up: Top Type Index ********** * Menu: * drkm-cus:link: drkm-custom.  Tag Table: Node: Top147 Node: What is drkm-lib ?1843 Node: drkm1988 Node: drkm-TMP2089 Node: drkm-assert2191 Node: drkm-cl2302 Node: drkm-comments2410 Node: drkm-compat2530 Node: drkm-config2650 Node: Config Subdirs6934 Node: Config Loaddefs9619 Node: drkm-custom10405 Node: drkm-elisp-doc11080 Node: drkm-errors11209 Node: drkm-face11330 Node: drkm-file11442 Node: drkm-font-lock11557 Node: drkm-fstyle-drkm11689 Node: drkm-ical11825 Node: drkm-key11941 Node: drkm-log12047 Node: drkm-occur12154 Node: drkm-test12266 Node: drkm-time12377 Node: drkm-vcard12488 Node: drkm-vcard-mode12607 Node: drkm-version-is12742 Node: Concept Index12880 Node: Function Index14705 Node: Type Index15337  End Tag Table