Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Too many downloads? #14

Open
loirotte opened this issue Apr 20, 2021 · 17 comments
Open

Too many downloads? #14

loirotte opened this issue Apr 20, 2021 · 17 comments
Labels
bug Something isn't working question Further information is requested

Comments

@loirotte
Copy link

Hello,

First at all, many thanks for your great package. I use it whenever I compose my mails (thunderbird + external editor, which launches an emacsclient). Each time I start a mail, emacsclient is launched, and each time (according to emacs messages buffer) Grammalecte-fr-vx.x.x.zip is downloaded and extracted, even if I used it few minutes before. The process is usually quiet quick, but it happens that some network troubles (from my config or from the site access itself) lead to a 2-3 seconds delay (and sometimes it freezes). Basically, all these downloads do not seem necessary. I wonder if there isn't a variable to control the minimum time between 2 downloads, or to control it somehow? I've searched among the existing variables, but I didn't found anything that seemed to match. Any idea? Thanks!

@milouse
Copy link
Owner

milouse commented Apr 20, 2021

Hello,

Obviously it’s a bug :( Grammalecte should not be downloaded every time… I’ll try to reproduce it.

Can you share with me your flycheck-grammalect config (or the way you installed it), your current flycheck-grammalecte version and the lines you see in Messages buffer?

Thank you very much for your help.

PS: as this is a french-related project, if you are like me french-native, there is no problem to continue the discussion in french until resolution we might describe in english. As you want.

@milouse milouse added bug Something isn't working question Further information is requested labels Apr 20, 2021
@loirotte
Copy link
Author

Bonjour,

Ma configuration grammalecte (extrait de mon .emacs) :

;; Pour grammalecte
(use-package flycheck-grammalecte
  :ensure t
  :config
  (setq flycheck-grammalecte-enabled-modes
	'(mail-mode))
  (setq flycheck-grammalecte-report-apos nil)
  (setq flycheck-grammalecte-report-esp nil)
  (setq flycheck-grammalecte-report-nbsp nil))

Ma version : flycheck-grammalecte-20210106.1422 (j'ai traîné un peu sur les MAJ, j'aurais dû commencer par ça, désolé -- je fais les MAJ et je vérifie que c'est toujours le cas avec la dernière version).

Les messages emacs (il y autant de sections de ce genre que de mails composés) :

Local Ispell dictionary set to francais
Contacting host: grammalecte.net:443
Wrote /home/phil/.emacs.d/elpa/flycheck-grammalecte-20210106.1422/Grammalecte-fr-v2.1.1.zip
[Flycheck Grammalecte] Downloaded to /home/phil/.emacs.d/elpa/flycheck-grammalecte-20210106.1422/Grammalecte-fr-v2.1.1.zip
[Flycheck Grammalecte] Extracted to /home/phil/.emacs.d/elpa/flycheck-grammalecte-20210106.1422/Grammalecte-fr-v2.1.1
[Flycheck Grammalecte] Installed in /home/phil/.emacs.d/elpa/flycheck-grammalecte-20210106.1422/grammalecte
File mode specification error: (wrong-type-argument stringp package-desc)
When done with a buffer, type C-x #

Je n'avais pas fait attention, il y a un message d'erreur (File mode specification error...) qui pourrait indiquer une mauvaise utilisation de ma part ?

Merci !

@milouse
Copy link
Owner

milouse commented Apr 20, 2021

Mmmmh. Je ne connais pas du tout use-package, je vais essayer de tester cette config. Au final, de plus en plus d’utilisateurs passent par use-package, straight et autre… je devrais peut-être les tester rapidement vérifier que tout se comporte comme attendu.

À première vue, rien ne me semble particulièrement hors de propos dans votre config. Je vais regarder ça tranquilement.

@loirotte
Copy link
Author

loirotte commented Jun 30, 2021 via email

@milouse
Copy link
Owner

milouse commented Jul 2, 2021

Bonjour, Je vous avais écrit il y a quelques mois sur les problèmes de download trop nombreux. Je suis tout d'abord désolé de vous contacter par mail, j'aurais préféré faire une déclaration sur github (comme la dernière fois), mais l'option ne s'y trouve a priori plus (peut-être dû au fait que vous avez visiblement déplacé votre dépôt ?).

Bonjour,

Étrange, votre réponse est bien apparu en réponse au ticket sur Github… Et je n’ai rien changé de particulier sur le dépôt 🤔

Bref. J'ai vu qu'il y avait une mise à jour et je l'ai passée, mais grammalecte ne se charge plus du tout. À la place, j'obtiens (en lançant emacs --debug-init) : … [stack trace]…

Malheureusement la Stack trace n’est pas très utile dans ce cas apparement :( Je vais définitivement faire un essai avec use-package pour voir si le problème vient de là ou pas (je n’utilise pas du tout, je ne peux rien promettre en temps de réponse)

Sachant, justement, qu'il y a visiblement eu un refactoring important autour de flycheck pour la version 2.0, je tenais à vous le signaler. Ma configuration .emacs est la même que la dernière fois, i.e. à base de (use-package). J'ai bien essayé de m'en affranchir il y a quelque temps, en suivant le guide d'installation présent sur github (à base de (flycheck-grammalecte-setup))

Je serai curieux de savoir ce qui n’avait pas fonctionné cependant. Vous n’êtes peut-être pas le seul à être tombé sur un problème et j’ai peut-être loupé une étape dans le README.

@loirotte
Copy link
Author

loirotte commented Jul 2, 2021 via email

@milouse
Copy link
Owner

milouse commented Jul 2, 2021

Bonjour,

Finalement j’ai pu prendre un peu de temps ce soir pour tester use-package. Après quelques essai, j’ai obtenu un résultat satisfaisant avec la configuration documenté dans le README: https://github.com/milouse/flycheck-grammalecte/#with-use-package

Il y a quelques petites différence avec votre configuration (en particulier la répartition des éléments entre :init et :config. Dans la documentation je ne parle pas du :ensure t, vous pouvez le conserver a priori sans souci.

Concernant les soucis que vous rencontrez en usage direct, je me demande si ça ne vient pas de l’enchainement des appels à la fonction setup. Idem, dans votre dernier exemple je vois que vous chargez deux fois le fichier flycheck-grammalecte.el ce qui est étrange. Par ailleurs, Emacs n’ajoute pas naturellement les dossiers à son load-path et la version 2.0 a splitté la librairie en 2 fichiers distincts. Du coup, cela donne plusieurs scénario possible (oui, la configuration Emacs c’est pas si simple, je le reconnais) :

  • vous installez le package via MELPA
    • vous souhaitez utiliser use-package : utilisez simplement la documentation du README en prenant soin d’ajouter le :ensure t dans la config pour être sûr d’avoir le paquet installé
    • pour un accès « direct », la bonne doc est également celle du README
(setq flycheck-grammalecte-report-apos nil)
(setq flycheck-grammalecte-report-esp nil)
(setq flycheck-grammalecte-report-nbsp nil)
(require 'flycheck-grammalecte)
(add-to-list 'flycheck-grammalecte-enabled-modes 'mail-mode)
(flycheck-grammalecte-setup)
  • Vous souhaitez utiliser une version clonée de ce dépôt (donc ne pas passer par MELPA et autre). Attention dans ce cas c’est à vous de vous assurer d’installer toutes les dépendences requises !
    • vous souhaitez utiliser use-package. Vous pouvez utiliser la version de la documentation sans ajouter de :ensure t. Ensuite pensez à informer Emacs de l’endroit d’où charger les librairies avec un add-to-list 'load-path ou directement avec 2 load-file (voir juste après). Après c’est la config de la documentation.
    • vous souhaitez charger/configurer la librairie « à l’ancienne » : vous pouvez lire ci-dessous.
(load-file "~/.emacs.d/flycheck-grammalecte/grammalecte.el")
(load-file "~/.emacs.d/flycheck-grammalecte/flycheck-grammalecte.el")

ou

(add-to-list 'load-path "~/.emacs.d/flycheck-grammalecte/")
(require 'flycheck-grammalecte)

Finalement vous devez ajouter votre configuration dans le bon ordre :

  • tous les setq avant de charger la librairie flycheck-grammalecte (que ce soit via un load-file ou un require)
  • tous les add-to-list après avoir chargé la librairie
  • enfin tout en dernier appeler une seule fois la fonction de setup.

Pour synthétiser, dans votre dernier exemple votre configuration devrait plutôt ressembler à ça:

;; Pas besoin de charger flycheck de cette manière si vous l’avez installé via package 
;; (comme je l’imagine au vu de son chemin dans ~/.emacs.d/elpa). En effet il sera
;; automatiquement chargé au démarrage d’Emacs normalement.
;;(load-file "~/.emacs.d/elpa/flycheck-20210321.852/flycheck.elc")

;; D’abord les configuration defcustom
(setq flycheck-grammalecte-report-apos nil)
(setq flycheck-grammalecte-report-esp nil)
(setq flycheck-grammalecte-report-nbsp nil)

;; Ensuite on charge les 2 fichiers dans le bon ordre (flycheck-grammalecte dépend de grammalecte)
(load-file "~/.emacs.d/flycheck-grammalecte/grammalecte.el")
(load-file "~/.emacs.d/flycheck-grammalecte/flycheck-grammalecte.el")

;; Maintenant on peut personnaliser la liste
(add-to-list 'flycheck-grammalecte-enabled-modes 'mail-mode)

;; Enfin on associe flycheck-grammalecte à flycheck
(flycheck-grammalecte-setup)

Et voilà.

Dans tous les cas, une ligne m’interpelle dans votre configuration : (add-to-list 'flycheck-grammalecte-enabled-modes 'mail-mode). Historiquement, j’avais également vu dans votre précédente config un (setq flycheck-grammalecte-enabled-modes '(mail-mode)). Vous confirmez que vous ne souhaitez utiliser grammalecte que dans la rédaction des emails et nulle part ailleurs ? Dans le cas contraire, mail-mode est désormais bien par défaut dans la liste flycheck-grammalecte-enabled-modes donc vous ne devriez plus avoir besoin de cette liste.

Cordialement

@loirotte
Copy link
Author

loirotte commented Jul 3, 2021 via email

@milouse
Copy link
Owner

milouse commented Jul 4, 2021

Mmmmh alors à la lecture de tout ceci, je me pose deux petites questions:

  • Est-ce que Flycheck est bien installé (normalement la gestion des dépendances est automatique, mais sait-on jamais…). L’erreur ressemble en effet à un crash dans la vérification de la version de Flycheck. Je ne connais pas bien use-package et je ne sais pas comment il gère les dépendances… Peut-être faut-il que vous ajoutiez une ligne du style (use-package flycheck :ensure t) avant la déclaration de flycheck-grammalecte ?
  • Lorsque vous dites, dans le meilleur des cas, qu’il ne se passe « rien », avez-vous pensé à lancer flycheck ? En effet ce package ne fait rien automatiquement. Donc lorsque vous rédigez un mail, il faut que vous lanciez manuellement un M-x flycheck-mode ou que vous ayez pris soin d’ajouter dans votre fichier de config un (add-hook 'mail-mode-hook 'flycheck-mode). Assurez-vous également que le buffer dans lequel vous êtes lorsque vous rédigez un email hérite bien de mail-mode.

Pour synthétiser à nouveau, essayez avec

(use-package flycheck :ensure t)
(use-package flycheck-grammalecte
  :ensure t
  :hook (mail-mode . flycheck-mode)
  :init
  (setq flycheck-grammalecte-report-apos nil
        flycheck-grammalecte-report-esp nil
        flycheck-grammalecte-report-nbsp nil)
  :config
  (grammalecte-download-grammalecte)
  (flycheck-grammalecte-setup))

@loirotte
Copy link
Author

loirotte commented Jul 4, 2021 via email

@milouse
Copy link
Owner

milouse commented Jul 4, 2021

Les pièces jointes ne passent pas dans les commentaires github. Pouvez-vous le copier/coller dans un pastebin, par exemple https://pastebin.zici.fr/ ?

Sinon je me demande si le souci ne vient pas simplement du contrôle de téléchargement. Pouvez-vous vérifier que votre dossier .emacs.d ne comporte pas de fichier grammalecte-cache.el ? Si oui, pouvez-vous le supprimer et retenter de télécharger grammalecte M-x grammalecte-download-grammalecte ?

@loirotte
Copy link
Author

loirotte commented Jul 4, 2021 via email

@milouse
Copy link
Owner

milouse commented Jul 5, 2021

Merci pour votre configuration. Il y avait bien un bug, j’y ai perdu quelques cheveux.

Pour contrôler le numéro de la version de grammalecte déjà installée, je fais appel à un petit script python. De même, le fonctionnement générale de grammalecte passe par python. Ce faisant, suivant votre environnement, le package python grammalecte pouvait déjà être, ou pas, dans les chemins accessibles à python. Dans le cas où il n’y ait pas, j’ajoutais temporairement le chemin de grammalecte aux chemins de python. Et c’est dans cette routine que je me suis planté. De mon côté, comme j’utilise grammalecte installé de manière partagé sur mon système (avec LibreOffice), le problème était invisible.

Je viens de pousser un correctif qui devrait vous aider après mise à jour.

Merci à vous pour cette phase de debug !

@loirotte
Copy link
Author

loirotte commented Jul 5, 2021 via email

@loirotte
Copy link
Author

loirotte commented Jul 6, 2021 via email

@milouse
Copy link
Owner

milouse commented Jul 6, 2021

Alors ça devient étrange car avec votre profile (j’ai juste désactivé les modules non-disponible dans elpa), je n’ai pas d’erreur et cela fonctionne bien (je n’ai pas essayé dans un mail, mais dans un buffer org).

Il reste un petit souci pour lequel je vais pousser un nouveau petit patch : le fichier de « cache » qui empêche de télécharger trop souvent grammalecte empêche le retéléchargement suite à une mise à jour du module (lorsque flycheck-grammalecte se met à jour, le dossier de l’ancienne version est supprimé, et donc grammalecte avec lui… mais pas le fichier de cache). Essayez en supprimant le fichier grammalecte-cache.el de voir si ça règle le problème.

Pour info, voici le fichier init amendé que j’utilise pour mes tests sans souci https://pastebin.zici.fr/?129e18b2a947f9c5#KQ2Mgh1zOeBDjRiHt7wIYeHwCKU9+Cg3NLpTD8bmIM8=

@loirotte
Copy link
Author

loirotte commented Jul 6, 2021 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants