hilpers


  hilpers > comp.divers.* > comp.applications.emacs

 #1  
15/03/2017, 18h38
Stephane Tougard
Bonjour à tous,

J'ai installé le package pg.el. Par contre, lorsque j'essaye d'éxecuter
un script (emacs --script) avec les fonctions de ce module :

(let* conn (pg:connect "stephane" "stephane" "*****" "127.0.0.1" ))
(res (pg:exec conn "SELECT * from m")))
(message "status is %s" (pg:result res :status))
(message "metadata is %s" (pg:result res :attributes))
(message "data is %s" (pg:result res :tuples))
(pg:disconnect conn))

J'ai une superbe erreur

Symbol's function definition is void: pg:connect

J'ai essayé avec le (require 'pg)

Cannot open load file: no such file or directory, pg

Si quelqu'un peut soumettre un exemple de code qui marche ou bien
pointer sur le détail qui m'échappe.

Merci

 #2  
15/03/2017, 19h10
Vincent Belaïche
Mes commentaires insérés ci après :

Stephane Tougard <stephane> writes:

> Bonjour à tous,
> J'ai installé le package pg.el. Par contre, lorsque j'essaye d'éxecuter
> un script (emacs --script) avec les fonctions de ce module :
> (let* conn (pg:connect "stephane" "stephane" "*****" "127.0.0.1" ))
> (res (pg:exec conn "SELECT * from m")))
> (message "status is %s" (pg:result res :status))
> (message "metadata is %s" (pg:result res :attributes))
> (message "data is %s" (pg:result res :tuples))
> (pg:disconnect conn))


Cette expression me semble incorrecte (2 parenthèses ouvrantes manquent
après le let*), Il faudrait me semble-t-il :

(let* ((conn (pg:connect "stephane" "stephane" "*****" "127.0.0.1" ))
(res (pg:exec conn "SELECT * from m")))
(message "status is %s" (pg:result res :status))
(message "metadata is %s" (pg:result res :attributes))
(message "data is %s" (pg:result res :tuples))
(pg:disconnect conn))

> J'ai une superbe erreur
> Symbol's function definition is void: pg:connect
> J'ai essayé avec le (require 'pg)
> Cannot open load file: no such file or directory, pg
>> Si quelqu'un peut soumettre un exemple de code qui marche ou bien

> pointer sur le détail qui m'échappe.
> Merci


D'après l'erreur

Cannot open load file: no such file or directory, pg

on dirait que tu n'as pas mis le chemin de pg.el dans ton load-path.

