67 votes

eval-après charge par rapport à la mode crochet

Est-il une différence entre le réglage de paramètres d'un mode à l'aide de eval-after-load et en utilisant le mode de crochet?

J'ai vu un peu de code où l' define-key est utilisé à l'intérieur d'un mode majeur de crochet, et quelques autres de code où l' define-key est utilisé en eval-after-load formulaire.


Mise à jour:

Pour mieux comprendre, voici un exemple d'utilisation de eval-après-charge et le mode de crochets avec org-mode. Le code peut s'exécuter avant d' (load "org") ou (require 'org) ou (package-initialize).

;; The following two lines of code set some org-mode options.
;; Usually, these can be outside (eval-after-load ...) and work.
;; In cases that doesn't work, try using setq-default or set-variable
;; and putting them in (eval-after-load ...), if the
;; doc for the variables don't say what to do.
;; Or use Customize interface.
(setq org-hide-leading-stars t)
(setq org-return-follows-link t)

;; "org" because C-h f org-mode RET says that org-mode is defined in org.el
(eval-after-load "org"
  '(progn
     ;; Establishing your own keybindings for org-mode.
     ;; Variable org-mode-map is available only after org.el or org.elc is loaded.
     (define-key org-mode-map (kbd "<C-M-return>") 'org-insert-heading-respect-content)
     (define-key org-mode-map (kbd "<M-right>") nil) ; erasing a keybinding.
     (define-key org-mode-map (kbd "<M-left>") nil) ; erasing a keybinding.

     (defun my-org-mode-hook ()
       ;; The following two lines of code is run from the mode hook.
       ;; These are for buffer-specific things.
       ;; In this setup, you want to enable flyspell-mode
       ;; and run org-reveal for every org buffer.
       (flyspell-mode 1)
       (org-reveal))
     (add-hook 'org-mode-hook 'my-org-mode-hook)))

98voto

sanityinc Points 9156

Code enveloppé dans eval-after-load sera exécutée qu'une seule fois, de sorte qu'il est généralement utilisé pour effectuer une installation telles que le réglage par défaut global des valeurs et des comportements. Un exemple pourrait être la mise en place d'un raccourcis par défaut pour un mode particulier. En eval-after-load code, il n'y a pas de notion de "tampon".

Crochets en Mode exécuté une fois pour chaque mémoire tampon dans laquelle le mode est activé, de sorte qu'ils sont utilisés pour chaque configuration de la mémoire tampon. Mode crochets sont donc courir au plus tard eval-after-load code; cela leur permet de prendre des mesures fondées sur ces renseignements que si d'autres modes sont activés dans le tampon courant.

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