Org *Edit formula* formules elisp

La question :

Lorsque je veux modifier une formule elisp d'une table org-mode
(org-table-edit-formulas) le buffer qui s'ouvre est en mode
fundamental. Ce n'est pas très pratique. Je suis obligé d'ouvrir un
buffer temporaire en emacs-lisp-mode pour bénéficier du confort de ce
mode. Y a-t-il une solution plus intelligente ?


Pour être plus concret, voici un exemple de tableau qui me pose
problème :

Je suis malheureusement un gros consommateur de médicaments et je
tiens à jour la quantité de médicaments disponibles pour ne pas être
pris de court. Certains sont à prendre plusieurs fois par jour, d'autre
sont à prendre à intervalles réguliers. La colonne $5 enregistre
l'inventaire à la date indiquée. Le calcul consiste à indiquer le
nombres de jours de traitement disponibles ($2) compte tenu des
éventuels oublis ($4)

|------------------------------+-------+--------------+---------+-------------------+--------+----------|
| Médicament | Jours | à renouveler | Manques | [2017-03-31 ven.] | fois/j | tous les |
|------------------------------+-------+--------------+---------+-------------------+--------+----------|
| Eau de source 2cl | 4 | Oui | | 33 | 3 | 1 |
| air de la campagne 10cm^3 | 34 | - | 5 | 36 | 1 | 1 |
| fleur de pissenlit 2mg | 4 | Oui | | 5 | 1 | 2 |
| Extrait de Rose de Berne 2mg | 56 | - | | 127 | 2 | 1 |
| Et caetera dilué 3mg/l | 18 | Oui | 2 | 23 | 1 | 1 |
|------------------------------+-------+--------------+---------+-------------------+--------+----------|
#+TBLFM: $2='(let ((nb-init (string-to-number $5) ) (nb-jours (org-time-stamp-to-now @1$5 ) ) (p-jour(string-to-number $6)) (tous-les (string-to-number $7)) (manques (string-to-number $4)))(* tous-les(/ (+(- nb-init (/(* p-jour (- nb-jours))tous-les))manques)p-jour)))::$3='(if (> (string-to-number $2) 28 ) "-" "Oui" )

Comme vous pourrez le constater, éditer la colonne $2 en ignorant la solution que vous allez me proposer n'est pas très
confortable .

--
JJR

Poser votre question sur le forum OS alternatifs

Les 4 réponses :

(Jean-Jacques Rétorré) writes:


Lorsque je veux modifier une formule elisp d'une table org-mode
(org-table-edit-formulas) le buffer qui s'ouvre est en mode
fundamental. Ce n'est pas très pratique. Je suis obligé d'ouvrir un
buffer temporaire en emacs-lisp-mode pour bénéficier du confort de ce
mode. Y a-t-il une solution plus intelligente ?


Pour être plus concret, voici un exemple de tableau qui me pose
problème :

Je suis malheureusement un gros consommateur de médicaments et je
tiens à jour la quantité de médicaments disponibles pour ne pas être
pris de court. Certains sont à prendre plusieurs fois par jour,
d'autre sont à prendre à intervalles réguliers. La colonne $5
enregistre l'inventaire à la date indiquée. Le calcul consiste à
indiquer le nombres de jours de traitement disponibles ($2) compte
tenu des éventuels oublis ($4)

|------------------------------+-------+--------------+---------+-------------------+--------+----------|
| Médicament | Jours | à renouveler | Manques | [2017-03-31 ven.] | fois/j | tous les |
|------------------------------+-------+--------------+---------+-------------------+--------+----------|
| Eau de source 2cl | 4 | Oui | | 33 | 3 | 1 |
| air de la campagne 10cm^3 | 34 | - | 5 | 36 | 1 | 1 |
| fleur de pissenlit 2mg | 4 | Oui | | 5 | 1 | 2 |
| Extrait de Rose de Berne 2mg | 56 | - | | 127 | 2 | 1 |
| Et caetera dilué 3mg/l | 18 | Oui | 2 | 23 | 1 | 1 |
|------------------------------+-------+--------------+---------+-------------------+--------+----------|

#+TBLFM: $2='(let ((nb-init (string-to-number $5) ) (nb-jours (org-time-stamp-to-now @1$5 ) ) (p-jour(string-to-number $6)) (tous-les (string-to-number $7)) (manques (string-to-number $4)))(* tous-les(/ (+(- nb-init (/(* p-jour (- nb-jours))tous-les))manques)p-jour)))::$3='(if (> (string-to-number $2) 28 ) "-" "Oui" )

