branch: elpa/flymake-collection
commit d09afd32d47f13f2a578314090799b4031525244
Author: Mohsin Kaleem <[email protected]>
Commit: Mohsin Kaleem <[email protected]>
(flymake-rest-define): Fix source-inplace doesn't cleanup
Before source-inplace used to generate a non-unique file-name and didn't
delete it on exit, now it does both although it'll disable a checker if
the cwd doesn't exist (which is the case for buffers in newly made
directories).
---
flymake-rest-define.el | 27 ++++++++++++++++-----------
1 file changed, 16 insertions(+), 11 deletions(-)
diff --git a/flymake-rest-define.el b/flymake-rest-define.el
index 2d5ce81fd7..a604571a43 100644
--- a/flymake-rest-define.el
+++ b/flymake-rest-define.el
@@ -111,9 +111,10 @@ diagnostics to parse this form should evaluate to nil."
(proc-symb (intern "proc"))
(source-symb (intern "fmqd-source"))
(current-diags-symb (intern "diag"))
- (cleanup-form (when (and (eq write-type 'file)
- (not source-inplace))
- `((delete-directory ,temp-dir-symb t))))
+ (cleanup-form (when (eq write-type 'file)
+ (if source-inplace
+ `((delete-file ,temp-file-symb))
+ `((delete-directory ,temp-dir-symb t)))))
(not-obsolete-form `((eq ,proc-symb (plist-get (buffer-local-value
'flymake-rest-define--procs ,source-symb) ',name)))))
;; Sanitise parsed inputs from `defs'.
(unless (memq write-type '(file pipe nil))
@@ -126,19 +127,23 @@ diagnostics to parse this form should evaluate to nil."
,@(when (eq write-type 'file)
`((,temp-dir-symb
,@(let ((forms (append (when source-inplace
- `((when-let ((file
(buffer-file-name)))
- (file-name-directory file))
- default-directory))
+ `((when-let ((dir (or (when-let
((file (buffer-file-name)))
+
(file-name-directory file))
+
default-directory)))
+ (unless (file-exists-p dir)
+ (error "Checker needs to
be run in the cwd, but the cwd doesn't exist: %s" dir))
+ dir)))
'((make-temp-file "flymake-" t)))))
(if (> (length forms) 1)
`((or ,@forms))
forms)))
(,temp-file-symb
- (concat
- (file-name-as-directory ,temp-dir-symb)
- (concat ".flymake_"
- (file-name-nondirectory (or (buffer-file-name)
- (buffer-name))))))))
+ (let ((temporary-file-directory ,temp-dir-symb)
+ (basename (file-name-nondirectory (or
(buffer-file-name)
+
(buffer-name)))))
+ (make-temp-file ".flymake_"
+ nil
+ (concat "_" basename))))))
,@(plist-get defs :pre-let))
;; With vars defined, do :pre-check.
,@(when-let ((pre-check (plist-get defs :pre-check)))