[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#31981: Fix 'flymake-proc-legacy-flymake' temporary file deletion bug
From: |
Noam Postavsky |
Subject: |
bug#31981: Fix 'flymake-proc-legacy-flymake' temporary file deletion bug |
Date: |
Thu, 29 Aug 2019 12:04:57 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.1.92 (windows-nt) |
Joel Rosdahl <joel@rosdahl.net> writes:
> On Wed, 28 Aug 2019 at 01:38, Noam Postavsky <npostavs@gmail.com> wrote:
>> If I'm reading flymake-proc-init-create-temp-buffer-copy correctly, it
>> actually makes a new temporary file (say T1), but the file name is stored in
>> a single variable, so Emacs effectively forgets about the original file T.
>
> The create-temp-f parameter to flymake-proc-init-create-temp-buffer-copy is in
> practice flymake-proc-create-temp-inplace, which always creates the same
> result
> for a given file-name and prefix. And file-name and prefix are the same for
> both modification A and B (since it's the same file). Or am I missing
> something?
No, it's just me who missed this. There's a lot of indirection, and I
didn't read that carefully.
> but I just learnt to my surprise that global defvar-ed
> variables are still dynamically scoped.
Well, they would be unusable otherwise, since global vars don't have any
lexical scope as such.
> + ;; Make cleanup-f see the temporary file names
> + ;; created by its corresponding init function
> + ;; (bug#31981).
> + (let ((flymake-proc--temp-source-file-name
> + (process-get proc
> 'flymake-proc--temp-source-file-name))
> + (flymake-proc--temp-master-file-name
> + (process-get proc
> 'flymake-proc--temp-master-file-name)))
> + (funcall cleanup-f)))))
A little awkward, but that's proably the best we can do without changing
the signature of cleanup-f (which I guess would be much more
troublesome).