Org-dotemacs

Le
jj.r&torr&
J'ai créé un fichier .dotemacs dans lequel je sauvegarde des bloc=
s de
code elisp. Il marche très bien, mais sur mes machines un peu anciennes
à disque dur « classique » le démarrage d'Emacs est la=
rgement ralenti.
Je voudrais créer un fichier d'initialisation elisp dérivé d=
e mon
.dotemacs.org que je puisse mettre à jour rapidement.

la commande :

(org-dotemacs-load-file "~/.dotemacs.org" "" "~/emacs.d/dotemacs.el")

censée convertir le fichier .dotemacs.org en dotemacs.el ne crée =
aucun
fichier dotemacs.el, contrairement à ce que je pense avoir compris de =
la
documentation.

Une aide est bienvenue.

--
JJ. R.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
jj.retorre
Le #26393663
lun. 28 mars 2016, jj.r&torr&@gmail.com (Jean-Jacques Rétorré) d isait :

J'ai créé un fichier .dotemacs dans lequel je sauvegarde des bl ocs de
code elisp. Il marche très bien, mais sur mes machines un peu ancien nes
à disque dur « classique » le démarrage d'Emacs est largement ralenti.
Je voudrais créer un fichier d'initialisation elisp dérivé de mon
.dotemacs.org que je puisse mettre à jour rapidement.

la commande :

(org-dotemacs-load-file "~/.dotemacs.org" "" "~/emacs.d/dotemacs.el")

censée convertir le fichier .dotemacs.org en dotemacs.el ne cré e aucun
fichier dotemacs.el, contrairement à ce que je pense avoir compris d e la
documentation.

Une aide est bienvenue.




J'ai oublié de préciser :

,----[ Org-dotemacs ]
| Created: 2013-04-27 20:19:18
| ;; Version: 0.3
| ;; Package-Version: 20151119.1022
| ;; Last-Updated: 2013-09-09 20:19:18
| ;; By: Joe Bloggs
`----
installé par packages.el,

,----[ emacs-version ]
| Its value is "24.5.1"
`----

Emacs installé sur Debian Stretch provenant des dépôts.

--
JJ. R.
Pascal J. Bourguignon
Le #26393683
jj.r&torr&@gmail.com (Jean-Jacques Rétorré) writes:

J'ai créé un fichier .dotemacs dans lequel je sauvegarde des blocs de
code elisp. Il marche très bien, mais sur mes machines un peu anciennes
à disque dur « classique » le démarrage d'Emacs est largement ralenti.
Je voudrais créer un fichier d'initialisation elisp dérivé de mon
.dotemacs.org que je puisse mettre à jour rapidement.

la commande :

(org-dotemacs-load-file "~/.dotemacs.org" "" "~/emacs.d/dotemacs.el")

censée convertir le fichier .dotemacs.org en dotemacs.el ne crée aucun
fichier dotemacs.el, contrairement à ce que je pense avoir compris de la
documentation.

Une aide est bienvenue.



Je ne connais pas org-dotemacs, mais la première page retournée par
google indique que:

After installing org-dotemacs make sure you have an ~/.dotemacs.org
file and add the following lines to the end of your .emacs file:

(load-file "~/.emacs.d/org-dotemacs.el")
(org-dotemacs-load-default)

or if you want to just load code blocks matching a tag match:

(load-file "~/.emacs.d/org-dotemacs.el")
(org-dotemacs-load-default "<TAG-MATCH>")


To load a different org file either customize
`org-dotemacs-default-file’ or use the `org-dotemacs-load-file’
function, e.g:

(load-file "~/.emacs.d/org-dotemacs.el")
(org-dotemacs-load-file "~/.emacs.d/my_emacs_config.org" "<TAG-MATCH>")


Donc il semble que org-dotemacs-load-file ne prenne pas deux chemins,
mais le chemin du fichier '.org', et un tag. Elle ne semble pas servir
à copier le lisp du fichier org dans un fichier lisp, mais à l'exécuter
directement à partir du fichier org.


