Bonsoir à tous,
j'apprends petit à petit toutes les inombrables possibilités qu'offre
emacs et à ce sujet je souhaite inclure automatiquement un fichier latex
contenant les macros de base chaque fois que j'ouvre un nouveau fichier
latex (*.tex) donc j'essaie de le faire avec mes connaissances limités
et la méthode du "hook".
Voici ce que j'ai mis dans mon ~/.emacs :
le 09/03/2005 à 21:23, rachid a écrit dans le message <422f5a55$0$29948$ :
j'apprends petit à petit toutes les inombrables possibilités qu'offre emacs et à ce sujet je souhaite inclure automatiquement un fichier latex contenant les macros de base chaque fois que j'ouvre un nouveau fichier latex (*.tex) donc j'essaie de le faire avec mes connaissances limités et la méthode du "hook". Voici ce que j'ai mis dans mon ~/.emacs :
Tu devrais regarder la documentation de insert-file :
| This function is meant for the user to run interactively. | Don't call it from programs! Use `insert-file-contents' instead. | (Its calling sequence is different; see its documentation).
Je ne sais pas si c'est ce que tu cherches mais je trouve ça vraiment pratique : <http://emacs-template.sourceforge.net/>
-- Benoit Izac
Bonjour,
le 09/03/2005 à 21:23, rachid a écrit
dans le message <422f5a55$0$29948$626a14ce@news.free.fr> :
j'apprends petit à petit toutes les inombrables possibilités qu'offre
emacs et à ce sujet je souhaite inclure automatiquement un fichier
latex contenant les macros de base chaque fois que j'ouvre un nouveau
fichier latex (*.tex) donc j'essaie de le faire avec mes connaissances
limités et la méthode du "hook".
Voici ce que j'ai mis dans mon ~/.emacs :
Tu devrais regarder la documentation de insert-file :
| This function is meant for the user to run interactively.
| Don't call it from programs! Use `insert-file-contents' instead.
| (Its calling sequence is different; see its documentation).
Je ne sais pas si c'est ce que tu cherches mais je trouve ça vraiment
pratique : <http://emacs-template.sourceforge.net/>
le 09/03/2005 à 21:23, rachid a écrit dans le message <422f5a55$0$29948$ :
j'apprends petit à petit toutes les inombrables possibilités qu'offre emacs et à ce sujet je souhaite inclure automatiquement un fichier latex contenant les macros de base chaque fois que j'ouvre un nouveau fichier latex (*.tex) donc j'essaie de le faire avec mes connaissances limités et la méthode du "hook". Voici ce que j'ai mis dans mon ~/.emacs :
Tu devrais regarder la documentation de insert-file :
| This function is meant for the user to run interactively. | Don't call it from programs! Use `insert-file-contents' instead. | (Its calling sequence is different; see its documentation).
Je ne sais pas si c'est ce que tu cherches mais je trouve ça vraiment pratique : <http://emacs-template.sourceforge.net/>
Surtout pas, sinon, tu vas ajouter "modele.tex" a chaque fois que tu ouvres un fichier LaTeX (même si il existait déjà).
(et au passage,
* C'est `add-hook' et non `setq' qu'il faudrait dans ce cas là,
* L'apostrophe devant le lambda est inutile (et même nuisible) en Emacs lisp.)
Voir plutôt:
,----[ C-h f auto-insert RET ] | auto-insert is an interactive compiled Lisp function in `autoinsert'. | (auto-insert) | | Insert default contents into new files if variable `auto-insert' is non-nil. | Matches the visited file name against the elements of `auto-insert-alist'. `----
Surtout pas, sinon, tu vas ajouter "modele.tex" a chaque fois que tu
ouvres un fichier LaTeX (même si il existait déjà).
(et au passage,
* C'est `add-hook' et non `setq' qu'il faudrait dans ce cas là,
* L'apostrophe devant le lambda est inutile (et même nuisible) en
Emacs lisp.)
Voir plutôt:
,----[ C-h f auto-insert RET ]
| auto-insert is an interactive compiled Lisp function in `autoinsert'.
| (auto-insert)
|
| Insert default contents into new files if variable `auto-insert' is non-nil.
| Matches the visited file name against the elements of `auto-insert-alist'.
`----
Surtout pas, sinon, tu vas ajouter "modele.tex" a chaque fois que tu ouvres un fichier LaTeX (même si il existait déjà).
(et au passage,
* C'est `add-hook' et non `setq' qu'il faudrait dans ce cas là,
* L'apostrophe devant le lambda est inutile (et même nuisible) en Emacs lisp.)
Voir plutôt:
,----[ C-h f auto-insert RET ] | auto-insert is an interactive compiled Lisp function in `autoinsert'. | (auto-insert) | | Insert default contents into new files if variable `auto-insert' is non-nil. | Matches the visited file name against the elements of `auto-insert-alist'. `----
,----[ C-h f auto-insert RET ] | auto-insert is an interactive compiled Lisp function in `autoinsert'. | (auto-insert) | | Insert default contents into new files if variable `auto-insert' is non-nil. | Matches the visited file name against the elements of `auto-insert-alist'. `----
Je ne connais (n'utilise) ni auto-insert ni Template (cité par Benoît). Une autre méthode pourrait être, selon les préférences du PO, une commande appelée interactivement (liée à une séquence de son choix) insérant un fichier donné, selon un nom symbolique. Quelque chose comme :
(defvar bi:latex-templates-alist '(("rapport" . "~/LaTeX/templates/rapport.tex") ("article" . "~/LaTeX/templates/article.tex") ("styleN" . "/usr/local/share/LaTeX/...")) "Styles de fichiers LaTeX. La clef est le nom du style, la valeur le nom du fichier associé, contenant un template à insérer dans un nouveau document de ce style.")
(defun bi:insert-latex-template (style) "Insère un template de document LaTeX, correspondant au `STYLE'. Cfr. `bi:latex-templates-alist'." (interactive (list (completing-read "Style: " bi:latex-templates-alist nil t))) (insert-file-contents (assoc style bi:latex-templates-alist)))
,----[ C-h f auto-insert RET ]
| auto-insert is an interactive compiled Lisp function in `autoinsert'.
| (auto-insert)
|
| Insert default contents into new files if variable `auto-insert' is non-nil.
| Matches the visited file name against the elements of `auto-insert-alist'.
`----
Je ne connais (n'utilise) ni auto-insert ni Template (cité par
Benoît). Une autre méthode pourrait être, selon les préférences du
PO, une commande appelée interactivement (liée à une séquence de son
choix) insérant un fichier donné, selon un nom symbolique. Quelque
chose comme :
(defvar bi:latex-templates-alist
'(("rapport" . "~/LaTeX/templates/rapport.tex")
("article" . "~/LaTeX/templates/article.tex")
("styleN" . "/usr/local/share/LaTeX/..."))
"Styles de fichiers LaTeX.
La clef est le nom du style, la valeur le nom du fichier associé,
contenant un template à insérer dans un nouveau document de ce
style.")
(defun bi:insert-latex-template (style)
"Insère un template de document LaTeX, correspondant au `STYLE'.
Cfr. `bi:latex-templates-alist'."
(interactive
(list (completing-read "Style: " bi:latex-templates-alist nil t)))
(insert-file-contents (assoc style bi:latex-templates-alist)))
,----[ C-h f auto-insert RET ] | auto-insert is an interactive compiled Lisp function in `autoinsert'. | (auto-insert) | | Insert default contents into new files if variable `auto-insert' is non-nil. | Matches the visited file name against the elements of `auto-insert-alist'. `----
Je ne connais (n'utilise) ni auto-insert ni Template (cité par Benoît). Une autre méthode pourrait être, selon les préférences du PO, une commande appelée interactivement (liée à une séquence de son choix) insérant un fichier donné, selon un nom symbolique. Quelque chose comme :
(defvar bi:latex-templates-alist '(("rapport" . "~/LaTeX/templates/rapport.tex") ("article" . "~/LaTeX/templates/article.tex") ("styleN" . "/usr/local/share/LaTeX/...")) "Styles de fichiers LaTeX. La clef est le nom du style, la valeur le nom du fichier associé, contenant un template à insérer dans un nouveau document de ce style.")
(defun bi:insert-latex-template (style) "Insère un template de document LaTeX, correspondant au `STYLE'. Cfr. `bi:latex-templates-alist'." (interactive (list (completing-read "Style: " bi:latex-templates-alist nil t))) (insert-file-contents (assoc style bi:latex-templates-alist)))
Bonsoir à tous, j'apprends petit à petit toutes les inombrables possibilités qu'offre emacs et à ce sujet je souhaite inclure automatiquement un fichier latex contenant les macros de base chaque fois que j'ouvre un nouveau fichier latex (*.tex) donc j'essaie de le faire avec mes connaissances limités et la méthode du "hook". Voici ce que j'ai mis dans mon ~/.emacs :
Mais il ne se passe rien quand j'ouvre un nouveau latex, pourriez-vous m'aider à résoudre simplement ce problème? Merci.
Je te recommande d'utiliser template, il faut investir un peu de temps mais c'est très agréable. Je t'envoie en privé un exemple si tu veux. -- jean
rachid a écrit :
Bonsoir à tous,
j'apprends petit à petit toutes les inombrables possibilités qu'offre
emacs et à ce sujet je souhaite inclure automatiquement un fichier latex
contenant les macros de base chaque fois que j'ouvre un nouveau fichier
latex (*.tex) donc j'essaie de le faire avec mes connaissances limités
et la méthode du "hook".
Voici ce que j'ai mis dans mon ~/.emacs :
Bonsoir à tous, j'apprends petit à petit toutes les inombrables possibilités qu'offre emacs et à ce sujet je souhaite inclure automatiquement un fichier latex contenant les macros de base chaque fois que j'ouvre un nouveau fichier latex (*.tex) donc j'essaie de le faire avec mes connaissances limités et la méthode du "hook". Voici ce que j'ai mis dans mon ~/.emacs :
Mais il ne se passe rien quand j'ouvre un nouveau latex, pourriez-vous m'aider à résoudre simplement ce problème? Merci.
Je te recommande d'utiliser template, il faut investir un peu de temps mais c'est très agréable. Je t'envoie en privé un exemple si tu veux. -- jean
Matthias Meulien
drkm écrivait :
(...) Je ne connais (n'utilise) ni auto-insert ni Template (cité par Benoît). Une autre méthode pourrait être,
AMHA, il ne s'agit pas d'une « autre méthode » : auto-insert fait ça !
Chez moi j'ai ça :
;; Charge le paquettage d'insertion automatique de squelettes ou de ;; fichiers à la creation d'un fichier puis précise où trouver les ;; modèles à insérer. (load-library "autoinsert") (setq auto-insert-directory (expand-file-name "~/.insert/")) (add-hook 'find-file-hooks 'auto-insert)
;; Définition de l'insertion automatique lors de la création d'un ;; fichier auquel est associé le mode `latex-mode' (add-to-list 'auto-insert-alist '(latex-mode . alt-auto-insert-latex))
(defun alt-auto-insert-latex () "Insert a template for a latex file depending on the document class." (interactive) (let* ((class (completing-read "Class of the document (default value is `none'): " '(("article" 1) ("report" 2) ("book" 3) ("letter" 4) ("slides" 5) ("exam" 6) ("none" 7)) nil t nil nil "none")) (name (concat auto-insert-directory class ".tex"))) (if (not (equal class "none")) (cond ((file-readable-p name) (insert-file-contents name)) (t (message "No template file found for this document class"))) (skeleton-insert '((read-file-name "Main file: " ) "% Time-stamp: <" (current-time-string) " " (user-login-name) ">n% Author: " (user-full-name) " <" (progn user-mail-address) ">nn" _ "nn%% Local Variables:n%% tex-main-file: "" str ""n%% End:n")))))
Cordialement, -- Matthias
drkm <usenet.fcaemacs@fgeorges.org> écrivait :
(...) Je ne connais (n'utilise) ni auto-insert ni Template (cité par
Benoît). Une autre méthode pourrait être,
AMHA, il ne s'agit pas d'une « autre méthode » : auto-insert fait ça !
Chez moi j'ai ça :
;; Charge le paquettage d'insertion automatique de squelettes ou de
;; fichiers à la creation d'un fichier puis précise où trouver les
;; modèles à insérer.
(load-library "autoinsert")
(setq auto-insert-directory (expand-file-name "~/.insert/"))
(add-hook 'find-file-hooks 'auto-insert)
;; Définition de l'insertion automatique lors de la création d'un
;; fichier auquel est associé le mode `latex-mode'
(add-to-list 'auto-insert-alist '(latex-mode . alt-auto-insert-latex))
(defun alt-auto-insert-latex ()
"Insert a template for a latex file depending on the document class."
(interactive)
(let* ((class
(completing-read
"Class of the document (default value is `none'): "
'(("article" 1) ("report" 2) ("book" 3)
("letter" 4) ("slides" 5) ("exam" 6)
("none" 7)) nil t nil nil "none"))
(name (concat auto-insert-directory class ".tex")))
(if (not (equal class "none"))
(cond ((file-readable-p name) (insert-file-contents name))
(t (message "No template file found for this document class")))
(skeleton-insert
'((read-file-name "Main file: " )
"% Time-stamp: <" (current-time-string)
" " (user-login-name) ">n% Author: "
(user-full-name) " <" (progn user-mail-address) ">nn"
_ "nn%% Local Variables:n%% tex-main-file: ""
str ""n%% End:n")))))
(...) Je ne connais (n'utilise) ni auto-insert ni Template (cité par Benoît). Une autre méthode pourrait être,
AMHA, il ne s'agit pas d'une « autre méthode » : auto-insert fait ça !
Chez moi j'ai ça :
;; Charge le paquettage d'insertion automatique de squelettes ou de ;; fichiers à la creation d'un fichier puis précise où trouver les ;; modèles à insérer. (load-library "autoinsert") (setq auto-insert-directory (expand-file-name "~/.insert/")) (add-hook 'find-file-hooks 'auto-insert)
;; Définition de l'insertion automatique lors de la création d'un ;; fichier auquel est associé le mode `latex-mode' (add-to-list 'auto-insert-alist '(latex-mode . alt-auto-insert-latex))
(defun alt-auto-insert-latex () "Insert a template for a latex file depending on the document class." (interactive) (let* ((class (completing-read "Class of the document (default value is `none'): " '(("article" 1) ("report" 2) ("book" 3) ("letter" 4) ("slides" 5) ("exam" 6) ("none" 7)) nil t nil nil "none")) (name (concat auto-insert-directory class ".tex"))) (if (not (equal class "none")) (cond ((file-readable-p name) (insert-file-contents name)) (t (message "No template file found for this document class"))) (skeleton-insert '((read-file-name "Main file: " ) "% Time-stamp: <" (current-time-string) " " (user-login-name) ">n% Author: " (user-full-name) " <" (progn user-mail-address) ">nn" _ "nn%% Local Variables:n%% tex-main-file: "" str ""n%% End:n")))))
Cordialement, -- Matthias
drkm
Matthias Meulien writes:
drkm écrivait :
(...) Je ne connais (n'utilise) ni auto-insert ni Template (cité par Benoît). Une autre méthode pourrait être,
AMHA, il ne s'agit pas d'une « autre méthode » : auto-insert fait ça !
Chez moi j'ai ça :
D'après ce que je vois de ton code (et je répète que je ne connais pas Auto Insert, et peux donc dire des conneries), Auto Insert lui-même ne connait pas les styles multiples. En fait, tu à une fonction tout à fait similaire à ce que j'ai proposé, fonction que tu as insérée dans Auto Insert, plutôt que de la binder à une séquence.
C'est intéressant, cette possibilité. Mais je préfère tout de même la manière que j'ai proposée, au niveau de l'alist (plutôt que de coder les infos en dur dans l'appel à `completing-read'). Ce qui permet de plus de s'affranchir de la contrainte de l'unique répertoire central.
Donc si j'ai bien compris, ceci s'insère dans Auto Insert :
(defvar bi:latex-templates-alist '(("rapport" . "~/LaTeX/templates/rapport.tex") ("article" . "~/LaTeX/templates/article.tex") ("styleN" . "/usr/local/share/LaTeX/...")) "Styles de fichiers LaTeX. La clef est le nom du style, la valeur le nom du fichier associé, contenant un template à insérer dans un nouveau document de ce style.")
(defun bi:insert-latex-template () "Insère un template de document LaTeX, correspondant au `STYLE' prompté. Cfr. `bi:latex-templates-alist'." (let ((style (completing-read "Style: " bi:latex-templates-alist nil t))) (insert-file-contents (assoc style bi:latex-templates-alist))))
Le problème que je vois, c'est que d'après ton code, Auto Insert se sert de `find-file-hook'. Et si j'ai bonne mémoire, le nom du fichier n'est pas encore disponible à ce moment. Ce qui peut être un frein à l'ajout d'une sorte de template, où l'on résoudrait des tags comme le nom de l'auteur, la date ou le nom de fichier (comme le fait Template, je crois).
Enfin, il faudrait que j'y jette un oeil, parce que là, je dis peut-être des bêtises.
--drkm
Matthias Meulien <cimosque@free.fr> writes:
drkm <usenet.fcaemacs@fgeorges.org> écrivait :
(...) Je ne connais (n'utilise) ni auto-insert ni Template (cité par
Benoît). Une autre méthode pourrait être,
AMHA, il ne s'agit pas d'une « autre méthode » : auto-insert fait ça !
Chez moi j'ai ça :
D'après ce que je vois de ton code (et je répète que je ne connais
pas Auto Insert, et peux donc dire des conneries), Auto Insert
lui-même ne connait pas les styles multiples. En fait, tu à une
fonction tout à fait similaire à ce que j'ai proposé, fonction que tu
as insérée dans Auto Insert, plutôt que de la binder à une séquence.
C'est intéressant, cette possibilité. Mais je préfère tout de même
la manière que j'ai proposée, au niveau de l'alist (plutôt que de
coder les infos en dur dans l'appel à `completing-read'). Ce qui
permet de plus de s'affranchir de la contrainte de l'unique répertoire
central.
Donc si j'ai bien compris, ceci s'insère dans Auto Insert :
(defvar bi:latex-templates-alist
'(("rapport" . "~/LaTeX/templates/rapport.tex")
("article" . "~/LaTeX/templates/article.tex")
("styleN" . "/usr/local/share/LaTeX/..."))
"Styles de fichiers LaTeX.
La clef est le nom du style, la valeur le nom du fichier associé,
contenant un template à insérer dans un nouveau document de ce
style.")
(defun bi:insert-latex-template ()
"Insère un template de document LaTeX, correspondant au `STYLE' prompté.
Cfr. `bi:latex-templates-alist'."
(let ((style (completing-read "Style: " bi:latex-templates-alist nil t)))
(insert-file-contents (assoc style bi:latex-templates-alist))))
Le problème que je vois, c'est que d'après ton code, Auto Insert se
sert de `find-file-hook'. Et si j'ai bonne mémoire, le nom du fichier
n'est pas encore disponible à ce moment. Ce qui peut être un frein à
l'ajout d'une sorte de template, où l'on résoudrait des tags comme le
nom de l'auteur, la date ou le nom de fichier (comme le fait Template,
je crois).
Enfin, il faudrait que j'y jette un oeil, parce que là, je dis
peut-être des bêtises.
(...) Je ne connais (n'utilise) ni auto-insert ni Template (cité par Benoît). Une autre méthode pourrait être,
AMHA, il ne s'agit pas d'une « autre méthode » : auto-insert fait ça !
Chez moi j'ai ça :
D'après ce que je vois de ton code (et je répète que je ne connais pas Auto Insert, et peux donc dire des conneries), Auto Insert lui-même ne connait pas les styles multiples. En fait, tu à une fonction tout à fait similaire à ce que j'ai proposé, fonction que tu as insérée dans Auto Insert, plutôt que de la binder à une séquence.
C'est intéressant, cette possibilité. Mais je préfère tout de même la manière que j'ai proposée, au niveau de l'alist (plutôt que de coder les infos en dur dans l'appel à `completing-read'). Ce qui permet de plus de s'affranchir de la contrainte de l'unique répertoire central.
Donc si j'ai bien compris, ceci s'insère dans Auto Insert :
(defvar bi:latex-templates-alist '(("rapport" . "~/LaTeX/templates/rapport.tex") ("article" . "~/LaTeX/templates/article.tex") ("styleN" . "/usr/local/share/LaTeX/...")) "Styles de fichiers LaTeX. La clef est le nom du style, la valeur le nom du fichier associé, contenant un template à insérer dans un nouveau document de ce style.")
(defun bi:insert-latex-template () "Insère un template de document LaTeX, correspondant au `STYLE' prompté. Cfr. `bi:latex-templates-alist'." (let ((style (completing-read "Style: " bi:latex-templates-alist nil t))) (insert-file-contents (assoc style bi:latex-templates-alist))))
Le problème que je vois, c'est que d'après ton code, Auto Insert se sert de `find-file-hook'. Et si j'ai bonne mémoire, le nom du fichier n'est pas encore disponible à ce moment. Ce qui peut être un frein à l'ajout d'une sorte de template, où l'on résoudrait des tags comme le nom de l'auteur, la date ou le nom de fichier (comme le fait Template, je crois).
Enfin, il faudrait que j'y jette un oeil, parce que là, je dis peut-être des bêtises.
--drkm
Matthieu Moy
drkm writes:
Le problème que je vois, c'est que d'après ton code, Auto Insert se sert de `find-file-hook'. Et si j'ai bonne mémoire, le nom du fichier n'est pas encore disponible à ce moment.
Mauvaise mémoire ;-) (changer de mémoire ?)
Ce qui peut être un frein à l'ajout d'une sorte de template, où l'on résoudrait des tags comme le nom de l'auteur, la date ou le nom de fichier (comme le fait Template, je crois).
Je fais ça avec auto-insert, donc, ça doit être possible.
En fait, le truc a droite dans `auto-insert-alist', c'est un skeleton, qui peut contenir de code lisp quelconque.
L'avantage par rapport a Template, c'est que c'est un truc qui fait partie d'Emacs, rien d'autre a installer.
-- Matthieu
drkm <usenet.fcaemacs@fgeorges.org> writes:
Le problème que je vois, c'est que d'après ton code, Auto Insert se
sert de `find-file-hook'. Et si j'ai bonne mémoire, le nom du fichier
n'est pas encore disponible à ce moment.
Mauvaise mémoire ;-) (changer de mémoire ?)
Ce qui peut être un frein à l'ajout d'une sorte de template, où l'on
résoudrait des tags comme le nom de l'auteur, la date ou le nom de
fichier (comme le fait Template, je crois).
Je fais ça avec auto-insert, donc, ça doit être possible.
En fait, le truc a droite dans `auto-insert-alist', c'est un skeleton,
qui peut contenir de code lisp quelconque.
L'avantage par rapport a Template, c'est que c'est un truc qui fait
partie d'Emacs, rien d'autre a installer.
Le problème que je vois, c'est que d'après ton code, Auto Insert se sert de `find-file-hook'. Et si j'ai bonne mémoire, le nom du fichier n'est pas encore disponible à ce moment.
Mauvaise mémoire ;-) (changer de mémoire ?)
Ce qui peut être un frein à l'ajout d'une sorte de template, où l'on résoudrait des tags comme le nom de l'auteur, la date ou le nom de fichier (comme le fait Template, je crois).
Je fais ça avec auto-insert, donc, ça doit être possible.
En fait, le truc a droite dans `auto-insert-alist', c'est un skeleton, qui peut contenir de code lisp quelconque.
L'avantage par rapport a Template, c'est que c'est un truc qui fait partie d'Emacs, rien d'autre a installer.
-- Matthieu
Matthias
drkm écrivait :
(...) Ce qui permet de plus de s'affranchir de la contrainte de l'unique répertoire central.
Mais cette contrainte n'existe pas avec `auto-insert' ! La doc de la variable `auto-insert-alist' dit explicitement que le nom de fichier a insérer peut ne pas être relatif au répertoire désigné dans `auto-insert-directory' :
ACTION may be a skeleton to insert (see `skeleton-insert'), an absolute file-name or one relative to `auto-insert-directory' or a function to call.
Donc si j'ai bien compris, ceci s'insère dans Auto Insert :
Oui, c'est cela.
(...) Le problème que je vois, c'est que d'après ton code, Auto Insert se sert de `find-file-hook'. Et si j'ai bonne mémoire, le nom du fichier n'est pas encore disponible à ce moment.
Puisque l'insertion doit être liée au mode du tampon et que celui-ci est déterminé à partir du nom de fichier (via `auto-mode-alist'), ce nom est connu au moment de l'appel à `find-file-hook', non ? -- Matthias
drkm <usenet.fcaemacs@fgeorges.org> écrivait :
(...) Ce qui permet de plus de s'affranchir de la contrainte de
l'unique répertoire central.
Mais cette contrainte n'existe pas avec `auto-insert' ! La doc de la
variable `auto-insert-alist' dit explicitement que le nom de fichier a
insérer peut ne pas être relatif au répertoire désigné dans
`auto-insert-directory' :
ACTION may be a skeleton to insert (see `skeleton-insert'), an
absolute file-name or one relative to `auto-insert-directory' or a
function to call.
Donc si j'ai bien compris, ceci s'insère dans Auto Insert :
Oui, c'est cela.
(...) Le problème que je vois, c'est que d'après ton code, Auto
Insert se sert de `find-file-hook'. Et si j'ai bonne mémoire, le nom
du fichier n'est pas encore disponible à ce moment.
Puisque l'insertion doit être liée au mode du tampon et que celui-ci
est déterminé à partir du nom de fichier (via `auto-mode-alist'), ce
nom est connu au moment de l'appel à `find-file-hook', non ?
--
Matthias
(...) Ce qui permet de plus de s'affranchir de la contrainte de l'unique répertoire central.
Mais cette contrainte n'existe pas avec `auto-insert' ! La doc de la variable `auto-insert-alist' dit explicitement que le nom de fichier a insérer peut ne pas être relatif au répertoire désigné dans `auto-insert-directory' :
ACTION may be a skeleton to insert (see `skeleton-insert'), an absolute file-name or one relative to `auto-insert-directory' or a function to call.
Donc si j'ai bien compris, ceci s'insère dans Auto Insert :
Oui, c'est cela.
(...) Le problème que je vois, c'est que d'après ton code, Auto Insert se sert de `find-file-hook'. Et si j'ai bonne mémoire, le nom du fichier n'est pas encore disponible à ce moment.
Puisque l'insertion doit être liée au mode du tampon et que celui-ci est déterminé à partir du nom de fichier (via `auto-mode-alist'), ce nom est connu au moment de l'appel à `find-file-hook', non ? -- Matthias
drkm
Matthieu Moy writes:
drkm writes:
Le problème que je vois, c'est que d'après ton code, Auto Insert se sert de `find-file-hook'. Et si j'ai bonne mémoire, le nom du fichier n'est pas encore disponible à ce moment.
Mauvaise mémoire ;-)
En effet, j'aurais du tester ceci avant de répondre :
Mais ça n'est pas mémoire qui est en cause. Ça veut plutôt dire que je peux supprimer un hack dégueulasse que j'ai quelque part ;-)
(changer de mémoire ?)
Si seulement c'était possible.
Ce qui peut être un frein à l'ajout d'une sorte de template, où l'on résoudrait des tags comme le nom de l'auteur, la date ou le nom de fichier (comme le fait Template, je crois).
Je fais ça avec auto-insert, donc, ça doit être possible.
Oui, je n'ai pas testé avant de poster. Mea cupla.
En fait, le truc a droite dans `auto-insert-alist', c'est un skeleton, qui peut contenir de code lisp quelconque.
Mmmh. Il faut que je m'y intéresse un peu. J'avais regardé du côté de Template, mais ça ne m'a pas trop plu pour ce que je voulais faire. J'ai alors codé quelque chose qui s'apparente apparemment à un Auto Insert simplifié (mais contenant un truc dégueux, dont je parle plus haut).
Cool, je vais pouvoir supprimer mon code et utiliser Auto Insert :-)
L'avantage par rapport a Template, c'est que c'est un truc qui fait partie d'Emacs, rien d'autre a installer.
Le problème que je vois, c'est que d'après ton code, Auto Insert se
sert de `find-file-hook'. Et si j'ai bonne mémoire, le nom du fichier
n'est pas encore disponible à ce moment.
Mauvaise mémoire ;-)
En effet, j'aurais du tester ceci avant de répondre :
Mais ça n'est pas mémoire qui est en cause. Ça veut plutôt dire que
je peux supprimer un hack dégueulasse que j'ai quelque part ;-)
(changer de mémoire ?)
Si seulement c'était possible.
Ce qui peut être un frein à l'ajout d'une sorte de template, où l'on
résoudrait des tags comme le nom de l'auteur, la date ou le nom de
fichier (comme le fait Template, je crois).
Je fais ça avec auto-insert, donc, ça doit être possible.
Oui, je n'ai pas testé avant de poster. Mea cupla.
En fait, le truc a droite dans `auto-insert-alist', c'est un skeleton,
qui peut contenir de code lisp quelconque.
Mmmh. Il faut que je m'y intéresse un peu. J'avais regardé du côté
de Template, mais ça ne m'a pas trop plu pour ce que je voulais faire.
J'ai alors codé quelque chose qui s'apparente apparemment à un Auto
Insert simplifié (mais contenant un truc dégueux, dont je parle plus
haut).
Cool, je vais pouvoir supprimer mon code et utiliser Auto Insert :-)
L'avantage par rapport a Template, c'est que c'est un truc qui fait
partie d'Emacs, rien d'autre a installer.
Le problème que je vois, c'est que d'après ton code, Auto Insert se sert de `find-file-hook'. Et si j'ai bonne mémoire, le nom du fichier n'est pas encore disponible à ce moment.
Mauvaise mémoire ;-)
En effet, j'aurais du tester ceci avant de répondre :
Mais ça n'est pas mémoire qui est en cause. Ça veut plutôt dire que je peux supprimer un hack dégueulasse que j'ai quelque part ;-)
(changer de mémoire ?)
Si seulement c'était possible.
Ce qui peut être un frein à l'ajout d'une sorte de template, où l'on résoudrait des tags comme le nom de l'auteur, la date ou le nom de fichier (comme le fait Template, je crois).
Je fais ça avec auto-insert, donc, ça doit être possible.
Oui, je n'ai pas testé avant de poster. Mea cupla.
En fait, le truc a droite dans `auto-insert-alist', c'est un skeleton, qui peut contenir de code lisp quelconque.
Mmmh. Il faut que je m'y intéresse un peu. J'avais regardé du côté de Template, mais ça ne m'a pas trop plu pour ce que je voulais faire. J'ai alors codé quelque chose qui s'apparente apparemment à un Auto Insert simplifié (mais contenant un truc dégueux, dont je parle plus haut).
Cool, je vais pouvoir supprimer mon code et utiliser Auto Insert :-)
L'avantage par rapport a Template, c'est que c'est un truc qui fait partie d'Emacs, rien d'autre a installer.
En effet.
--drkm
drkm
Matthias writes:
drkm écrivait :
(...) Ce qui permet de plus de s'affranchir de la contrainte de l'unique répertoire central.
Mais cette contrainte n'existe pas avec `auto-insert' !
Je ne parle pas d'Auto Insert. Mais de la fonction que tu as postée. Les valeurs permises sont (i) directement codées dans completing-read et (ii) obligatoirement relative à un répertoire central. Je trouve que ce n'est pas facilement adaptable.
Alors qu'en sortant l'alist contenue dans l'appel à completing-read, et en en faisant une variable, ça permet de personaliser plus facilement. Par exemple si tu es amené à travailler sur une machine autre que la tienne. Ou si tu veux partager ta config avec un autre utilisateur.
[...]
Puisque l'insertion doit être liée au mode du tampon et que celui-ci est déterminé à partir du nom de fichier (via `auto-mode-alist'), ce nom est connu au moment de l'appel à `find-file-hook', non ?
En effet, je n'avais pas testé avant de poster, je me suis juste servi de ma pauvre mémoire (cfr. réponse à Matthieu).
--drkm
Matthias <cimosque@free.fr> writes:
drkm <usenet.fcaemacs@fgeorges.org> écrivait :
(...) Ce qui permet de plus de s'affranchir de la contrainte de
l'unique répertoire central.
Mais cette contrainte n'existe pas avec `auto-insert' !
Je ne parle pas d'Auto Insert. Mais de la fonction que tu as
postée. Les valeurs permises sont (i) directement codées dans
completing-read et (ii) obligatoirement relative à un répertoire
central. Je trouve que ce n'est pas facilement adaptable.
Alors qu'en sortant l'alist contenue dans l'appel à completing-read,
et en en faisant une variable, ça permet de personaliser plus
facilement. Par exemple si tu es amené à travailler sur une machine
autre que la tienne. Ou si tu veux partager ta config avec un autre
utilisateur.
[...]
Puisque l'insertion doit être liée au mode du tampon et que celui-ci
est déterminé à partir du nom de fichier (via `auto-mode-alist'), ce
nom est connu au moment de l'appel à `find-file-hook', non ?
En effet, je n'avais pas testé avant de poster, je me suis juste
servi de ma pauvre mémoire (cfr. réponse à Matthieu).
(...) Ce qui permet de plus de s'affranchir de la contrainte de l'unique répertoire central.
Mais cette contrainte n'existe pas avec `auto-insert' !
Je ne parle pas d'Auto Insert. Mais de la fonction que tu as postée. Les valeurs permises sont (i) directement codées dans completing-read et (ii) obligatoirement relative à un répertoire central. Je trouve que ce n'est pas facilement adaptable.
Alors qu'en sortant l'alist contenue dans l'appel à completing-read, et en en faisant une variable, ça permet de personaliser plus facilement. Par exemple si tu es amené à travailler sur une machine autre que la tienne. Ou si tu veux partager ta config avec un autre utilisateur.
[...]
Puisque l'insertion doit être liée au mode du tampon et que celui-ci est déterminé à partir du nom de fichier (via `auto-mode-alist'), ce nom est connu au moment de l'appel à `find-file-hook', non ?
En effet, je n'avais pas testé avant de poster, je me suis juste servi de ma pauvre mémoire (cfr. réponse à Matthieu).