Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fonction d'insertion d'entête

3 réponses
Avatar
caribou
Bonjour

Pour mes "débuts" dans la programmation emacs-lisp, je voulais faire une
fonction qui me semblait simple mais qui ne l'est peut-être pas autant que
je le pensais. Le pseudo-code de cette fonction pourrait être


(defun inserer-header()
sauver la position actuelle du buffer
va au début du buffer (ligne 1, colonne 1)
switch (extension du fichier dans le buffer courant)
case "tex" : insérer "/path/to/file/monheader.tex"
case "java" : insérer "/path/to/file/monheader.java"
case "asy" : insérer "/path/to/file/monheader.asy"
default : "afficher une erreur dans le minibuffer"
end switch
restaurer la position du buffer
)

(global-set-key "\C-ch" 'inserer-header')



J'ai bien entendu essayé le module "autoinsert.el", mais il ne fait pas ce
que je veux (ou plutôt je ne suis pas arrivé à le faire fonctionner comme
je voulais.

Si vous pouviez me donner un petit coup de main pour réaliser cette
fonction, ce serait sympa...

D'avance merci de votre aide


--- news://freenews.netfront.net/ - complaints: news@netfront.net ---

3 réponses

Avatar
pjb
"" writes:

Bonjour

Pour mes "débuts" dans la programmation emacs-lisp, je voulais faire une
fonction qui me semblait simple mais qui ne l'est peut-être pas autant que
je le pensais. Le pseudo-code de cette fonction pourrait être


(defun inserer-header()
sauver la position actuelle du buffer
va au début du buffer (ligne 1, colonne 1)
switch (extension du fichier dans le buffer courant)
case "tex" : insérer "/path/to/file/monheader.tex"
case "java" : insérer "/path/to/file/monheader.java"
case "asy" : insérer "/path/to/file/monheader.asy"
default : "afficher une erreur dans le minibuffer"
end switch
restaurer la position du buffer
)

(global-set-key "C-ch" 'inserer-header')



(defvar *header-file-directory* "/path/to/header/directory")

(defun insert-header ()
(interactive) ; pour pouvoir taper M-x insert-header RET
(save-excursion
(goto-char (point-min))
(let ((extension (file-name-extension (buffer-file-name (current-buffer))))
(header-file (concat *header-file-directory* "/header." extension)))
(when (file-exists-p header-file)
(insert-file-content header-file)))))

(global-set-key (kbd "C-c h") 'inserer-header)


Le principal, c'est de ne pas mélanger le français et l'anglais dans
les noms des symboles, c'est HORRIBLE!


--
__Pascal Bourguignon__ http://www.informatimago.com/
Avatar
caribou
Pascal J. Bourguignon wrote:

[...]

(defvar *header-file-directory* "/path/to/header/directory")

(defun insert-header ()
(interactive) ; pour pouvoir taper M-x insert-header RET
(save-excursion
(goto-char (point-min))
(let ((extension (file-name-extension (buffer-file-name
(current-buffer))))
(header-file (concat *header-file-directory* "/header."
extension)))
(when (file-exists-p header-file)
(insert-file-content header-file)))))

(global-set-key (kbd "C-c h") 'inserer-header)


Le principal, c'est de ne pas mélanger le français et l'anglais dans
les noms des symboles, c'est HORRIBLE!






Merci pour ton aide. Après un effort soutenu j'étais parvenu à une solution
un peu différente de la tienne (plus proche de mon pseudo-code). Je trouve
l'idée de la concaténation de chemin, nom et extension assez séduisante.

Merci de ton aide



--- news://freenews.netfront.net/ - complaints: ---
Avatar
Blue.Dian
Bonjour,

Suite à un autre post (sur template), je réagis un peu tard.
Pour la gestion des en-têtes (suivant le type de fichier), regarde
template.el (http://emacs-template.sourceforge.net/)
C'est super simple à configurer et tu devrais trouver ton bonheur.

BlueDian