Cannot open load file

Le
Rakotomandimby Mihamina
Salut,

J'ai fait un package debian du rpm-spec-mode, dans le but de faire des
specfiles debpuis ma debian. Mais juste les specfiles.

Les instructions qui sont censées "charger" le mode rpm-spec sont:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(autoload 'rpm-spec-mode "rpm-spec-mode" "RPM Specfile editing mode." t)
(setq load-path (cons (concat "/usr/share/"
(symbol-name debian-emacs-flavor)
"/site-lisp/rpm-spec-mode")
load-path))
(setq auto-mode-alist
(cons '("\.spec$" . rpm-spec-mode) auto-mode-alist))
(setq interpreter-mode-alist
(cons '("rpm-spec-mode" . rpm-spec-mode) interpreter-mode-alist))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

La dernière ligne est celle ou j'ai un doute, parceque à la place de
"rpm-spec-mode" il y avait "python"
J'ai pompé les éléments du package python-mode, et j'ai remplacé
python-mode par rpm-spec-mode

Je n'arrive pas à interpreter le message d'erreur et réagir en conséquence.
Pour quoi "cannot load"? Si c'est "file not found", ou "permission
denied" je comprendrai mais là, je vois pas trop.
Voici la fin du traceback quand j'ouvre un fichier .spec:

[]
Loading 50ocaml-nox (source)done
Loading 50rpm-spec-mode (source)done
Loading font-lock
Loading regexp-optdone
Loading font-lockdone
Loading serverdone
For information about the GNU Project and its goals, type C-h C-p.
Wrote /home/mihamina/tete.spec
(New file)
File mode specification error: (file-error "Cannot open load file"
"rpm-spec-mode")
mouse-minibuffer-check: Minibuffer window is not active [3 times]

--
Miroir de logiciels libres http://www.etud-orleans.fr
Vos réponses Page 1 / 2
Trier par : date / pertinence
Rakotomandimby Mihamina
Le #21743131
J'ai fait des modifications sur le package et maintenant c'est:

[...]
For information about the GNU Project and its goals, type C-h C-p.
Loading rpm-spec-mode...
File mode specification error: (void-function
define-obsolete-variable-alias)

Je suis vraiment désolé mais là, ça me parle pas du tout...
Ce n'est pas la lecture des différentes description de cette chose sur
le Net qui m'a fait avancé... si vous aviez des pistes...

--
Miroir de logiciels libres http://www.etud-orleans.fr
drkm
Le #21743121
Rakotomandimby Mihamina
(autoload 'rpm-spec-mode "rpm-spec-mode" "RPM Specfile editing mode." t)
(setq load-path (cons (concat "/usr/share/"
(symbol-name debian-emacs-flavor)
"/site-lisp/rpm-spec-mode")
load-path))
(setq auto-mode-alist
(cons '("\.spec$" . rpm-spec-mode) auto-mode-alist))
(setq interpreter-mode-alist
(cons '("rpm-spec-mode" . rpm-spec-mode) interpreter-mode-alist))



D'abord, un petit nettoyage :

(autoload 'rpm-spec-mode "rpm-spec-mode" "RPM Specfile editing mode." t)
(push (concat "/usr/share/"
(symbol-name debian-emacs-flavor)
"/site-lisp/rpm-spec-mode")
load-path)
(push '("\.spec$" . rpm-spec-mode) auto-mode-alist)
(push '("rpm-spec-mode" . rpm-spec-mode) interpreter-mode-alist)

De plus, d'après ce que j'ai pu voir, rpm-sprec-mode semble
être un fichier. Es-tu sûr qu'il s'agit bien d'un répertoire ?
Car tu l'ajoutes au 'load-path', et dedans, ce sont des
répertoires (tu sais ce qu'est un path).

Donc s'il s'agit d'un fichier, c'est le répertoire parent,
'site-lisp/', qui doit être dans le 'load-path'.

De plus, la concaténation avec le nom du symbol désignant la
saveur d'Emacs me semble bien lourde. Ils n'ont pas déjà une
variable renseignant le répertoire ?

Enfin, pour 'interpreter-mode-alist', il s'agit d'une alist
mappant des « interpréteurs » à des modes d'édition. Un
interpréteur, c'est ce que tu trouves après « #!/... » en début
de certains fichiers (shell, Perl, Python, Lisp, etc.). Je ne
suis pas sûr que cela soit aproprié ici.

Il semblerait de plus que le bon répertoire ne soit pas dans le
'load-path'. Pour en voir le contenu, tu peux utiliser :

M-x pp-eval-expression <RET> load-path <RET>

Pour voir le résultat de la concaténation, place-toi après le
parenthèse fermante de l'appel à 'concat' (après "..-spec-mode"),
et 'C-x C-e'.

--drkm
drkm
Le #21743111
Rakotomandimby Mihamina writes:

File mode specification error: (void-function
define-obsolete-variable-alias)



Il semblerait que 'define-obsolete-variable-alias' ne soit pas
définie. Quel est ta version d'Emacs ? En attendant, tu peux
toujours utiliser ceci pour pouvoir démarrer le mode :

(unless (fboundp 'define-obsolete-variable-alias)
(defalias 'define-obsolete-variable-alias 'ignore))

--drkm
Rakotomandimby Mihamina
Le #21743081
drkm wrote:
D'abord, un petit nettoyage :

(autoload 'rpm-spec-mode "rpm-spec-mode" "RPM Specfile editing mode." t)
(push (concat "/usr/share/"
(symbol-name debian-emacs-flavor)
"/site-lisp/rpm-spec-mode")
load-path)
(push '("\.spec$" . rpm-spec-mode) auto-mode-alist)
(push '("rpm-spec-mode" . rpm-spec-mode) interpreter-mode-alist)



Je vais mettre ça, et je te tiens au courant.

De plus, d'après ce que j'ai pu voir, rpm-sprec-mode semble
être un fichier. Es-tu sûr qu'il s'agit bien d'un répertoire ?
Car tu l'ajoutes au 'load-path', et dedans, ce sont des
répertoires (tu sais ce qu'est un path).



Dans le système de packaging Debian, il y a un repertoire par mode. En
fait le python-mode était composé de deux fichiers .el qui se font
placer dans un répertoire "python-mode" et comme je suis en train de
faire un truc largement inspiré du python-mode...

Enfin, pour 'interpreter-mode-alist',



Je l'ai viré. Je me disais bien que j'avais un doute sur cette ligne...

--
Miroir de logiciels libres http://www.etud-orleans.fr
Sébastien Kirche
Le #21743071
Le 7 July 2005 à 11:07, Rakotomandimby Mihamina s'est exprimé ainsi :

De plus M-x rpm- <TAB> me montre que ce mode n'est pas
listé... mince... je ne suis pas au point...



Besoin de faire un M-x load-library avant ?

--
Sébastien Kirche
Matthieu Moy
Le #21743061
Rakotomandimby Mihamina
De plus M-x rpm- <TAB> me montre que ce mode n'est pas listé... mince...
je ne suis pas au point...



Il te manque un autoload.

A priori, un

(autoload 'rpm-machin-mode "le/fichier/ou/le/trouver"
"docstring")

devrait suffire, à placer dans debian/XXX.emacsen-startup.

--
Matthieu
drkm
Le #21840881
Rakotomandimby Mihamina writes:

Dans le système de packaging Debian, il y a un repertoire par mode.



Ce n'est pas plus mal. donc s'il s'agit bien d'un répertoire,
c'est ok.

--drkm
drkm
Le #21840871
Matthieu Moy writes:

Il te manque un autoload.



Pas d'après ce que Rakotomandimby a dit. Mais j'ai du mal à
croire que son 'autoload' est évalué, si la complétion dans 'M-x'
ne donne rien.

Au fait, Rakotomandimby, où à tu placé le code que tu nous as
posté ?

--drkm
drkm
Le #21840861
Rakotomandimby Mihamina writes:

Ah.... je me retrouve de nouveau devant un probleme. La version d'Emacs
charge le mode Shell Script quand j'ouvre un *.spec.



Es-tu sûr de ce que ton code est évalué ? Que donnent :

(require 'cl)
(find 'rpm-spec-mode auto-mode-alist
:test (lambda (val cell)
(eq val (cdr cell))))

et :

(find "spec" auto-mode-alist
:test (lambda (val cell)
(string-match val (car cell))))

et :

M-x pp-eval-expression <RET> auto-mode-alist <RET>

--drkm
Matthieu Moy
Le #21840851
Rakotomandimby Mihamina
Rien à faire. rpm-spec-mode est toujours introuvable (no match) quand je
tente ne serait-ce que je le charger à la main: M-x rpm-spec-mode



Ah, oui, il faut que ton autoload dise que la fonction est
interactive. Sinon, tu l'as avec C-h f mais pas M-x. Chais plut
comment ça marche.

La solution propre, c'est d'avoir un ";;;###autoloads" devant chaque
fonction à autoload-er, et d'utiliser un truc genre

$(AUTOLOADFILE).el: $(LISPFILES)
@$(RM) $@;
@echo "(provide 'moy-autoloads)" > $@;
@echo " " >> $@;
$(EMACS) -batch -q -l autoload
--eval '(setq generated-autoload-file "$@")'
--eval "(if (featurep 'xemacs) (delete-file generated-autoload-file))"
--eval '(setq make-backup-files nil)'
-f batch-update-autoloads $(LISPDIRS)

dans ton Makefile.

--
Matthieu
Publicité
Poster une réponse
Anonyme