Il y a peut être une fonction servant à cela, sinon il faudrait l'écrire
(probablement en se basant sur org-dotemacs-load-file, pour voir comment
elle extrait les sections de lisp).

Je mentionnerais simplement que tant que tu y es, tu pourras compiler ce
fichier avec byte-compile-file pour le charger encore plus vite!


--
__Pascal Bourguignon__ http://www.informatimago.com/
“The factory of the future will have only two employees, a man and a
dog. The man will be there to feed the dog. The dog will be there to
keep the man from touching the equipment.” -- Carl Bass CEO Autodesk
jj.r&torr&
Le #26393731
lun. 28 mars 2016, "Pascal J. Bourguignon"
jj.r&torr&@gmail.com (Jean-Jacques Rétorré) writes:

J'ai créé un fichier .dotemacs dans lequel je sauvegarde des b locs de
code elisp. Il marche très bien, mais sur mes machines un peu ancie nnes
à disque dur « classique » le démarrage d'Emacs est largement ralenti.
Je voudrais créer un fichier d'initialisation elisp dérivà © de mon
.dotemacs.org que je puisse mettre à jour rapidement.

la commande :

(org-dotemacs-load-file "~/.dotemacs.org" "" "~/emacs.d/dotemacs.el")

censée convertir le fichier .dotemacs.org en dotemacs.el ne crà ©e aucun
fichier dotemacs.el, contrairement à ce que je pense avoir compris de la
documentation.

Une aide est bienvenue.



Je ne connais pas org-dotemacs, mais la première page retournée par
google indique que:

After installing org-dotemacs make sure you have an ~/.dotemacs.org
file and add the following lines to the end of your .emacs file:

(load-file "~/.emacs.d/org-dotemacs.el")
(org-dotemacs-load-default)

or if you want to just load code blocks matching a tag match:

(load-file "~/.emacs.d/org-dotemacs.el")
(org-dotemacs-load-default "<TAG-MATCH>")


To load a different org file either customize
`org-dotemacs-default-file’ or use the `org-dotemacs-load-fil e’
function, e.g:

(load-file "~/.emacs.d/org-dotemacs.el")
(org-dotemacs-load-file "~/.emacs.d/my_emacs_config.org" "<TAG-MATCH> ")


Donc il semble que org-dotemacs-load-file ne prenne pas deux chemins,
mais le chemin du fichier '.org', et un tag. Elle ne semble pas servir
à copier le lisp du fichier org dans un fichier lisp, mais à l' exécuter
directement à partir du fichier org.


Il y a peut être une fonction servant à cela, sinon il faudrait l'écrire
(probablement en se basant sur org-dotemacs-load-file, pour voir comment
elle extrait les sections de lisp).

Je mentionnerais simplement que tant que tu y es, tu pourras compiler ce
fichier avec byte-compile-file pour le charger encore plus vite!



J'ai bien sûr lu la doc que tu cites, et même plus (la doc est da ns le
org-dotemacs.el)

,----
| ;;; Commands/Usage
| ;;
| ;; The main command is `org-dotemacs-load-default' which loads your defau lt org-dotemacs file (~/.dotemacs.org)
| ;; and prompts for a tag match to specify which code blocks to load.
| ;; In this way you can load bits of config code when you need them.
| ;;
| ;; You can also put this command in your InitFile (see Installation below ) to load the code on startup.
| ;; To change the default org file use the `org-dotemacs-default-file' opt ion.
| ;; If you want to load a different org file from your default one, use `o rg-dotemacs-load-file'.
| ;;
| ;; For faster loading you may prefer to keep your config code in a
| ;; ---------------------------------------------------------------
| ;; separate elisp file, and just update this file now and again
| ;; ------------------------------------------------------------
| ;; by exporting the code from the org file.
| ;; ----------------------------------------
| ;; Use the `org-dotemacs-load-file' command for this and specify a
| ;; ---------------------------------------------------------------
| ;; target elisp file when prompted.
| ;; -------------------------------
| ;;
| ;; < Snip > Structure of the org file
| ;;
| ;; < Snip > Block dependencies
| ;;
| ;; < Snip >Installation
`----





,----[ Mon ~/.emacs ]
| ; Added by Package.el. This must come before configurations of
| ;; installed packages. Don't delete this line. If you don't want it,
| ;; just comment it out by adding a semicolon to the start of the line.
| ;; You may delete these explanatory comments.
| (require 'cl)
| (package-initialize)
|
|
| (require 'org-dotemacs)
| (let (find-file-hook) (org-dotemacs-load-default))
`----

