diff --git a/modules/editor/parinfer/config.el b/modules/editor/parinfer/config.el index 92c0eb90a..e13f31e14 100644 --- a/modules/editor/parinfer/config.el +++ b/modules/editor/parinfer/config.el @@ -1,48 +1,51 @@ ;;; editor/parinfer/config.el -*- lexical-binding: t; -*- -(if (not (featurep! +rust)) - (use-package! parinfer - :hook ((emacs-lisp-mode - clojure-mode - scheme-mode - lisp-mode - racket-mode - hy-mode) . parinfer-mode) - :init - (setq parinfer-extensions - '(defaults - pretty-parens - smart-tab - smart-yank)) - (when (featurep! :editor evil +everywhere) - (push 'evil parinfer-extensions)) - :config - (map! :map parinfer-mode-map - "\"" nil ; smartparens handles this - :i "" #'parinfer-smart-tab:dwim-right-or-complete - :i "" #'parinfer-smart-tab:dwim-left - :localleader - :desc "Toggle parinfer-mode" "m" #'parinfer-toggle-mode)) - (defvar parinfer-rust--doom-lib-name (cond ((eq system-type 'darwin) - "parinfer-rust-darwin.so") - ((eq system-type 'gnu/linux) - "parinfer-rust-linux.so") - ((eq system-type 'windows-nt) - "parinfer-rust-windows.dll"))) - (use-package! parinfer-rust-mode - :hook ((emacs-lisp-mode +(use-package! parinfer + :unless (featurep! +rust) + :hook ((emacs-lisp-mode clojure-mode scheme-mode lisp-mode racket-mode - hy-mode) . parinfer-rust-mode) - :init - (setq! parinfer-rust-library (concat user-emacs-directory - ".local/etc/parinfer-rust/" - parinfer-rust--doom-lib-name)) - :config - (map! :map parinfer-rust-mode-map - :localleader - :desc "Switch parinfer-rust-mode" "m" #'parinfer-rust-switch-mode - :desc "Temporarily disable parinfer-rust-mode" "M" - #'parinfer-rust-switch-mode))) + hy-mode) . parinfer-mode) + :init + (setq parinfer-extensions + '(defaults + pretty-parens + smart-tab + smart-yank)) + (when (featurep! :editor evil +everywhere) + (push 'evil parinfer-extensions)) + :config + (map! :map parinfer-mode-map + "\"" nil ; smartparens handles this + :i "" #'parinfer-smart-tab:dwim-right-or-complete + :i "" #'parinfer-smart-tab:dwim-left + :localleader + "m" #'parinfer-toggle-mode)) +(use-package! parinfer-rust-mode + :when (featurep! +rust) + :when (bound-and-true-p module-file-suffix) + :hook ((emacs-lisp-mode + clojure-mode + scheme-mode + lisp-mode + racket-mode + hy-mode) . parinfer-rust-mode) + :init + (setq! parinfer-rust-library + (concat user-emacs-directory + ".local/etc/parinfer-rust/" + (cond ((eq system-type 'darwin) "parinfer-rust-darwin.so") + ((eq system-type 'gnu/linux) "parinfer-rust-linux.so") + ((eq system-type 'windows-nt) "parinfer-rust-windows.dll") + ((eq system-type 'berkeley-unix "libparinfer_rust.so")))) + parinfer-rust-auto-download + (if (eq system-type 'berkeley-unix) + nil + t)) + :config + (map! :map parinfer-rust-mode-map + :localleader + "m" #'parinfer-rust-switch-mode + "M" #'parinfer-rust-toggle-disable)) diff --git a/modules/editor/parinfer/doctor.el b/modules/editor/parinfer/doctor.el new file mode 100644 index 000000000..4cf942123 --- /dev/null +++ b/modules/editor/parinfer/doctor.el @@ -0,0 +1,11 @@ +;;; editor/parinfer/doctor.el -*- lexical-binding: t; -*- + +(when (featurep! +rust) + (unless (fboundp 'module-load) + (warn! "Your emacs wasn't built with dynamic modules support. `parinfer-rust-mode' won't work")) + (when (and (eq system-type 'berkeley-unix) + (not (file-readable-p + (concat user-emacs-directory ".local/etc/parinfer-rust/libparinfer_rust.so")))) + (warn! (concat "Could not read " user-emacs-directory + ".local/etc/parinfer-rust/libparinfer_rust.so. " + "`parinfer-rust-mode' won't work")))) diff --git a/modules/editor/parinfer/packages.el b/modules/editor/parinfer/packages.el index c8bb373f2..437b9dbe3 100644 --- a/modules/editor/parinfer/packages.el +++ b/modules/editor/parinfer/packages.el @@ -13,4 +13,6 @@ (if (featurep! +rust) (package! parinfer-rust-mode :pin "c825606e6aca4a2ed18c0af321df5f36a3c8c774") - (package! parinfer :pin "8659c99a9475ee34af683fdf8f272728c6bebb3a")) + (package! parinfer + :recipe (:host github :repo "emacsattic/parinfer") + :pin "8659c99a9475ee34af683fdf8f272728c6bebb3a"))