Comme vous pourrez le constater, éditer la colonne $2 en ignorant la
solution que vous allez me proposer n'est pas très confortable .

--
JJR


Juste pour dire que chez moi ce n'est pas du mode purement Fundamental,
car lorsque le curseur est sur une référence alors la cellule
correspondante est mise en vedette.

Sinon tu as SES pour les feuilles de calcul... Pour info SES ne permet
pas de faire une formule par colonne...

Vincent.

---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus

dim. 09 avril 2017, (Vincent Belaïche) disait :


(Jean-Jacques Rétorré) writes:


Lorsque je veux modifier une formule elisp d'une table org-mode
(org-table-edit-formulas) le buffer qui s'ouvre est en mode
fundamental. Ce n'est pas très pratique. Je suis obligé d'ouvrir un
buffer temporaire en emacs-lisp-mode pour bénéficier du confort de ce
mode. Y a-t-il une solution plus intelligente ?


Pour être plus concret, voici un exemple de tableau qui me pose
problème :

Je suis malheureusement un gros consommateur de médicaments et je
tiens à jour la quantité de médicaments disponibles pour ne pas être
pris de court. Certains sont à prendre plusieurs fois par jour,
d'autre sont à prendre à intervalles réguliers. La colonne $5
enregistre l'inventaire à la date indiquée. Le calcul consiste à
indiquer le nombres de jours de traitement disponibles ($2) compte
tenu des éventuels oublis ($4)

|------------------------------+-------+--------------+---------+-------------------+--------+----------|
| Médicament | Jours | à renouveler | Manques | [2017-03-31 ven.] | fois/j | tous les |
|------------------------------+-------+--------------+---------+-------------------+--------+----------|
| Eau de source 2cl | 4 | Oui | | 33 | 3 | 1 |
| air de la campagne 10cm^3 | 34 | - | 5 | 36 | 1 | 1 |
| fleur de pissenlit 2mg | 4 | Oui | | 5 | 1 | 2 |
| Extrait de Rose de Berne 2mg | 56 | - | | 127 | 2 | 1 |
| Et caetera dilué 3mg/l | 18 | Oui | 2 | 23 | 1 | 1 |
|------------------------------+-------+--------------+---------+-------------------+--------+----------|

#+TBLFM: $2='(let ((nb-init (string-to-number $5) ) (nb-jours
(org-time-stamp-to-now @1$5 ) ) (p-jour(string-to-number $6))
(tous-les (string-to-number $7)) (manques (string-to-number $4)))(*
tous-les(/ (+(- nb-init (/(* p-jour (-
nb-jours))tous-les))manques)p-jour)))::$3='(if (> (string-to-number
$2) 28 ) "-" "Oui" )

Comme vous pourrez le constater, éditer la colonne $2 en ignorant la
solution que vous allez me proposer n'est pas très confortable .

--
JJR


Juste pour dire que chez moi ce n'est pas du mode purement Fundamental,
car lorsque le curseur est sur une référence alors la cellule
correspondante est mise en vedette.

Sinon tu as SES pour les feuilles de calcul... Pour info SES ne permet
pas de faire une formule par colonne...


Ben oui, chez moi aussi ça fonctionne comme ça. J'ai utilisé SES
org-mode est clairement plus sympa, j'ai abandonné. Et puis, mon
tableau, je l'exporte en HTML pour le récupérer via Dropbox sur mon
smartphone.
(au passage, mobileOrg android ne fonctionne pas sur mon Moto E )
C'est pas plus compliqué d'ouvrir un buffer en emacs-lisp-mode. Je
pensais que j'avais manqué quelque chose de simple, apparemment ça ne
l'est pas.
Je vais essayer de me faire un org-table-edit-formulas à ma sauce.

Merci pour ta réponse qui m'aide quand même d'une certaine façon.

--
JJR.

(Jean-Jacques Rétorré) writes:


dim. 09 avril 2017, (Vincent Belaïche) disait :


(Jean-Jacques Rétorré) writes:


Lorsque je veux modifier une formule elisp d'une table org-mode
(org-table-edit-formulas) le buffer qui s'ouvre est en mode
fundamental. Ce n'est pas très pratique. Je suis obligé d'ouvrir un
buffer temporaire en emacs-lisp-mode pour bénéficier du confort de ce
mode. Y a-t-il une solution plus intelligente ?


Pour être plus concret, voici un exemple de tableau qui me pose
problème :

Je suis malheureusement un gros consommateur de médicaments et je
tiens à jour la quantité de médicaments disponibles pour ne pas être
pris de court. Certains sont à prendre plusieurs fois par jour,
d'autre sont à prendre à intervalles réguliers. La colonne $5
enregistre l'inventaire à la date indiquée. Le calcul consiste à
indiquer le nombres de jours de traitement disponibles ($2) compte
tenu des éventuels oublis ($4)

