GNU bug report logs -
#63896
[PATCH] Support annotating and sorting the project list during completion
Previous Next
Full log
Message #17 received at 63896 <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii <eliz <at> gnu.org> writes:
>> From: Spencer Baugh <sbaugh <at> janestreet.com>
>> Cc: 63896 <at> debbugs.gnu.org
>> Date: Tue, 13 Jun 2023 17:19:52 -0400
>>
>> >> + (cons (+ (* 100 compilation-num-errors-found)
>> >> + (* 10 compilation-num-warnings-found)
>> >
>> > Why "encode" these numbers in a single value? why not use a cons or a
>> > vector?
>>
>> I'd be happy to use a cons or a vector, or even a more complicated
>> structure, but I didn't see an easy way to do comparison of
>> complicated structures, for the sorting of projects based on their
>> annotation. For example, if I have values of the form
>> (num . (num num num))
>
> You'd need to write a custom comparison function, but why is that a
> problem?
Yes, but how does that get configured?
>> there's no way to know what sorting predicate to use for such values - I
>> need to be able to know which value should sort sort first, when I have
>> a pair of them.
>
> But the encoding scheme above provides the answer: you want errors to
> sort before the warnings. So it sounds like you already decided how
> to sort those, no?
Yes, but I mean that *this function* doesn't know, given some opaque
value returned by a user-provided annotation function, how to sort.
>> >> + (format-mode-line mode-line-process nil nil buf)))
>> >
>> > Do you really need to call format-mode-line? My advice is to stay
>> > away of that function: it could have unpleasant side effects.
>>
>> Annoyingly if I want to include the exit code of the compilation in the
>> annotation, the only place it's found is as a string in
>> mode-line-process. I could extract that string from mode-line-process
>> and use it, but I thought it would be a bad idea to depend on the exact
>> structure of what compile.el puts in mode-line-process. So I just
>> format-mode-line'd it.
>>
>> Would it be OK to make compile.el store the exit code as a number in a
>> variable and then use that? Then I wouldn't need to touch
>> mode-line-process at all.
>
> I don't see why you'd need that. Doesn't process-exit-status give you
> that value? mode-line-process is not some magic, it just accesses
> process information exposed via the different primitives.
For sure, process-exit-status gives me that value. But how do I get the
process to call it on? The process is dead at this point, so
(get-buffer-process "*compilation*") returns nil. Is there a way to get
the process associated with the buffer even though it's killed?
This bug report was last modified 73 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.