|
@@ -860,6 +860,12 @@ found, otherwise returns nil." |
|
|
(when (derived-mode-p 'makefile-mode) |
|
|
(when (derived-mode-p 'makefile-mode) |
|
|
(puthash 'indent_style "tab" props)))) |
|
|
(puthash 'indent_style "tab" props)))) |
|
|
|
|
|
|
|
|
|
|
|
(when (fboundp 'editorconfig-auto-apply-enable) |
|
|
|
|
|
(add-hook 'editorconfig-conf-mode-hook |
|
|
|
|
|
'editorconfig-auto-apply-enable)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;; (when (fboundp 'editorconfig-charset-extras) |
|
|
;; (when (fboundp 'editorconfig-charset-extras) |
|
|
;; (add-hook 'editorconfig-custom-hooks |
|
|
;; (add-hook 'editorconfig-custom-hooks |
|
|
;; 'editorconfig-charset-extras)) |
|
|
;; 'editorconfig-charset-extras)) |
|
@@ -1132,6 +1138,13 @@ found, otherwise returns nil." |
|
|
(when (safe-require-or-eval 'flycheck) |
|
|
(when (safe-require-or-eval 'flycheck) |
|
|
(call-after-init (global-flycheck-mode))) |
|
|
(call-after-init (global-flycheck-mode))) |
|
|
|
|
|
|
|
|
|
|
|
(with-eval-after-load 'flycheck |
|
|
|
|
|
(when (fboundp 'flycheck-black-check-setup) |
|
|
|
|
|
(flycheck-black-check-setup))) |
|
|
|
|
|
|
|
|
|
|
|
(set-variable 'flycheck-python-mypy-ini |
|
|
|
|
|
".mypy.ini") |
|
|
|
|
|
|
|
|
(when (autoload-eval-lazily 'ilookup) |
|
|
(when (autoload-eval-lazily 'ilookup) |
|
|
(define-key ctl-x-map "d" 'ilookup-open-word)) |
|
|
(define-key ctl-x-map "d" 'ilookup-open-word)) |
|
|
|
|
|
|
|
@@ -2005,149 +2018,7 @@ and search from projectile root (if projectile is available)." |
|
|
(define-key ctl-x-map "T" 'git-worktree) |
|
|
(define-key ctl-x-map "T" 'git-worktree) |
|
|
(define-key ctl-x-map "W" 'git-walktree) |
|
|
(define-key ctl-x-map "W" 'git-walktree) |
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
|
|
|
|
|
;; editorconfig-auto-apply |
|
|
|
|
|
|
|
|
|
|
|
(define-minor-mode editorconfig-auto-apply-mode |
|
|
|
|
|
"When saving .editorconfig file update buffer configs." |
|
|
|
|
|
:lighter " ECAA" |
|
|
|
|
|
(if editorconfig-auto-apply-mode |
|
|
|
|
|
(add-hook 'after-save-hook |
|
|
|
|
|
'editorconfig-auto-apply-mode--run nil t) |
|
|
|
|
|
(remove-hook 'after-save-hook |
|
|
|
|
|
'editorconfig-auto-apply-mode--run t))) |
|
|
|
|
|
|
|
|
|
|
|
(defun editorconfig-auto-apply-enable () |
|
|
|
|
|
"Turn on `editorconfig-auto-apply-mode'." |
|
|
|
|
|
(unless editorconfig-auto-apply-mode |
|
|
|
|
|
(editorconfig-auto-apply-mode 1))) |
|
|
|
|
|
|
|
|
|
|
|
(defun editorconfig-auto-apply-disable () |
|
|
|
|
|
"Turn off `editorconfig-auto-apply-mode'." |
|
|
|
|
|
(when editorconfig-auto-apply-mode |
|
|
|
|
|
(editorconfig-auto-apply-mode -1))) |
|
|
|
|
|
|
|
|
|
|
|
(defun editorconfig-auto-apply-mode--run () |
|
|
|
|
|
"When saving .editorconfig file walk all buffers and update configs." |
|
|
|
|
|
(when (eq major-mode |
|
|
|
|
|
'editorconfig-conf-mode) |
|
|
|
|
|
(let ((dir (file-name-directory buffer-file-name))) |
|
|
|
|
|
(cl-dolist (buf (buffer-list)) |
|
|
|
|
|
(when (and (buffer-file-name buf) |
|
|
|
|
|
(file-in-directory-p (buffer-file-name buf) |
|
|
|
|
|
dir)) |
|
|
|
|
|
(with-current-buffer buf |
|
|
|
|
|
(editorconfig-mode-apply))))))) |
|
|
|
|
|
|
|
|
|
|
|
(add-hook 'editorconfig-conf-mode-hook |
|
|
|
|
|
'editorconfig-auto-apply-enable) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;; |
|
|
|
|
|
;; flychcek-black |
|
|
|
|
|
|
|
|
|
|
|
;; TODO: Move to https://github.com/10sr/flycheck-black-check |
|
|
|
|
|
(require 'flycheck nil t) |
|
|
|
|
|
|
|
|
|
|
|
(flycheck-define-checker python-black-check |
|
|
|
|
|
"A Python style checker." |
|
|
|
|
|
:command ("python3" "-m" "black" |
|
|
|
|
|
"--check" |
|
|
|
|
|
(config-file "--config" flycheck-black) |
|
|
|
|
|
source) |
|
|
|
|
|
:error-parser flycheck-parse-black-check |
|
|
|
|
|
;; :error-patterns |
|
|
|
|
|
;; ( |
|
|
|
|
|
;; (error line-start "error: cannot format " (file-name) ": " (message) ": " line ":" column ": " (one-or-more any) line-end) |
|
|
|
|
|
;; (error line-start (message) " " (file-name) line-end) |
|
|
|
|
|
;; ) |
|
|
|
|
|
:enabled (lambda () |
|
|
|
|
|
(or (not (flycheck-python-needs-module-p 'python-black-check)) |
|
|
|
|
|
(flycheck-python-find-module 'python-black-check "black"))) |
|
|
|
|
|
:verify (lambda (_) (flycheck-python-verify-module 'python-black-check "black")) |
|
|
|
|
|
:modes python-mode) |
|
|
|
|
|
|
|
|
|
|
|
;; (flycheck-define-checker python-black-diff |
|
|
|
|
|
;; "A Python style checker." |
|
|
|
|
|
;; :command ("python3" |
|
|
|
|
|
;; "-m" "black" |
|
|
|
|
|
;; (config-file "--config" flycheck-black) |
|
|
|
|
|
;; "--diff" source) |
|
|
|
|
|
;; :error-parser my-flycheck-parse-unified-diff |
|
|
|
|
|
;; :enabled (lambda () |
|
|
|
|
|
;; (or (not (flycheck-python-needs-module-p 'python-black)) |
|
|
|
|
|
;; (flycheck-python-find-module 'python-black "black"))) |
|
|
|
|
|
;; :verify (lambda (_) (flycheck-python-verify-module 'python-black "black")) |
|
|
|
|
|
;; :modes python-mode) |
|
|
|
|
|
|
|
|
|
|
|
(flycheck-def-config-file-var flycheck-black python-black-check "pyproject.toml" |
|
|
|
|
|
:safe #'stringp) |
|
|
|
|
|
|
|
|
|
|
|
(add-to-list 'flycheck-checkers |
|
|
|
|
|
'python-black-check) |
|
|
|
|
|
|
|
|
|
|
|
(defun flycheck-parse-black-check (output checker buffer) |
|
|
|
|
|
"Flycheck parser to check if reformat is required." |
|
|
|
|
|
(let ((result nil)) |
|
|
|
|
|
(with-temp-buffer |
|
|
|
|
|
(insert output) |
|
|
|
|
|
(save-match-data |
|
|
|
|
|
(goto-char (point-min)) |
|
|
|
|
|
(when (re-search-forward "^would reformat .*$" nil t) |
|
|
|
|
|
(add-to-list 'result (flycheck-error-new-at |
|
|
|
|
|
(point-min) |
|
|
|
|
|
nil |
|
|
|
|
|
'error |
|
|
|
|
|
;;(format "Black: %s" (match-string 0)) |
|
|
|
|
|
"Black: would reformat" |
|
|
|
|
|
:buffer buffer |
|
|
|
|
|
:checker checker))) |
|
|
|
|
|
(goto-char (point-min)) |
|
|
|
|
|
(when (re-search-forward "^error: .*$" nil t) |
|
|
|
|
|
(add-to-list 'result (flycheck-error-new-at |
|
|
|
|
|
(point-min) |
|
|
|
|
|
nil |
|
|
|
|
|
'error |
|
|
|
|
|
;; Fix not to include absolute file path |
|
|
|
|
|
(format "Black: %s" (match-string 0)) |
|
|
|
|
|
:buffer buffer |
|
|
|
|
|
:checker checker))))) |
|
|
|
|
|
result)) |
|
|
|
|
|
|
|
|
|
|
|
(defun my-flycheck-parse-unified-diff (output checker buffer) |
|
|
|
|
|
"Flycheck parser to parse diff output." |
|
|
|
|
|
(let ((source-line 0) |
|
|
|
|
|
(result ()) |
|
|
|
|
|
(hunk "HUNK")) |
|
|
|
|
|
(with-temp-buffer |
|
|
|
|
|
(insert output) |
|
|
|
|
|
(goto-char (point-min)) |
|
|
|
|
|
(while (not (eq (point) (point-max))) |
|
|
|
|
|
;; FIXME: Do not stop when no result |
|
|
|
|
|
(while (not (re-search-forward "^@@ -\\([0-9]+\\),\\([0-9]+\\) \\+\\([0-9]+\\),\\([0-9]+\\) @@.*$" (point-at-eol) t)) |
|
|
|
|
|
(forward-line 1) |
|
|
|
|
|
(goto-char (point-at-bol))) |
|
|
|
|
|
(setq source-line |
|
|
|
|
|
(string-to-number (match-string 1))) |
|
|
|
|
|
;; TODO: Add filename support |
|
|
|
|
|
(setq hunk |
|
|
|
|
|
(match-string 0)) |
|
|
|
|
|
;;(while (not (rearch-forward "^\\(-\\|\\+\\)"))) |
|
|
|
|
|
) |
|
|
|
|
|
(add-to-list 'result |
|
|
|
|
|
(flycheck-error-new-at |
|
|
|
|
|
0 |
|
|
|
|
|
nil |
|
|
|
|
|
'error |
|
|
|
|
|
"MESSAGE" |
|
|
|
|
|
:buffer buffer |
|
|
|
|
|
:checker checker |
|
|
|
|
|
:group hunk))) |
|
|
|
|
|
result)) |
|
|
|
|
|
|
|
|
|
|
|
(set-variable 'flycheck-python-mypy-ini |
|
|
|
|
|
".mypy.ini") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;; |
|
|
;;;;;;;;;;;;;;;;;;; |
|
|