|------------------------------+-------+--------------+---------+-------------------+--------+----------|
| Médicament | Jours | à renouveler | Manques | [2017-03-31 ven.] | fois/j | tous les |
|------------------------------+-------+--------------+---------+-------------------+--------+----------|
| Eau de source 2cl | 4 | Oui | | 33 | 3 | 1 |
| air de la campagne 10cm^3 | 34 | - | 5 | 36 | 1 | 1 |
| fleur de pissenlit 2mg | 4 | Oui | | 5 | 1 | 2 |
| Extrait de Rose de Berne 2mg | 56 | - | | 127 | 2 | 1 |
| Et caetera dilué 3mg/l | 18 | Oui | 2 | 23 | 1 | 1 |
|------------------------------+-------+--------------+---------+-------------------+--------+----------|

#+TBLFM: $2='(let ((nb-init (string-to-number $5) ) (nb-jours
(org-time-stamp-to-now @1$5 ) ) (p-jour(string-to-number $6))
(tous-les (string-to-number $7)) (manques (string-to-number $4)))(*
tous-les(/ (+(- nb-init (/(* p-jour (-
nb-jours))tous-les))manques)p-jour)))::$3='(if (> (string-to-number
$2) 28 ) "-" "Oui" )

Comme vous pourrez le constater, éditer la colonne $2 en ignorant la
solution que vous allez me proposer n'est pas très confortable .

--
JJR


Juste pour dire que chez moi ce n'est pas du mode purement Fundamental,
car lorsque le curseur est sur une référence alors la cellule
correspondante est mise en vedette.

Sinon tu as SES pour les feuilles de calcul... Pour info SES ne permet
pas de faire une formule par colonne...


Ben oui, chez moi aussi ça fonctionne comme ça. J'ai utilisé SES
org-mode est clairement plus sympa, j'ai abandonné.


Juste pour info, je suis le mainteneur de SES, mais là clairement je
n'ai pas vraiment le temps de faire tout ce que je voudrais y rajouter
(permutation de cellules, formule mathématique Calc, etc...). C'est vrai
que rajouter un tampon temportaire pour éditer confortablement les
formules serait intéressant.


Et puis, mon tableau, je l'exporte en HTML pour le récupérer via
Dropbox sur mon smartphone.


Là en effet, en SES pour ce genre d'exportation compliquée je m'écris
une petite macro. Ça serait peut-être une bonne idée que je donne un
exemple dans le manuel...


(au passage, mobileOrg android ne fonctionne pas sur mon Moto E )
C'est pas plus compliqué d'ouvrir un buffer en emacs-lisp-mode. Je
pensais que j'avais manqué quelque chose de simple, apparemment ça ne
l'est pas. Je vais essayer de me faire un org-table-edit-formulas à
ma sauce.

Merci pour ta réponse qui m'aide quand même d'une certaine façon.

--
JJR.


Vincent.

---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus

lun. 10 avril 2017, (Vincent Belaïche) disait :


(Jean-Jacques Rétorré) writes:


dim. 09 avril 2017, (Vincent Belaïche) disait :


(Jean-Jacques Rétorré) writes:

Lorsque je veux modifier une formule elisp d'une table org-mode
(org-table-edit-formulas) le buffer qui s'ouvre est en mode
fundamental. Ce n'est pas très pratique. Je suis obligé d'ouvrir un
buffer temporaire en emacs-lisp-mode pour bénéficier du confort de ce
mode. Y a-t-il une solution plus intelligente ?


Pour être plus concret, voici un exemple de tableau qui me pose
problème :

Je suis malheureusement un gros consommateur de médicaments et je
tiens à jour la quantité de médicaments disponibles pour ne pas être
pris de court. Certains sont à prendre plusieurs fois par jour,
d'autre sont à prendre à intervalles réguliers. La colonne $5
enregistre l'inventaire à la date indiquée. Le calcul consiste à
indiquer le nombres de jours de traitement disponibles ($2) compte
tenu des éventuels oublis ($4)

|------------------------------+-------+--------------+---------+-------------------+--------+----------|
| Médicament | Jours | à renouveler | Manques | [2017-03-31 ven.]
| | fois/j | tous les |
|------------------------------+-------+--------------+---------+-------------------+--------+----------|
| Eau de source 2cl | 4 | Oui | | 33 | 3 | 1 |
| air de la campagne 10cm^3 | 34 | - | 5 | 36 | 1 | 1 |
| fleur de pissenlit 2mg | 4 | Oui | | 5 | 1 | 2 |
| Extrait de Rose de Berne 2mg | 56 | - | | 127 | 2 | 1 |
| Et caetera dilué 3mg/l | 18 | Oui | 2 | 23 | 1 | 1 |
|------------------------------+-------+--------------+---------+-------------------+--------+----------|

