This commit does two things: - Renames def-advice! to defadvice!, in the spirit of naming convenience macros after the function/macro they enhance or replace. - Correct the names of advice functions to indicate visibility and intent. A public advice function like doom-set-jump-a is meant to be used elsewhere. A private one like +dired--cleanup-header-line-a shouldn't -- it likely won't work anywhere but the function(s) it was made to advise.
42 lines
1.7 KiB
EmacsLisp
42 lines
1.7 KiB
EmacsLisp
;;; lang/nim/config.el -*- lexical-binding: t; -*-
|
||
|
||
(after! nim-mode
|
||
(defun +nim|init-nimsuggest-mode ()
|
||
"Conditionally load `nimsuggest-mode', instead of clumsily erroring out if
|
||
nimsuggest isn't installed."
|
||
(unless (stringp nimsuggest-path)
|
||
(setq nimsuggest-path (executable-find "nimsuggest")))
|
||
(when (and nimsuggest-path (file-executable-p nimsuggest-path))
|
||
(nimsuggest-mode)))
|
||
(add-hook 'nim-mode-hook #'+nim|init-nimsuggest-mode)
|
||
|
||
(when IS-WINDOWS
|
||
;; TODO File PR/report upstream (https://github.com/nim-lang/nim-mode)
|
||
(defadvice! +nim--suggest-get-dirty-dir-a ()
|
||
"The original `nimsuggest--get-dirty-dir' incorrectly extracts the frame
|
||
number from the string representation of `selected-frame', which can contain
|
||
characters that are illegal on Windows, causing invalid argument errors when
|
||
`nimsuggest--make-tempdir' tries to use it."
|
||
:override #'nimsuggest--get-dirty-dir
|
||
(let* ((frame-str (format "%s" (selected-frame)))
|
||
(frame-num-str (if (string-match " \\(0x[0-9a-z]+\\)>$" frame-str)
|
||
(match-string 1 frame-str))))
|
||
(file-name-as-directory (concat nimsuggest-dirty-directory frame-num-str))))
|
||
|
||
;; TODO File PR/report upstream (https://github.com/nim-lang/nim-mode)
|
||
(defadvice! +nim--suggest-get-temp-file-name-a (path)
|
||
"Removes invalid characters from the temp file path, including the unicode
|
||
character that colon is replaced with, which is known to cause issues on
|
||
windows."
|
||
:filter-return #'nimsuggest--get-temp-file-name
|
||
(replace-regexp-in-string "[꞉* |<>\"?*]" "" path)))
|
||
|
||
(map! :localleader
|
||
:map nim-mode-map
|
||
"b" #'nim-compile))
|
||
|
||
|
||
(use-package! flycheck-nim
|
||
:when (featurep! :tools flycheck)
|
||
:after nim-mode)
|
||
|