diff --git a/modules/lang/emacs-lisp/autoload.el b/modules/lang/emacs-lisp/autoload.el index 5709ead5f..6c0f83b78 100644 --- a/modules/lang/emacs-lisp/autoload.el +++ b/modules/lang/emacs-lisp/autoload.el @@ -148,3 +148,12 @@ verbosity when editing a file in `doom-private-dir' or `doom-emacs-dir'." " " (default-value 'flycheck-emacs-lisp-check-form) ")")))) + +;;;###autoload +(defun +emacs-lisp|read-only-packages () + "Enable `read-only-mode' if a package source file is opened. + +Packages are in `doom-packages-dir'. They shouldn't be modified directly." + (when-let* ((filename (buffer-file-name (buffer-base-buffer)))) + (when (file-in-directory-p filename doom-packages-dir) + (read-only-mode +1)))) diff --git a/modules/lang/emacs-lisp/config.el b/modules/lang/emacs-lisp/config.el index 2cd5525a7..a71e4f531 100644 --- a/modules/lang/emacs-lisp/config.el +++ b/modules/lang/emacs-lisp/config.el @@ -50,7 +50,8 @@ This marks a foldable marker for `outline-minor-mode' in elisp buffers.") rainbow-delimiters-mode highlight-quoted-mode ;; initialization - +emacs-lisp|extend-imenu)) + +emacs-lisp|extend-imenu + +emacs-lisp|read-only-packages)) ;; Flycheck's two emacs-lisp checkers produce a *lot* of false positives in ;; emacs configs, so we disable `emacs-lisp-checkdoc' and reduce the