évalue : (add-to-list 'load-path "/le/chemin/de/pg")

Sinon tu fais :

M-x toggle-debug-on-error

tu evalues ton code et tu regardes dans la trace débogueur où ça plante.

Vincent.
 #3  
15/03/2017, 19h33
Stephane Tougard
vincent.belaiche (Vincent Belaïche) writes:

> D'après l'erreur
> Cannot open load file: no such file or directory, pg
> on dirait que tu n'as pas mis le chemin de pg.el dans ton load-path.
> évalue : (add-to-list 'load-path "/le/chemin/de/pg")


J'ai installé le package via la gestion des packages de
Emacs. D'habitude ça marche out of the box.

D'ailleurs, M-x help f ... me donne accès aux fonctions et lorsque je
clique sur le fichier pg.el, il est chargé dans un buffer. J'aurais
tendance à penser que tout est correct.

> M-x toggle-debug-on-error
> tu evalues ton code et tu regardes dans la trace débogueur où ça plante.


Ce qui m'indique rien de plus, mais je le fais peut-être pas correctement.
 #4  
16/03/2017, 11h36
Vincent Belaïche
Stephane Tougard <stephane> writes:

> vincent.belaiche (Vincent Belaïche) writes:
>> J'ai installé le package via la gestion des packages de

> Emacs. D'habitude ça marche out of the box.
> D'ailleurs, M-x help f ... me donne accès aux fonctions et lorsque je
> clique sur le fichier pg.el, il est chargé dans un buffer. J'aurais
> tendance à penser que tout est correct.


Est-ce que si tu évalues

(load "pg.el")

ça trouve bien le fichier ?

Et sinon, qu'a donné la correction sur l'expression en let* que
j'indiquais dans mon message précédent ?

Vincent

[...]

 #5  
16/03/2017, 14h57
Stephane Tougard
vincent.belaiche (Vincent Belaïche) writes:

> Est-ce que si tu évalues
> (load "pg.el")


Cannot open load file: no such file or directory, pg.el

:~/.emacs.d$ find . -name pg.el
../elpa/pg-20130731.1442/pg.el

Forcément, ça aide pas. Mais pourquoi diable ça marche avec tous les
autres packages installés ?

> Et sinon, qu'a donné la correction sur l'expression en let* que
> j'indiquais dans mon message précédent ?


Ça ne change rien, mais à noter qu'aucune des fonctions du modulene marche.
 #6  
19/03/2017, 00h20
Vincent Belaïche
Stephane Tougard <stephane> writes:

> vincent.belaiche (Vincent Belaïche) writes:
> Cannot open load file: no such file or directory, pg.el
> :~/.emacs.d$ find . -name pg.el
> ./elpa/pg-20130731.1442/pg.el
>> Forcément, ça aide pas. Mais pourquoi diable ça marche avec tous les

> autres packages installés ?


Ch'ais pas, moi j'installe mes paquetages à l'ancienne, je n'ai jamais
encore utilisé la fonction package. Peut-être tu avais une ancienne
version dans un autre répertoire et il cherche toujours
l'ancienne... ménage mal fait ou un truc de ce genre...

Essaie toujours d'évaluer d'abord

(add-to-list 'load-path "~/.emacs.d/elpa/pg-20130731.1442/")

puis

(load "pg.el")

>> Et sinon, qu'a donné la correction sur l'expression en let* que
>> j'indiquais dans mon message précédent ?

> Ça ne change rien, mais à noter qu'aucune des fonctions du module ne marche.


Si le paquetage n'est pas chargé, ça ne sert à rien d'aller plus
loin. Tant que l'évaluation de l'expression (require 'pg) plante, rien
de ce qui utilisera pg ne fonctionnera.

Au fait, c'est quoi pg, et à quoi ça sert ?

Vincent.
 #7  
19/03/2017, 07h58
Stephane Tougard
vincent.belaiche (Vincent Belaïche) writes:

> Au fait, c'est quoi pg, et à quoi ça sert ?


Cela sert à se connecter à Postgresql depuis Emacs.
 #8  
19/03/2017, 08h30
Stephane Tougard
vincent.belaiche (Vincent Belaïche) writes:

> Essaie toujours d'évaluer d'abord
> (add-to-list 'load-path "~/.emacs.d/elpa/pg-20130731.1442/")


Ça fonctionne (même si j'ai le sentiment que j'ai loupé un épisode
quelque part).
 #9  
20/03/2017, 22h28
Vincent Belaïche
Stephane Tougard <stephane> writes:

> vincent.belaiche (Vincent Belaïche) writes:
>> Essaie toujours d'évaluer d'abord
>> (add-to-list 'load-path "~/.emacs.d/elpa/pg-20130731.1442/")

> Ça fonctionne (même si j'ai le sentiment que j'ai loupé un épisode
> quelque part).


Pour charger un paquetage Emacs a besoin que le chemin où se trouve le
fichier correspondant soit dans la liste contenue dans la variable
load-path. Je suppose que la déclaration du paquetage a pour effet de
mettre à jour cette liste.

Comme pg.el est dans le chemin ~/.emacs.d/elpa/pg-20130731.1442/, en
ajoutant (add-to-list 'load-path "~/.emacs.d/elpa/pg-20130731.1442/")
dans ton fichier d'init alors tu garanties que le chemin en question
soit dans la liste.

J'ai pensé à une autre source du problème : sans doute que la
déclaration des paquetages est faite en un point A ton fichier d'init,
alors si tu essaies de charger pg en un point B de ton fichier d'init et
que B est avant A, ça n'est pas encore déclaré.

Vincent.

Discussions similaires
.emacs et emacs snapshot

Problème entre un emacs windows et un emacs ubuntu

application->emacs vs xterm emacs

Retour expérience sur Emacs snapshot (Emacs CVS pour Debian)


Fuseau horaire GMT +2. Il est actuellement 00h22. | Privacy Policy