Tout baigne, mon .dotemacs.org contient une dizaine de blocs qui sont
évalués au chargement (un fichier est créé dans /tmp)

il y a juste que j'aimerais pouvoir transformer mon
.dotemacs.org en ~/.emacs.d/dotemacs.el et remplacer les deux dernières
lignes de mon .emacs par
(load ~/.emacs.d/dotemacs.elc)

Il faut bien que ce fichier soit généré d'une façon ou d'une autre, je
ne sais pas comment l'enregistrer. Je ne suis pas assez bon lecteur de
code elisp (surtout que c'est du cl) pour comprendre le mécanisme de
org-dotemacs-load-file

,----
| (cl-defun org-dotemacs-load-file (&optional match
| (file org-dotemacs-default-file)
| target-file
| (error-handling org-dotemacs-er ror-handling))
| "Load the elisp code from code blocks in org FILE under headers matchin g tag MATCH.
| Tag matches supplied at the command line get priority over those supplied by the MATCH argument,
| and if both of these are nil then `org-dotemacs-default-match' will be us ed to create a tag match.
| If you need to override the command line tag-match set `org-dotemacs-tag- match' to nil.
| If TARGET-FILE is supplied it should be a filename to save the elisp code to, but it should
| not be any of the default config files .emacs, .emacs.el, .emacs.elc or i nit.el
| (the function will halt with an error in those cases). If TARGET-FILE is newer than FILE then
| TARGET-FILE will be loaded and FILE will not be processed. Otherwise TARG ET-FILE will be overwritten
| by the code blocks in FILE.
| The optional argument ERROR-HANDLING determines how errors are handled an d takes default value
| `org-dotemacs-error-handling' (which see)."
| (interactive (list nil
| (read-file-name (format "File to load (default %s): " org-dotemacs-default-file)
| (file-name-directory org-dotemacs-de fault-file)
| org-dotemacs-default-file
| t nil
| (lambda (file)
| (string-match "\.org$" file)))
| (if (y-or-n-p "Save elisp code to separate file?")
| (read-file-name "Save to file: " user-emacs-dire ctory))))
| (if (and target-file (string-match "\(?:\.emacs\(?:\.elc?\)?\|ini t\.elc?\)$" target-file))
| (error "org-dotemacs: Refuse to overwrite %s" target-file))
| (require 'ob-core)
| (cl-flet ((age (file) (float-time
| (time-subtract (current-time)
| (nth 5 (or (file-attributes (file -truename file))
| (file-attributes file) ))))))
| (if (and target-file
| (file-exists-p target-file)
| (> (age file) (age target-file)))
| (load-file target-file)
| (let ((visited-p (get-file-buffer (expand-file-name file)))
| (match (or match (org-dotemacs-default-match)))
| matchbuf to-be-removed)
| (save-window-excursion
| (find-file file)
| (setq to-be-removed (current-buffer)
| matchbuf (org-dotemacs-extract-subtrees (or org-dotemacs- tag-match match)))
| (with-current-buffer matchbuf
| ;; Hack: write the buffer out first to prevent org-babel-pre- tangle-hook
| ;; prompting for a filename to save it in.
| (write-file (concat temporary-file-directory (buffer-name)))
| (org-dotemacs-load-blocks target-file error-handling)
| (delete-file (concat temporary-file-directory (buffer-name))))
| (kill-buffer matchbuf))
| (unless visited-p
| (kill-buffer to-be-removed))))))
`----


--
JJ. R.
Pascal J. Bourguignon
Le #26393738
jj.r&torr&@gmail.com (Jean-Jacques Rétorré) writes:

lun. 28 mars 2016, "Pascal J. Bourguignon"
jj.r&torr&@gmail.com (Jean-Jacques Rétorré) writes:

To load a different org file either customize
`org-dotemacs-default-file’ or use the `org-dotemacs-load-file’
function, e.g:

(load-file "~/.emacs.d/org-dotemacs.el")
(org-dotemacs-load-file "~/.emacs.d/my_emacs_config.org"
"<TAG-MATCH>")




| (cl-defun org-dotemacs-load-file (&optional match
| (file org-dotemacs-default-file)
| target-file
| (error-handling
| org-dotemacs-error-handling))



Ok, ça ne correspond pas à ce qui est indiqué sur la page web citée plus
haut. Ici, la signature indique que le parametre tag-match vient en
premier, suivi du fichier dotemacs, et le fichier résultant en troisième
position.

Donc ce qui suit dans ~/.emacs devrait faire ce que tu veux:

(unless (and (file-exist-p "~/.emacs.d/my_emacs_config.elc")
(file-exist-p "~/.emacs.d/my_emacs_config.org")
(file-newer-than-file-p "~/.emacs.d/my_emacs_config.elc"
"~/.emacs.d/my_emacs_config.org"))
(org-dotemacs-load-file nil
"~/.emacs.d/my_emacs_config.org"
"~/.emacs.d/my_emacs_config.el")
(byte-compile-file "~/.emacs.d/my_emacs_config.el"))

(load "~/.emacs.d/my_emacs_config") ; choses the newest of .elc or .el


--
__Pascal Bourguignon__ http://www.informatimago.com/
“The factory of the future will have only two employees, a man and a
dog. The man will be there to feed the dog. The dog will be there to
keep the man from touching the equipment.” -- Carl Bass CEO Autodesk
jj.r&torr&
Le #26393783
lun. 28 mars 2016, "Pascal J. Bourguignon"
jj.r&torr&@gmail.com (Jean-Jacques Rétorré) writes:

lun. 28 mars 2016, "Pascal J. Bourguignon"
jj.r&torr&@gmail.com (Jean-Jacques Rétorré) writes:

To load a different org file either customize
`org-dotemacs-default-file’ or use the `org-dotemacs-load-f ile’
function, e.g:

(load-file "~/.emacs.d/org-dotemacs.el")
(org-dotemacs-load-file "~/.emacs.d/my_emacs_config.org"
"<TAG-MATCH>")






| (cl-defun org-dotemacs-load-file (&optional match
| (file org-dotemacs-default-f ile)
| target-file
| (error-handling
| org-dotemacs-error-handling))



Ok, ça ne correspond pas à ce qui est indiqué sur la page web citée plus
haut. Ici, la signature indique que le parametre tag-match vient en
premier, suivi du fichier dotemacs, et le fichier résultant en trois ième
position.

Donc ce qui suit dans ~/.emacs devrait faire ce que tu veux:

(unless (and (file-exist-p "~/.emacs.d/my_emacs_config.elc")
(file-exist-p "~/.emacs.d/my_emacs_config.org")
(file-newer-than-file-p "~/.emacs.d/my_emacs_config.elc"
"~/.emacs.d/my_emacs_config.org" ))
(org-dotemacs-load-file nil
"~/.emacs.d/my_emacs_config.org"
"~/.emacs.d/my_emacs_config.el")
(byte-compile-file "~/.emacs.d/my_emacs_config.el"))

(load "~/.emacs.d/my_emacs_config") ; choses the newest of .elc or .el



Désolé, même en corrigeant la typo, le fichier my_emacs_conf ig.el n'est
pas créé et (load "...") génère une erreur.
Si je crée un my_emacs_config.el vide, il n'y a pas d'erreur, mais il
n'est pas mis à jour.

--
JJ. R.
Pascal J. Bourguignon
Le #26394288
jj.r&torr&@gmail.com (Jean-Jacques Rétorré) writes:

Désolé, même en corrigeant la typo, le fichier my_emacs_config.el n'est
pas créé et (load "...") génère une erreur.
Si je crée un my_emacs_config.el vide, il n'y a pas d'erreur, mais il
n'est pas mis à jour.



En effet, j'observe le même problème aussi bien avec la version venant
d'elpa que de github.

Cela pourrait motiver un rapport de bogue:
https://github.com/vapniks/org-dotemacs

--
__Pascal Bourguignon__ http://www.informatimago.com/
“The factory of the future will have only two employees, a man and a
dog. The man will be there to feed the dog. The dog will be there to
keep the man from touching the equipment.” -- Carl Bass CEO Autodesk
jj.retorre
Le #26394303
sam. 02 avril 2016, "Pascal J. Bourguignon"
jj.r&torr&@gmail.com (Jean-Jacques Rétorré) writes:

Désolé, même en corrigeant la typo, le fichier my_emacs_c onfig.el n'est
pas créé et (load "...") génère une erreur.
Si je crée un my_emacs_config.el vide, il n'y a pas d'erreur, mais il
n'est pas mis à jour.



En effet, j'observe le même problème aussi bien avec la version venant
d'elpa que de github.

Cela pourrait motiver un rapport de bogue:
https://github.com/vapniks/org-dotemacs



Merci.
J'ai posté sur gnu.emacs.help sans réponse jusqu'à prés ent.

Je vais essayer de faire un rapport

--
JJ. R.
jj.retorre
Le #26394304
sam. 02 avril 2016, (Jean-Jacques Rétorré) disait :

sam. 02 avril 2016, "Pascal J. Bourguignon"
jj.r&torr&@gmail.com (Jean-Jacques Rétorré) writes:

Désolé, même en corrigeant la typo, le fichier my_emacs_ config.el n'est
pas créé et (load "...") génère une erreur.
Si je crée un my_emacs_config.el vide, il n'y a pas d'erreur, mais il
n'est pas mis à jour.



En effet, j'observe le même problème aussi bien avec la versio n venant
d'elpa que de github.

Cela pourrait motiver un rapport de bogue:
https://github.com/vapniks/org-dotemacs



Merci.
J'ai posté sur gnu.emacs.help sans réponse jusqu'à prà ©sent.

Je vais essayer de faire un rapport



C'est déjà fait :

Le bug a déjà été signalé.

https://github.com/vapniks/org-dotemacs/issues/10


--
JJ. R.
jj.retorre
Le #26394416
sam. 02 avril 2016, (Jean-Jacques Rétorré) disait :

sam. 02 avril 2016, (Jean-Jacques Rétorré ) disait :

sam. 02 avril 2016, "Pascal J. Bourguignon" disait :

jj.r&torr&@gmail.com (Jean-Jacques Rétorré) writes:

Désolé, même en corrigeant la typo, le fichier my_emacs _config.el n'est
pas créé et (load "...") génère une erreur.
Si je crée un my_emacs_config.el vide, il n'y a pas d'erreur, mai s il
n'est pas mis à jour.



En effet, j'observe le même problème aussi bien avec la versi on venant
d'elpa que de github.

Cela pourrait motiver un rapport de bogue:
https://github.com/vapniks/org-dotemacs



Merci.
J'ai posté sur gnu.emacs.help sans réponse jusqu'à prà ©sent.

Je vais essayer de faire un rapport



C'est déjà fait :

Le bug a déjà été signalé.

https://github.com/vapniks/org-dotemacs/issues/10



Et la solution s'y trouve. Il suffisait de modifier la ligne 424 de
org-dotemacs.el

,----
| ;; -(cl-defun org-dotemacs-load-blocks (file match &optional target-file
| ;; +(cl-defun org-dotemacs-load-blocks (&optional target-file
`----

compiler org-dotemacs.el et ça roule.
C'est un peu dommage que la version buggée soit toujours diffusée.

Modifiant assez souvent mon fichier d'initialisation, je trouve
org-dotemacs vraiment super. Le seul reproche que je lui faisais était
le ralentissement notable au chargement. Avec le code de Pascal J.
Bourguignon, je suis comblé.

--
JJ R.
Publicité
Poster une réponse
Anonyme