setting variable '(global-devil-mode t) does not work
franzmondlichtmann opened this issue · comments
I defined the following in the custom variables section below: '(global-devil-mode t)
Nevertheless, devil mode is not enabled at emacs start-up.
The custom shortcut to switch to global-devil-mode works fine: (global-set-key (kbd "C-,") 'global-devil-mode))
Only other plugin I have installed is the catppuccin-theme and the plugin manager elpaca, which work fine.
(defvar elpaca-installer-version 0.6)
(defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory))
(defvar elpaca-builds-directory (expand-file-name "builds/" elpaca-directory))
(defvar elpaca-repos-directory (expand-file-name "repos/" elpaca-directory))
(defvar elpaca-order '(elpaca :repo "https://github.com/progfolio/elpaca.git"
:ref nil
:files (:defaults "elpaca-test.el" (:exclude "extensions"))
:build (:not elpaca--activate-package)))
(let* ((repo (expand-file-name "elpaca/" elpaca-repos-directory))
(build (expand-file-name "elpaca/" elpaca-builds-directory))
(order (cdr elpaca-order))
(default-directory repo))
(add-to-list 'load-path (if (file-exists-p build) build repo))
(unless (file-exists-p repo)
(make-directory repo t)
(when (< emacs-major-version 28) (require 'subr-x))
(condition-case-unless-debug err
(if-let ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
((zerop (call-process "git" nil buffer t "clone"
(plist-get order :repo) repo)))
((zerop (call-process "git" nil buffer t "checkout"
(or (plist-get order :ref) "--"))))
(emacs (concat invocation-directory invocation-name))
((zerop (call-process emacs nil buffer nil "-Q" "-L" "." "--batch"
"--eval" "(byte-recompile-directory \".\" 0 'force)")))
((require 'elpaca))
((elpaca-generate-autoloads "elpaca" repo)))
(progn (message "%s" (buffer-string)) (kill-buffer buffer))
(error "%s" (with-current-buffer buffer (buffer-string))))
((error) (warn "%s" err) (delete-directory repo 'recursive))))
(unless (require 'elpaca-autoloads nil t)
(require 'elpaca)
(elpaca-generate-autoloads "elpaca" repo)
(load "./elpaca-autoloads")))
(add-hook 'after-init-hook #'elpaca-process-queues)
(elpaca `(,@elpaca-order))
;;install packages
;; Install use-package support
(elpaca elpaca-use-package
;; Enable :elpaca use-package keyword.
(elpaca-use-package-mode)
;; Assume :elpaca t unless otherwise specified.
(setq elpaca-use-package-by-default t))
;; Block until current queue processed.
(elpaca-wait)
;;When installing a package which modifies a form used at the top-level
;;(e.g. a package which adds a use-package key word),
;;use `elpaca-wait' to block until that package has been installed/configured.
;;For example:
;;(use-package general :demand t)
;;(elpaca-wait)
;; Expands to: (elpaca evil (use-package evil :demand t))
(use-package catppuccin-theme
:demand t
:ensure t
:init
(setq catppuccin-flavor 'frappe)
:config
(load-theme 'catppuccin t))
(use-package devil
:demand t
:ensure t
:init
:config
(global-set-key (kbd "C-,") 'global-devil-mode))
;;Turns off elpaca-use-package-mode current declaration
;;Note this will cause the declaration to be interpreted immediately (not deferred).
;;Useful for configuring built-in emacs features.
(use-package emacs :elpaca nil :config (setq ring-bell-function #'ignore))
;; Don't install anything. Defer execution of BODY
(elpaca nil (message "deferred"))
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(display-line-numbers-type 'relative)
'(global-devil-mode t)
'(global-display-line-numbers-mode t))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
I gave this a quick try (testing on Emacs 29.1) and I think it may actually be a bug/feature in Emacs which only affects the fundamental mode buffers created during startup; the default initial buffer does not have devil-mode
enabled but the global mode is enabled (i.e. the global-devil-mode
variable value is t
). devil-mode
does get applied to most other buffers as well as new all buffers.
Testing with global-whitespace-mode
shows a similar issue, that the default initial buffer doesn't get the mode applied correctly.
This does not seem to be related to using the customization variable to enable the global mode; I see the same problem when loading the package and calling the function directly in my config file:
(when (require 'devil nil 'noerror)
(global-devil-mode))
...I had just never noticed the problem because I don't use the default initial buffer. The '*Async-native-compile-log' buffer also shows the same issue, if your startup happens to create one of those.