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

Écriture d'une fonction lisp dans ~/.emacs

28 réponses
Avatar
Jean-Claude Marques
Bonjour à tous.

Néophyte complet en Emacs-Lisp, j'ai souvent à écrire \og{} ... \fg{}
(LaTeX) et j'ai tenté d'écrire une fonction Lisp pour qu'Emacs le fasse
à ma place. J'ai inséré dans le ~/.emacs le code ci-dessous :

(defun tex-insert-og-fg nil
(insert "\\og{}" )
(save-excursion
(insert "\\fg{}"))
)

(define-key LaTeX-mode-map [C-f6] 'tex-insert-og-fg)

Lors de C-f6, j'ai le message :
Wrong type argument: commandp, tex-insert-og-fg


Par M-x tex-TAB, la fonction tex-insert-og-fg n'apparaît pas dans la
liste (alors qu'une autre commençant par la même chaîne de caractères
apparaît).

Il y a donc un bug, mais je ne le vois pas.
Si quelqu'un a une idée (et je n'en doute pas !)
En attendant vos réponses, je vous souhaite à tous une bonne et heureuse
nouvelle année !

JC

8 réponses

1 2 3
Avatar
Luc.Habert.00__arjf
"Pascal J. Bourguignon" :

Donc une commande ou une fonction que l'on veut fournir comme API
publique, ou interface utilisateur DOIT ÊTRE DOCUMENTÉE!



Blah...
Avatar
Ralf Angeli
* Denis Bitouzé (2010-12-31) writes:

Le vendredi 31/12/10 à 12h18,
Ralf Angeli a écrit :

... ou télécharger la version développement d'AUCTeX.



Pourrais-tu m'indiquer (une page expliquant) comment procéder ?



Dans les pages du projet sur Savannah il y a quelques instructions :

<URL:http://savannah.gnu.org/cvs/?group=auctex>

--
Ralf
Avatar
Ralf Angeli
* Lucas Levrel (2010-12-31) writes:

De ce que je comprends, c'est que LaTeX-mode-map n'existe qu'une fois
auctex chargé, ce qui n'est pas le cas quand tu ouvres emacs (à moins que
tu le forces, mais c'est un peu bourrin si tu ne fais pas que du LaTeX
avec emacs).

Donc moi j'ai ça :

(defun my-LaTeX-hook ()
...des tas de trucs dont par exemple...
(define-key LaTeX-mode-map "{" 'skeleton-pair-insert-maybe)
)

(add-hook 'LaTeX-mode-hook 'my-LaTeX-hook)

du coup les trucs dans my-LaTeX-hook ne sont chargés qu'au lancement du
LaTeX-mode.



Mais ils sont executé chaque fois le mode est lancé. Il est mieux
d'utiliser `(eval-after-load "latex" ...)' pour les cas qui n'a pas
besoin de ça.

--
Ralf
Avatar
Denis Bitouzé
Le vendredi 31/12/10 à 17h17,
Ralf Angeli a écrit :

Dans les pages du projet sur Savannah il y a quelques instructions :

<URL:http://savannah.gnu.org/cvs/?group=auctex>



Merci mais, par exemple :

$ cvs -z3 -d:pserver::/sources/auctex co fren ch.el cvs
server: cannot find module `french.el' - ignored
cvs [checkout aborted]: cannot expand modules

Et comment faire pour récupérer et installer /toute/ la version CVS
d'AucTeX ?
--
Denis
Avatar
Damien Wyart
* Denis Bitouzé in fr.comp.applications.emacs:
$ cvs -z3 -d:pserver::/sources/auctex co french.el cvs
server: cannot find module `french.el' - ignored
cvs [checkout aborted]: cannot expand modules

Et comment faire pour récupérer et installer /toute/ la version CVS
d'AucTeX ?



cvs -z3 -d:pserver::/sources/auctex co auctex

puis ./autogen.sh puis ./configure -help et ./configure avec les bonnes
options (chemins, etc.) et enfin make && make install.

--
DW
Avatar
Denis Bitouzé
Le vendredi 31/12/10 à 17h38,
Damien Wyart a écrit :

cvs -z3 -d:pserver::/sources/auctex co
auctex

puis ./autogen.sh puis ./configure -help et ./configure avec les
bonnes options (chemins, etc.) et enfin make && make install.



Oui, je m'en suis aperçu entre temps. Et je dois dire que ça fonctionne
parfaitement, c'est-à-dire que, même avec un fichier comme :

documentclass[french]{article}
usepackage{babel}
begin{document}

end{document}

la touche « " » insère, selon le cas, « og » ou « fg{} » c omme on
s'y attend.

Bravo et merci !
--
Denis
Avatar
Pascal J. Bourguignon
(Luc Habert) writes:

"Pascal J. Bourguignon" :

Donc une commande ou une fonction que l'on veut fournir comme API
publique, ou interface utilisateur DOIT ÊTRE DOCUMENTÉE!



Blah...



Du code non documenté, du code non utilisé et le chômage. Va dire
"Blah" au Pôle Emploi!

--
__Pascal Bourguignon__ http://www.informatimago.com/
A bad day in () is better than a good day in {}.
Avatar
Lucas Levrel
Le 31 décembre 2010, Ralf Angeli a écrit :

du coup les trucs dans my-LaTeX-hook ne sont chargés qu'au lancement du
LaTeX-mode.



Mais ils sont executé chaque fois le mode est lancé. Il est mieux
d'utiliser `(eval-after-load "latex" ...)' pour les cas qui n'a pas
besoin de ça.



Voyons si je comprends bien ta remarque. Actuellement j'ai :
-:-:-
(defun my-LaTeX-hook ()
(LaTeX-add-environments ...)
(setq skeleton-pair-alist ...)
(define-key LaTeX-mode-map ...)
(defun TeX-chose ...)
(setq TeX-command-list ...)
)
(add-hook 'LaTeX-mode-hook 'my-LaTeX-hook)
-:-:-

Il faut que je mette plutôt :
-:-:-
(defun my-LaTeX-hook ()
(setq skeleton-pair-alist ...)
)
(add-hook 'LaTeX-mode-hook 'my-LaTeX-hook)
(eval-after-load "latex"
(LaTeX-add-environments ...)
(define-key LaTeX-mode-map ...)
(defun TeX-chose ...)
(setq TeX-command-list ...)
)
-:-:-

Ai-je bon ?

--
LL
1 2 3