Re: Location list entries for unsaved buffer open a new buffer

2023-10-24 Thread Yegappan Lakshmanan
On Sat, Oct 21, 2023 at 10:08 AM Lifepillar 
wrote:

> On 2023-10-21, Yegappan Lakshmanan  wrote:
> > On Sat, Oct 21, 2023 at 7:09 AM Lifepillar 
> wrote:
> >> How do I generate location list entries that refer to the proper unsaved
> >> buffer?
> >>
> >>
> > There is a item in the  todo list for more than 20 years now for this:
> >
> > -   Add %b to 'errorformat': buffer number. (Yegappan Lakshmanan / Suresh
> > Govindachar)
>
> :-) I have found the following workaround: I pass the buffer number to
>

I have created the PR https://github.com/vim/vim/pull/13419 to support this.
Can you try out the diff in the PR and let me know if you see any issues?

- Yegappan


> the callback, then I iterate over each parsed line and manually set the
> buffer:
>
> def Callback(channel: channel, msg: string, bufnr: number, ...)
>   [...]
>   var what = getqflist({"lines": [msg], "efm": efm})
>
>   for item in what.items
> item["bufnr"] = bufnr
>   endfor
>
>   setloclist(winid, what.items, "a")
> enddef
>
> Life.
>
>
>

-- 
-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_use+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_use/CAAW7x7kU69qOtyy_UYWk_iKeH9pEXfAEPAir7Jf0E8FLyb4wFw%40mail.gmail.com.


Re: Location list entries for unsaved buffer open a new buffer

2023-10-21 Thread Lifepillar
On 2023-10-21, Yegappan Lakshmanan  wrote:
> On Sat, Oct 21, 2023 at 7:09 AM Lifepillar  wrote:
>> How do I generate location list entries that refer to the proper unsaved
>> buffer?
>>
>>
> There is a item in the  todo list for more than 20 years now for this:
>
> -   Add %b to 'errorformat': buffer number. (Yegappan Lakshmanan / Suresh
> Govindachar)

:-) I have found the following workaround: I pass the buffer number to
the callback, then I iterate over each parsed line and manually set the
buffer:

def Callback(channel: channel, msg: string, bufnr: number, ...)
  [...]
  var what = getqflist({"lines": [msg], "efm": efm})

  for item in what.items
item["bufnr"] = bufnr
  endfor

  setloclist(winid, what.items, "a")
enddef

Life.

-- 
-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_use+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_use/uh10ir%24u9l%241%40ciao.gmane.io.


Re: Location list entries for unsaved buffer open a new buffer

2023-10-21 Thread Yegappan Lakshmanan
Hi,

On Sat, Oct 21, 2023 at 7:09 AM Lifepillar  wrote:

> I have a function that pipes a buffer into an external program, then
> parses its output in a callback and adds the parsed results to
> a location list. Simplified code for the callback:
>
> def Callback(channel: job, msg: string, winid: number, efm: string,
> cwd: string)
>   silent execute "lcd" cwd
>   var what = getqflist({"lines": [msg], "efm": efm})
>   silent lcd -
>   setloclist(winid, what.items, "a")
> enddef
>
> The lines to be parsed have a pretty standard format:
>
> filename:line:col message
>
> The program reads from stdin, hence `filename` is passed as an argument
> to the program. The program simply puts whatever filename it gets into
> its output messages.
>
> This works fine for buffers backed up by a file: I pass the buffer's
> name as the filename argument. My problem is that I don't know how to
> create an entry in the location list for an unsaved buffer. Passing
> something like '[No Name]', 'unnamed', or similar does not work. The
> location list ends up having entries that look like this:
>
> unnamed|1 col 8 E123| some message
>
> If the unsaved buffer ia buffer 1, then the message above is parsed as:
>
> {'items': [{'bufnr': 2, 'lnum': 1, 'col': 8, 'text': 'some message',
> ...}]}
>
> Therefore, selecting such entries causes a new buffer 2 to be created.
>
> How do I generate location list entries that refer to the proper unsaved
> buffer?
>
>
There is a item in the  todo list for more than 20 years now for this:

-   Add %b to 'errorformat': buffer number. (Yegappan Lakshmanan / Suresh
Govindachar)

- Yegappan

-- 
-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_use+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_use/CAAW7x7nVk9-jZ1f%2B-9hKuHUyBmvNLm56FG4-e02vuxHamvXX0g%40mail.gmail.com.