Update parinfer module to comply with review.

Also add support for BSD systems.

Signed-off-by: Johan Thoren <johan@thoren.xyz>
This commit is contained in:
Johan Thoren 2021-02-27 21:01:19 +01:00
parent ec747395c6
commit 4ff23752f2
No known key found for this signature in database
GPG key ID: C8808B69584976F6
3 changed files with 59 additions and 43 deletions

View file

@ -1,48 +1,51 @@
;;; editor/parinfer/config.el -*- lexical-binding: t; -*- ;;; editor/parinfer/config.el -*- lexical-binding: t; -*-
(if (not (featurep! +rust)) (use-package! parinfer
(use-package! parinfer :unless (featurep! +rust)
:hook ((emacs-lisp-mode :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 "<tab>" #'parinfer-smart-tab:dwim-right-or-complete
:i "<backtab>" #'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
clojure-mode clojure-mode
scheme-mode scheme-mode
lisp-mode lisp-mode
racket-mode racket-mode
hy-mode) . parinfer-rust-mode) hy-mode) . parinfer-mode)
:init :init
(setq! parinfer-rust-library (concat user-emacs-directory (setq parinfer-extensions
".local/etc/parinfer-rust/" '(defaults
parinfer-rust--doom-lib-name)) pretty-parens
:config smart-tab
(map! :map parinfer-rust-mode-map smart-yank))
:localleader (when (featurep! :editor evil +everywhere)
:desc "Switch parinfer-rust-mode" "m" #'parinfer-rust-switch-mode (push 'evil parinfer-extensions))
:desc "Temporarily disable parinfer-rust-mode" "M" :config
#'parinfer-rust-switch-mode))) (map! :map parinfer-mode-map
"\"" nil ; smartparens handles this
:i "<tab>" #'parinfer-smart-tab:dwim-right-or-complete
:i "<backtab>" #'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))

View file

@ -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"))))

View file

@ -13,4 +13,6 @@
(if (featurep! +rust) (if (featurep! +rust)
(package! parinfer-rust-mode :pin "c825606e6aca4a2ed18c0af321df5f36a3c8c774") (package! parinfer-rust-mode :pin "c825606e6aca4a2ed18c0af321df5f36a3c8c774")
(package! parinfer :pin "8659c99a9475ee34af683fdf8f272728c6bebb3a")) (package! parinfer
:recipe (:host github :repo "emacsattic/parinfer")
:pin "8659c99a9475ee34af683fdf8f272728c6bebb3a"))