#+TBLFM: $2='(let ((nb-init (string-to-number $5) ) (nb-jours
(org-time-stamp-to-now @1$5 ) ) (p-jour(string-to-number $6))
(tous-les (string-to-number $7)) (manques (string-to-number $4)))(*
tous-les(/ (+(- nb-init (/(* p-jour (-
nb-jours))tous-les))manques)p-jour)))::$3='(if (> (string-to-number
$2) 28 ) "-" "Oui" )

Comme vous pourrez le constater, éditer la colonne $2 en ignorant la
solution que vous allez me proposer n'est pas très confortable .

--
JJR

Juste pour dire que chez moi ce n'est pas du mode purement Fundamental,
car lorsque le curseur est sur une référence alors la cellule
correspondante est mise en vedette.

Sinon tu as SES pour les feuilles de calcul... Pour info SES ne permet
pas de faire une formule par colonne...


Ben oui, chez moi aussi ça fonctionne comme ça. J'ai utilisé SES
org-mode est clairement plus sympa, j'ai abandonné.


Juste pour info, je suis le mainteneur de SES, mais là clairement je
n'ai pas vraiment le temps de faire tout ce que je voudrais y rajouter
(permutation de cellules, formule mathématique Calc, etc...). C'est vrai
que rajouter un tampon temportaire pour éditer confortablement les
formules serait intéressant.


Et puis, mon tableau, je l'exporte en HTML pour le récupérer via
Dropbox sur mon smartphone.


Là en effet, en SES pour ce genre d'exportation compliquée je m'écris
une petite macro. Ça serait peut-être une bonne idée que je donne un
exemple dans le manuel...



J'ai une solution qui semble convenir en questionnant sur Emacs Stack
exchange

#+BEGIN_SRC emacs-lisp

(defun my--advice-for-edit-formulas (orig-fun &rest args)
(advice-add #'fundamental-mode :after #'emacs-lisp-mode)
(apply orig-fun args)
(advice-remove #'fundamental-mode #'emacs-lisp-mode))

(advice-add #'org-table-edit-formulas :around
#'my--advice-for-edit-formulas)
#+END_SRC

Le probléme est que si on active emacs-mode-lisp, il faut ensuite
revenir dans l'environnement de l'appel de org-table-edit-formulas.
Une solution que je n'aurais certainement pas trouvé tout seul...

--
JJR.

Poser votre question sur le forum OS alternatifs

Questions similaires :

elisp et compilation latex

Le vendredi 03 Mai 2013 à 12:42 par jean-io : Bonsoir, Je tape bien le nom d'une commande après tex-command...., en l'occurrence "e;latex"e;, la compilation s'effectue correctement mais après je ne passe pas à la commande suivante : (read sting ... Ceci étant dit si vous n'arrivez pas à reproduire...

elisp, compilation et messages d'erreur

Bonsoir J'essaie de bricoler un peu en elisp mais je n'arrive pas à déclarer proprement mes variables locales. Voilà à quoi mon code ressemble : (defun qdp-asm-compile () "blablabla" (interactive) (let ((asm-file-name (buffer-file-name)) (bin-file-name (concat...

Explication Elisp

Bonjour, C-h v font-lock-syntactic-face-function donne: ,---- | font-lock-syntactic-face-function is a variable defined in `font-loc.. | Its value is | lisp-font-lock-syntactic-face-function | Local in buffer font-lock.el.gz; global value is | #[(state) | "\3038\203\0 \207\n\207" | ...

install-info elisp-info

Bonjour, J'ai récupéré elisp-info.tar.gz. Il est simultanément dans ~/info/ et /usr/share/info/ Si je fais info -f ~/info/elisp-info Pas de problème, ça produit le résultat attendu. Par contre, j'ai fait sudo install-info /usr/share/info/elisp-info Suite à quoi, si je fais info Le shell me...

elisp, récupérer plusieurs variables dans le mini-tampon

bonjour j'espère que le titre est assez explicite mais je glose quand même : Je voudrais écrire une macro qui récupérerait deux textes par l'intermédiaire du mini-tampon. J'ai la vague impression que j'ai eu fait ça dans le temps mais comment ? Si toutefois ce genre de gymnastique n'était pas...