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

macro

16 réponses
Avatar
Stéphane Dutailly
Bonjour,

Je cherche à faire une petite macro permettant d'activer/désactiver un
mode mineur (orgtbl-mode). Dans ce but, j'ai essayé ceci:

(defun activer-orgtbl-mode ()
(interactive)
(require 'orgtbl))

mais cela ne fonctionne pas (j'obtiens: Cannot open load file: orgtbl,
alors que si je tape M-x orgtbl-mode, cela fonctionne très bien).
Voyez-vous quoi changer ou ajouter pour que cela fonctionne?

Merci d'avance,

Stéphane Dutailly


PS: mon objectif est ensuite d'affecter une touche à cette nouvelle
fonction de façon activer/désactiver ce mode en appuyant sur cette touche.

10 réponses

1 2
Avatar
Cyprien Nicolas
Salut,

Le 10/09/2013 15:46, Stéphane Dutailly écrivit :
Bonjour,

Je cherche à faire une petite macro permettant d'activer/désactiver un
mode mineur (orgtbl-mode). Dans ce but, j'ai essayé ceci:

(defun activer-orgtbl-mode ()
(interactive)
(require 'orgtbl))

mais cela ne fonctionne pas (j'obtiens: Cannot open load file: orgtbl,
alors que si je tape M-x orgtbl-mode, cela fonctionne très bien).
Voyez-vous quoi changer ou ajouter pour que cela fonctionne?



Ben require c'est pas la bonne idée.

Vu tu tapes M-x orgtbl-mode, tu dois appeler une fonction (orgtbl-mode)
qui activera ou désactivera selon s'il l'est déjà ou pas.

Tu peux tester avec M-: (orgtbl-mode) RET

PS: mon objectif est ensuite d'affecter une touche à cette nouvelle
fonction de façon activer/désactiver ce mode en appuyant sur cette touche.



Un coup de global-set-key avec la touche que tu veux et la fonction que
tu as défini juste au-dessus suffira.

--
« Ceci n'est pas une signature. » — René Magritte (Apocryphe)
Avatar
Stéphane Dutailly
Le 10/09/2013 16:11, Cyprien Nicolas a écrit :
Salut,

Le 10/09/2013 15:46, Stéphane Dutailly écrivit :
Bonjour,

Je cherche à faire une petite macro permettant d'activer/désactiver un
mode mineur (orgtbl-mode). Dans ce but, j'ai essayé ceci:

(defun activer-orgtbl-mode ()
(interactive)
(require 'orgtbl))

mais cela ne fonctionne pas (j'obtiens: Cannot open load file: orgtbl,
alors que si je tape M-x orgtbl-mode, cela fonctionne très bien).
Voyez-vous quoi changer ou ajouter pour que cela fonctionne?



Ben require c'est pas la bonne idée.

Vu tu tapes M-x orgtbl-mode, tu dois appeler une fonction (orgtbl-mode)
qui activera ou désactivera selon s'il l'est déjà ou pas.

Tu peux tester avec M-: (orgtbl-mode) RET

PS: mon objectif est ensuite d'affecter une touche à cette nouvelle
fonction de façon activer/désactiver ce mode en appuyant sur cette touche.



Un coup de global-set-key avec la touche que tu veux et la fonction que
tu as défini juste au-dessus suffira.




arf... j'obtiens Symbol's function definition is void: M-:
Avatar
Pascal J. Bourguignon
Stéphane Dutailly writes:

Le 10/09/2013 16:11, Cyprien Nicolas a écrit :
Salut,

Le 10/09/2013 15:46, Stéphane Dutailly écrivit :
Bonjour,

Je cherche à faire une petite macro permettant d'activer/désactiver un
mode mineur (orgtbl-mode). Dans ce but, j'ai essayé ceci:

(defun activer-orgtbl-mode ()
(interactive)
(require 'orgtbl))

mais cela ne fonctionne pas (j'obtiens: Cannot open load file: orgtbl,
alors que si je tape M-x orgtbl-mode, cela fonctionne très bien).
Voyez-vous quoi changer ou ajouter pour que cela fonctionne?



Ben require c'est pas la bonne idée.

Vu tu tapes M-x orgtbl-mode, tu dois appeler une fonction (orgtbl-mode)
qui activera ou désactivera selon s'il l'est déjà ou pas.

Tu peux tester avec M-: (orgtbl-mode) RET

PS: mon objectif est ensuite d'affecter une touche à cette nouvelle
fonction de façon activer/désactiver ce mode en appuyant sur cette touche.



Un coup de global-set-key avec la touche que tu veux et la fonction que
tu as défini juste au-dessus suffira.




arf... j'obtiens Symbol's function definition is void: M-:



Peut être que maintenant serait le bon moment pour étudier le tutoriel ?
Une bonne petite demi-heure. Lance simplement emacs, et lis le message
qu'il affiche au de l'ignorer comme d'habitude : il indique comment
activer le tutoriel.

Il est possible que tu doives le lancer avec l'option -q, si tu as mis
dans ~/.emacs ce qu'il faut pour inhiber ce message initial:

emacs -q



--
__Pascal Bourguignon__
http://www.informatimago.com/
Avatar
Stéphane Dutailly
Le 10/09/2013 22:08, Pascal J. Bourguignon a écrit :
Stéphane Dutailly writes:

Le 10/09/2013 16:11, Cyprien Nicolas a écrit :
Salut,

Le 10/09/2013 15:46, Stéphane Dutailly écrivit :
Bonjour,

Je cherche à faire une petite macro permettant d'activer/désactiver un
mode mineur (orgtbl-mode). Dans ce but, j'ai essayé ceci:

(defun activer-orgtbl-mode ()
(interactive)
(require 'orgtbl))

mais cela ne fonctionne pas (j'obtiens: Cannot open load file: orgtbl,
alors que si je tape M-x orgtbl-mode, cela fonctionne très bien).
Voyez-vous quoi changer ou ajouter pour que cela fonctionne?



Ben require c'est pas la bonne idée.

Vu tu tapes M-x orgtbl-mode, tu dois appeler une fonction (orgtbl-mode)
qui activera ou désactivera selon s'il l'est déjà ou pas.

Tu peux tester avec M-: (orgtbl-mode) RET

PS: mon objectif est ensuite d'affecter une touche à cette nouvelle
fonction de façon activer/désactiver ce mode en appuyant sur cette touche.



Un coup de global-set-key avec la touche que tu veux et la fonction que
tu as défini juste au-dessus suffira.




arf... j'obtiens Symbol's function definition is void: M-:



Peut être que maintenant serait le bon moment pour étudier le tutoriel ?
Une bonne petite demi-heure. Lance simplement emacs, et lis le message
qu'il affiche au de l'ignorer comme d'habitude : il indique comment
activer le tutoriel.

Il est possible que tu doives le lancer avec l'option -q, si tu as mis
dans ~/.emacs ce qu'il faut pour inhiber ce message initial:

emacs -q




Bonjour,

Alors j'ai relu le tutoriel mais je ne vois pas trop le rapport, à part
peut-être ceci: suite à la suggestion de Cyprien, j'ai essayé ceci:
(defun activer-orgtbl-mode ()
(interactive)
(M-: (orgtbl-mode) RET)

et aussi
(defun activer-orgtbl-mode ()
(interactive)
(M-x (orgtbl-mode) RET)

et aussi
(defun activer-orgtbl-mode ()
(interactive)
(orgtbl-mode))

mais cela ne donne rien; mais en relisant le message de Pascal, je me
dis que je fais peut-être fausse route et qu'il s'agissait peut-être de
taper simplement dans le mini-buffer
M-: (orgtbl-mode) RET
ce qui m'active bien le mode (comme lorsque je fais M-x orgtbl-mode RET)
mais dans ce cas, c'est que ma question n'était pas claire car ce n'est
pas ce que je cherche à faire.

Je suis désolé de poser des questions peut-être indigentes, mais je ne
voudrais pas passer pour un tir au flanc qui n'a pas lu le tutoriel
parce que j'ai compris de travers la suggestion de Cyprien. J'essaie
d'apprendre et je vous suis tous très reconnaissant de l'aide que vous
m'avez apportée depuis que j'ai commencé.

Stéphane Dutailly
Avatar
Stéphane Dutailly
bon, désolé du dérangement, je viens de comprendre... donc orgtbl-mode
est une fonction et il suffit de faire
(global-set-key [f5] 'orgtbl-mode)
pour l'affecter à f5...

Stéphane
Avatar
Cyprien Nicolas
Le 11/09/2013 15:13, Stéphane Dutailly écrivit :
Bonjour,

Alors j'ai relu le tutoriel mais je ne vois pas trop le rapport, à part
peut-être ceci: suite à la suggestion de Cyprien, j'ai essayé ceci:
(defun activer-orgtbl-mode ()
(interactive)
(M-: (orgtbl-mode) RET)

et aussi
(defun activer-orgtbl-mode ()
(interactive)
(M-x (orgtbl-mode) RET)



Je pense que c'est là où voulait en venir Pascal. Sachant que tu
connaissais M-x pour entrer une expression dans le mini-buffer (cf ton
premier message), j'ai supposé que tu connaissais M-: pour évaluer une
expression elisp, et passer du mode de commande à l'évaluateur. (Ou du
moins que tu comprendrais que M-: est un raccourci clavier et non une
fonction ou une commande.)

Donc oui, sachant que M-x et M-: sont des raccourcis clavier pour
saisir une commande ou une expression, je ne pensais pas que tu les
mettrais dans du code elisp directement…

et aussi
(defun activer-orgtbl-mode ()
(interactive)
(orgtbl-mode))



Ce code est correct. Il définit une fonction activer-orgtbl-mode qui
fait ce que tu veux, et c'est cette fonction que tu peux assigner à une
frappe clavier à l'aide de global-set-key.

; où trucbidule est la combinaison souhaitée
(global-set-key tricbidule 'activer-orgtbl-mode)

M-: est utile pour tester si cette fonction a le comportement attendu
par exemple.

mais cela ne donne rien; mais en relisant le message de Pascal, je me
dis que je fais peut-être fausse route et qu'il s'agissait peut-être de
taper simplement dans le mini-buffer
M-: (orgtbl-mode) RET
ce qui m'active bien le mode (comme lorsque je fais M-x orgtbl-mode RET)
mais dans ce cas, c'est que ma question n'était pas claire car ce n'est
pas ce que je cherche à faire.



Je t'avais donné cette suggestion pour trouver la fonction elisp qui
fait ce que tu veux (j'avais évidemment testé), je pensais que tu
maitrisais un peu l'emacs lisp, et que tu savais la différence entre
commande, fonction, et variable. D'où ma remarque sur global-set-key
que je considérais comme acquis, où j'ai simplement voulu te donner le
nom de la bonne fonction à utiliser, sans détailler le reste.

Je suis désolé de poser des questions peut-être indigentes, mais je ne
voudrais pas passer pour un tir au flanc qui n'a pas lu le tutoriel
parce que j'ai compris de travers la suggestion de Cyprien. J'essaie
d'apprendre et je vous suis tous très reconnaissant de l'aide que vous
m'avez apportée depuis que j'ai commencé.



Je suis ravi de voir que tu as trouvé (dans un autre message que je ne
reproduis pas) une solution qui fait ce que tu veux, et qui est même
plus simple que ta première piste.


--
« Ceci n'est pas une signature. » — René Magritte (Apocryphe)
Avatar
Stéphane Dutailly
et aussi
(defun activer-orgtbl-mode ()
(interactive)
(orgtbl-mode))



Ce code est correct. Il définit une fonction activer-orgtbl-mode qui
fait ce que tu veux, et c'est cette fonction que tu peux assigner à une
frappe clavier à l'aide de global-set-key.

; où trucbidule est la combinaison souhaitée
(global-set-key tricbidule 'activer-orgtbl-mode)



Je m'en suis rendu compte peu après, j'avais fait une faute de frappe
:-( Par contre, il me permet seulement d'activer le mode mais pas de le
désactiver.


M-: est utile pour tester si cette fonction a le comportement attendu
par exemple.

Je t'avais donné cette suggestion pour trouver la fonction elisp qui
fait ce que tu veux (j'avais évidemment testé), je pensais que tu
maitrisais un peu l'emacs lisp, et que tu savais la différence entre
commande, fonction, et variable. D'où ma remarque sur global-set-key
que je considérais comme acquis, où j'ai simplement voulu te donner le
nom de la bonne fonction à utiliser, sans détailler le reste.



Je ne connais pas l'emacs lisp, j'ai juste fait quelques essais (grâce à
l'aide du forum et au livre learning-gnu-emacs) et je procède surtout
par imitation (les différences entre commande, fonction et variable sont
encore floues parfois). Je crois que je commence à comprendre les bases
du fonctionnement d'emacs, mais, bien qu'ayant déjà vu la commande M-:
dans le livre, ça n'a pas fait tilt dans ma tête (car je ne l'ai jamais
utilisée) et le message de Pascal m'a fait réaliser que je faisais
fausse route.

Merci pour tout en tous cas.
Stéphane

PS: je pousse un peu, même si j'ai résolu mon «problème» principal. Si
je fais:

(defun ma-fonction ()
(interactive)
(org-mode)
(latex-mode))

alors quand j'appelle ma-fonction, mon buffer passe en mode org mais y
reste, il ne passe pas ensuite en mode latex. Je pensais que cela
enchaînerait les deux, mais non. Voyez-vous pourquoi?

PS 2: certains parmi vous utilisent-ils orgtbl-mode comme mode mineur de
latex-mode et, si oui, avez-vous remarqué des changements dans le
comportement de ce mode depuis la version 24?
Avatar
Pascal J. Bourguignon
Stéphane Dutailly writes:

Le 10/09/2013 22:08, Pascal J. Bourguignon a écrit :
Stéphane Dutailly writes:

Le 10/09/2013 16:11, Cyprien Nicolas a écrit :
Salut,

Le 10/09/2013 15:46, Stéphane Dutailly écrivit :
Bonjour,

Je cherche à faire une petite macro permettant d'activer/désactiver un
mode mineur (orgtbl-mode). Dans ce but, j'ai essayé ceci:

(defun activer-orgtbl-mode ()
(interactive)
(require 'orgtbl))

mais cela ne fonctionne pas (j'obtiens: Cannot open load file: orgtbl,
alors que si je tape M-x orgtbl-mode, cela fonctionne très bien).
Voyez-vous quoi changer ou ajouter pour que cela fonctionne?



Ben require c'est pas la bonne idée.

Vu tu tapes M-x orgtbl-mode, tu dois appeler une fonction (orgtbl-mode)
qui activera ou désactivera selon s'il l'est déjà ou pas.

Tu peux tester avec M-: (orgtbl-mode) RET

PS: mon objectif est ensuite d'affecter une touche à cette nouvelle
fonction de façon activer/désactiver ce mode en appuyant sur cette touche.



Un coup de global-set-key avec la touche que tu veux et la fonction que
tu as défini juste au-dessus suffira.




arf... j'obtiens Symbol's function definition is void: M-:



Peut être que maintenant serait le bon moment pour étudier le tutoriel ?
Une bonne petite demi-heure. Lance simplement emacs, et lis le message
qu'il affiche au de l'ignorer comme d'habitude : il indique comment
activer le tutoriel.

Il est possible que tu doives le lancer avec l'option -q, si tu as mis
dans ~/.emacs ce qu'il faut pour inhiber ce message initial:

emacs -q




Bonjour,

Alors j'ai relu le tutoriel mais je ne vois pas trop le rapport,




Le rapport, c'est que le tutorial t'apprends que M-: signifie qu'il faut
presser la touche 'Meta', taper la touche ':', et relacher la touche
'Meta'. Il mentionne aussi que 'Meta' peut être obtenue en tapant la
touche 'Alt' quand on n'a pas de touche 'Meta', ou que l'on peut aussi
de façon alternative taper la touche 'ESC' puis la touche ':' pour
obtenir le même résultat.

Donc sachant celà, quand on te dit:

Tu peux tester avec M-: (orgtbl-mode) RET









il n'y a absolument aucun moyen d'obtenir l'erreur:

arf... j'obtiens Symbol's function definition is void: M-:







Ce qui doit aider grandement.



à
part peut-être ceci: suite à la suggestion de Cyprien, j'ai essayé
ceci:
(defun activer-orgtbl-mode ()
(interactive)
(M-: (orgtbl-mode) RET)

et aussi
(defun activer-orgtbl-mode ()
(interactive)
(M-x (orgtbl-mode) RET)

et aussi
(defun activer-orgtbl-mode ()
(interactive)
(orgtbl-mode))



Donc, relis le tutorial encore une fois… M-: et M-x ne sont pas des
fonctions lisp, mais des touches à taper.

Voir aussi:

http://guidespratiques.traduc.org/vf/Emacs-Beginner-HOWTO.html


mais cela ne donne rien; mais en relisant le message de Pascal, je me
dis que je fais peut-être fausse route et qu'il s'agissait peut-être
de taper simplement dans le mini-buffer
M-: (orgtbl-mode) RET
ce qui m'active bien le mode (comme lorsque je fais M-x orgtbl-mode
RET)



Oui, ouf!


mais dans ce cas, c'est que ma question n'était pas claire car ce
n'est pas ce que je cherche à faire.

Je suis désolé de poser des questions peut-être indigentes, mais je ne
voudrais pas passer pour un tir au flanc qui n'a pas lu le tutoriel
parce que j'ai compris de travers la suggestion de Cyprien.



Bah! Je n'en tire aucune conclusion. Il y a beaucoup de gens qui ont
des problèmes à comprendre ces notations de touches, pourtant ça me
semble essentiel pour utiliser emacs. Je ne comprends pas comment
on peut utiliser emacs sans ça.


En passant, si ça t'intéresse, tu peux lire le tutoriel sur emacs lisp:

An Introduction to Programming in Emacs Lisp
http://www.gnu.org/software/emacs/emacs-lisp-intro/ or M-: (info "(eintr)Top") RET
(for non-programmers)

Emacs Lisp Manual
http://www.gnu.org/software/emacs/manual/elisp.html or M-: (info "(elisp)Top") RET


J'essaie d'apprendre et je vous suis tous très reconnaissant de l'aide
que vous m'avez apportée depuis que j'ai commencé.



Donc en traduisant en clair tous nos cafouillages,

1- tu n'as pas besoin d'écrire une commande spéciale pour activer le
mode orgtbl car il y en a déjà une: elle s'appelle orgtbl-mode.
D'une manière générale, tout mode a une commande de même nom pour
l'activer ou le désactiver.

2- pour activer orgtbl-mode, tu tapes au choix :

C-u M-x orgtbl-mode RET
C-u 1 M-x orgtbl-mode RET
C-1 M-x orgtbl-mode RET
M-1 M-x orgtbl-mode RET

pour désactiver orgtbl-mode, tu tapes au choix :

C-u - M-x orgtbl-mode RET
C-- M-x orgtbl-mode RET
M-- M-x orgtbl-mode RET

pour l'inverser (l'activer quand il est inactif, l'inactiver quand il
est actif), tu tapes:

M-x orgtbl-mode RET

(En général, C-1 et C-- ne fonctionnent pas dans un terminal, mais
seulement en environnement graphique).


3- si tu veux le faire avec une touche, tu peux mettre l'expression
suivante dans ~/.emacs:

(global-set-key (kbd "<f12>") 'orgtbl-mode)

pour activer orgtbl-mode, tu tapes:

C-u <f12>
C-u 1 <f12>
C-1 <f12>
M-1 <f12>

pour désactiver orgtbl-mode, tu tapes:

C-u - <f12>
C-- <f12>
M-- <f12>

pour l'inverser (l'activer quand il est inactif, l'inactiver quand il
est actif), tu tapes:

<f12>

Maintenant, le petit truc, c'est que org-mode et orgtbl-mode sont
déclarés "autoload", ce qui signifie que ces fonctions sont définies
sans que tout le programme org soit chargé. Quand on les appelle la
première fois, le programme org est chargé (ce qui redéfini ces
fonctions avec leur code réél) et les exécute.


Ceci dit, il y a aussi une commande turn-on-orgtbl qui fait exactement
ce que tu veux aussi (mais qui fait double emploi avec C-u M-x
orgtbl-mode RET), donc:

4- si tu veux seulement charger et activer orgtbl-mode avec une touche,
tu peux mettre l'expression suivante dans ~/.emacs:

(global-set-key (kbd "<f12>") 'turn-on-orgtbl)

pour activer orgtbl-mode, tu tapes:

<f12>


Tu peux bien sur remplacer <f12> par n'importe quel nom de touche ou
combinaison que tu veux. Par exemple: H-o (si tu as une touche Hyper-),
s-t (si tu as une touche super-), <f34> si tu as une touche de fonction
numéro 34 (on peut avoir de <f1> à <f35> ;-) (Les touches peuvent se
configurer facilement comme on veut avec xmodmap quand on utilise X11).


--
__Pascal Bourguignon__
http://www.informatimago.com/
Avatar
Lucas Levrel
Le 12 septembre 2013, Pascal J. Bourguignon a écrit :

(des choses très intéressantes)

(Les touches peuvent se configurer facilement comme on veut avec xmodmap
quand on utilise X11).



Je trouve que l'adverbe est de trop !

--
LL
Eν οιδα οτι ουδεν οιδα (Σωκρατης)
Avatar
Pascal J. Bourguignon
Lucas Levrel writes:

Le 12 septembre 2013, Pascal J. Bourguignon a écrit :

(des choses très intéressantes)

(Les touches peuvent se configurer facilement comme on veut avec
xmodmap quand on utilise X11).



Je trouve que l'adverbe est de trop !



Non, c'est même trivial.

--
__Pascal Bourguignon__
http://www.informatimago.com/
1 2