Friday, July 7, 2023

Re: vim9 Equivalence of __FILE__, __LINE__, and __FUNCTION__ usage in C++

This deal with <stack> is displaying last tree called function and line.

echomsg expand('<stack>')->split('<SNR>')[-1]->substitute('\d\+_\(\w\+\)\[\(\d\+\)\]', '\1: \2', "")

Thank you Bram.
Nicolas

Le ven. 7 juil. 2023 à 21:57, Nicolas <nivaemail@gmail.com> a écrit :
Oh thank you a lot Bram and all of you. It's helpful to know where we come from.
In code, in Life too ;)

Thank you
Nicolas

Le ven. 7 juil. 2023 à 04:19, Bram Moolenaar <Bram@moolenaar.net> a écrit :

Yegappan wrote:

> On Tue, Jul 4, 2023 at 1:11 PM Lifepillar <lifepillar@lifepillar.me> wrote:
> >
> > On 2023-07-04, Nicolas <nivaemail@gmail.com> wrote:
> > > Hi,
> > >
> > > Is there an equivalence in vim9 of  __FILE__, __LINE__, and __FUNCTION__
> > > usage in C++
> > ><https://stackoverflow.com/questions/597078/file-line-and-function-usage-in-c>
> >
> >
> > For __LINE__ and __FUNCTION__, I don't know what "equivalent"
> > alternative to suggest, but if you elaborate on what your goal is, it
> > will be easier to help.
> >
>
> You can try using <script>, <sflnum> or <stack>:
>
> https://vimhelp.org/cmdline.txt.html#%3Cscript%3E
> https://vimhelp.org/cmdline.txt.html#%3Csflnum%3E
> https://vimhelp.org/cmdline.txt.html#%3Cstack%3E

Expanding "<stack>" gives you the most information.  But the form is a
bit hard to parse, because it was kept compact.  With some effort you
can parse it back into a list of function calls and script commands.
You can use "getscriptinfo()" to get the script file name from the
script ID, which is inside the function name after <SNR>:
        <SNR>74_OuterFunc[7]

Here "74" is the script ID.  Inside the script you may find
s:OuterFunc() or just OuterFunc() (esp. in Vim 9 script).

"[7]" indicates line 7 of the function.  To see what script line that is
you can go to the line where the function is defined with ":func" or
":def" and then go that many lines down: "7j".  When line continuation
is used it may be off by a few lines.  And line insert/delete need to be
taken into account.

For interactive debugging the "where" command can be used.  You need to
set a breakpoint or use ":debug command args".  See ":help debug-mode".

--
Why is it that pizza is made round, packed in a square box,
and eaten as a triangle?

 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

--
--
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 a topic in the Google Groups "vim_use" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/vim_use/ocLlQ9TpSXI/unsubscribe.
To unsubscribe from this group and all its topics, send an email to vim_use+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/vim_use/20230707021852.1BCCC1C09A9%40moolenaar.net.

--
--
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+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/vim_use/CAOKxv4FGTUNqu6h9bq%2Byo7ihGMOSAjRix5SZstrjJHtXTNsO8g%40mail.gmail.com.

No comments: