4 votes

Des résultats différents lorsque la fonction elisp est exécutée de différentes manières ; pourquoi ?

EDIT : Peut-être (dans le message original) ai-je utilisé le terme "transitoire" de manière incorrecte (je ne suis pas encore assez familier avec le jargon). Ce que je veux vraiment dire, c'est que la région mise en évidence va disparaître immédiatement lorsque l'utilisateur appuie sur un touches de navigation par exemple, les touches fléchées... (2ème EDITION : j'ai supprimé le mot "transitoire")


La question particulière de en sélectionnant une région afin que l'utilisateur obtienne "le mouvement de la touche curseur fera disparaître la mise en évidence" a été le fléau de mon existence récemment. J'obtiens des résultats différents selon la façon dont j'exécute le script suivant.

Pourquoi donne-t-elle des résultats différents, et plus précisément, y a-t-il un moyen de la faire produire "les touches de curseur font disparaître la mise en évidence" quel que soit le mode en cours d'exécution, ou s'il est évalué pendant le test ? ... Le mode CUA a ce comportement, mais j'ai vraiment besoin que le mode non CUA le fasse aussi (et l'évaluation, si possible)...

Voici les résultats, suivis du code. (GNU Emacs 23.1.1)

  • Mode CUA activé

    1. Évaluer via C-x C-e - les deux (call-trans-hi) y (trans-hi)
      NO-GO : La marque de réglage et le point de déplacement vont tous deux vers EOL, mais rien est mis en évidence.

    2. Exécuter M-x call-trans-hi
      ok : Cela fonctionne bien ; la région est mise en surbrillance et ensuite disparaît la première fois qu'une touche est pressée.

    3. Par la liaison des touches C-f1
      ok : Cela fonctionne bien ; la région est mise en surbrillance et ensuite disparaît la première fois qu'une touche est pressée.

  • pas de mode CUA (plutôt std emacs)

    1. Évaluer via C-x C-e
      NO-GO : Identique à 1. lorsque CUA est activé.

    2. Exécuter M-x call-trans-hi
      NO-GO : La ligne est mise en évidence, mais c'est collant ! et exige C-g (quitter le clavier) pour l'effacer.

    3. Par la liaison des touches C-f1
      NO-GO : La ligne est mise en évidence, mais c'est collant ! et exige C-g (quitter le clavier) pour l'effacer.


 ;test (trans-hi) EOL
 (defun trans-hi ()
   "transient highlight"
     (beginning-of-line)
     (push-mark (point))
     (end-of-line)
     (activate-mark))

 ;test (call-trans-hi) EOL
 (defun call-trans-hi ()
   "call transient highlight"
     (interactive)
     (trans-hi))
 (global-set-key [C-f1] 'call-trans-hi)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X