• In vim, how to tell which version of a syntax file is being used?

    From Kenny McCormack@21:1/5 to All on Sat Feb 15 16:27:05 2025
    Overall problem: I'm trying to debug a problem in the syntax highlighting
    of a particular shell script.

    I want to know if there is some variable that is set by the syntax
    apparatus that tells me either or both of:

    1) What version of sh.vim was used?
    2) The full path of the used sh.vim file?

    --
    I don't do things wrong.
    I do things right.

    I'm a legitimate person.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to Kenny McCormack on Sat Feb 15 23:29:23 2025
    On 15.02.2025 17:27, Kenny McCormack wrote:
    Overall problem: I'm trying to debug a problem in the syntax highlighting
    of a particular shell script.

    I want to know if there is some variable that is set by the syntax
    apparatus that tells me either or both of:

    1) What version of sh.vim was used?
    2) The full path of the used sh.vim file?


    If in doubt I'm inspecting (according to :help) what Vim shows me
    when I'm typing ':set rtp'. There's a couple directories and mine
    shows (for and on a Unix system) '/usr/share/vim/vim73' so my 'sh'
    default syntax file would be '/usr/share/vim/vim73/syntax/sh.vim'.

    But there's more directories shown in that path list that appear
    before the '/usr/share' path, and I have also a local directory '~/.vim/after/syntax/sh/...' where some changes to the default
    behavior for 'sh' are defined.

    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kenny McCormack@21:1/5 to janis_papanagnou+ng@hotmail.com on Sun Feb 16 01:25:40 2025
    In article <vor4g5$7l11$1@dont-email.me>,
    Janis Papanagnou <janis_papanagnou+ng@hotmail.com> wrote:
    On 15.02.2025 17:27, Kenny McCormack wrote:
    Overall problem: I'm trying to debug a problem in the syntax highlighting
    of a particular shell script.

    I want to know if there is some variable that is set by the syntax
    apparatus that tells me either or both of:

    1) What version of sh.vim was used?
    2) The full path of the used sh.vim file?


    If in doubt I'm inspecting (according to :help) what Vim shows me
    when I'm typing ':set rtp'. There's a couple directories and mine
    shows (for and on a Unix system) '/usr/share/vim/vim73' so my 'sh'
    default syntax file would be '/usr/share/vim/vim73/syntax/sh.vim'.

    But there's more directories shown in that path list that appear
    before the '/usr/share' path, and I have also a local directory >'~/.vim/after/syntax/sh/...' where some changes to the default
    behavior for 'sh' are defined.

    Right. I am familiar with all that.

    But (IMNSHO, of course) those all fit in the "kludgey workarounds" category.
    I mean, they are indirect ways of coming to an approximation of the truth.

    What I really want (and my reason for posting this thread) is to know if
    there is a direct (not directory) way to actually get the information, not
    an approximation.

    Isn't there some kind of "verbose mode" that makes VIM tell you every file
    it sources (as it is sourcing it)? That would be closer to the truth, but still not ideal.

    Incidentally, I did put a sh.vim in my locatel syntax directory, and was
    able to conclude, using inotifywait, that it was being sourced when a shell script as loaded in vim. But that also is in the "approximation" category.

    --
    The randomly chosen signature file that would have appeared here is more than 4 lines long. As such, it violates one or more Usenet RFCs. In order to remain in compliance with said RFCs, the actual sig can be found at the following URL:
    http://user.xmission.com/~gazelle/Sigs/GodDelusion

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Janis Papanagnou@21:1/5 to Kenny McCormack on Sun Feb 16 05:20:17 2025
    On 16.02.2025 02:25, Kenny McCormack wrote:
    In article <vor4g5$7l11$1@dont-email.me>,
    Janis Papanagnou <janis_papanagnou+ng@hotmail.com> wrote:
    On 15.02.2025 17:27, Kenny McCormack wrote:
    Overall problem: I'm trying to debug a problem in the syntax highlighting >>> of a particular shell script.

    I want to know if there is some variable that is set by the syntax
    apparatus that tells me either or both of:

    1) What version of sh.vim was used?
    2) The full path of the used sh.vim file?


    If in doubt I'm inspecting (according to :help) what Vim shows me
    when I'm typing ':set rtp'. There's a couple directories and mine
    shows (for and on a Unix system) '/usr/share/vim/vim73' so my 'sh'
    default syntax file would be '/usr/share/vim/vim73/syntax/sh.vim'.

    But there's more directories shown in that path list that appear
    before the '/usr/share' path, and I have also a local directory
    '~/.vim/after/syntax/sh/...' where some changes to the default
    behavior for 'sh' are defined.

    Right. I am familiar with all that.

    But (IMNSHO, of course) those all fit in the "kludgey workarounds" category. I mean, they are indirect ways of coming to an approximation of the truth.

    What I really want (and my reason for posting this thread) is to know if there is a direct (not directory) way to actually get the information, not
    an approximation.

    Isn't there some kind of "verbose mode" that makes VIM tell you every file
    it sources (as it is sourcing it)? That would be closer to the truth, but still not ideal.

    Incidentally, I did put a sh.vim in my locatel syntax directory, and was
    able to conclude, using inotifywait, that it was being sourced when a shell script as loaded in vim. But that also is in the "approximation" category.

    Hmm.., you were speaking about "an approximation of the truth".

    Well, in physics generally, and specifically in software, everything is
    sort of indirect (and even affected by user interaction). Even if Vim
    would provide a "verbose debug" option that would not be a guaranteed.
    So I'm not sure how much "direct" you intend, what level you dismiss,
    and what you'd accept. - For me the built-in paths would be reliable
    enough. Since no more certainty seems to be natively supported by Vim
    you'd either have to resort to such "workarounds"; since you mentioned 'inotifywait' I'd add 'strace' to that and look for the 'open()' calls.
    But maybe you prefer to inspect the Vim source code - but that appears complicated -, or add a diagnostic message in a self-compiled version?
    You see, it can be simple or arbitrary complex. - It depends on your
    demands - can you be more specific here? - and your grade of interest
    or paranoia. :-)

    Janis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Eric Pozharski@21:1/5 to Kenny McCormack on Sun Feb 16 15:29:42 2025
    with <voreqk$akck$1@news.xmission.com> Kenny McCormack wrote:
    In article <vor4g5$7l11$1@dont-email.me>, Janis Papanagnou <janis_papanagnou+ng@hotmail.com> wrote:
    On 15.02.2025 17:27, Kenny McCormack wrote:

    *SKIP* [ 2 lines 3 levels deep]
    I want to know if there is some variable that is set by the syntax
    apparatus that tells me either or both of:
    1) What version of sh.vim was used?
    2) The full path of the used sh.vim file?

    As I understand it -- no way. From what I see: vim can unload
    *specific* functions, hooks, maps, or somethingidefinetelymissing. vim doesn't[1] _unsource_ files, that's why it doesn't keep an index. That
    being said...

    *SKIP* [ 9 lines 2 levels deep]
    But (IMNSHO, of course) those all fit in the "kludgey workarounds"
    category. I mean, they are indirect ways of coming to an
    approximation of the truth.
    What I really want (and my reason for posting this thread) is to know
    if there is a direct (not directory) way to actually get the
    information, not an approximation.

    May I suggest:

    :h sourcep

    This is as close to trace as you can get. Otherwise, per
    janis_papanagnou+ng@, strace(1) is at your service. I can't comment on
    autocmd though (never needed them).

    *CUT* [ 7 lines 1 level deep]

    [1] It's "doesn't" and not "can't" because ":h breaka" suggests there're
    strings attached to (compiled?) code and lines of (sourced) files.
    Say, <syntax/vim.vim>, <indent/vim.vim>, (sic)
    <after/ftplugin/vim.vim>, and whatnot are all sourced files of
    VimBasic (sorry for tangent). Which file would be picked for
    ":breaka vim 42 vim.vim" is a mistery. (I'm not sure this is
    correct, examples are contradictory. See? VimBasic!)

    --
    Torvalds' goal for Linux is very simple: World Domination
    Stallman's goal for GNU is even simpler: Freedom

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jens Schweikhardt@21:1/5 to All on Sun Feb 16 22:27:34 2025
    Kenny McCormack <gazelle@shell.xmission.com> wrote
    in <voreqk$akck$1@news.xmission.com>:
    ...
    # Isn't there some kind of "verbose mode" that makes VIM tell you every file
    # it sources (as it is sourcing it)? That would be closer to the truth, but
    # still not ideal.

    Does :scriptnames work for you?

    Regards,

    Jens
    --
    Jens Schweikhardt https://www.schweikhardt.net/
    SIGSIG -- signature too long (core dumped)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kenny McCormack@21:1/5 to usenet@schweikhardt.net on Mon Feb 17 01:03:17 2025
    In article <m1f72mF7p5kU1@mid.individual.net>,
    Jens Schweikhardt <usenet@schweikhardt.net> wrote:
    Kenny McCormack <gazelle@shell.xmission.com> wrote
    in <voreqk$akck$1@news.xmission.com>:
    ...
    # Isn't there some kind of "verbose mode" that makes VIM tell you every file ># it sources (as it is sourcing it)? That would be closer to the truth, but ># still not ideal.

    Does :scriptnames work for you?

    It does. But it still looks to me like an approximation.
    I.e., still not ideal, but could be a possible workaround.

    Note that my VIM sessions tend to be very long-lived and I end up with
    dozens of files (i.e., buffers) loaded, so the output of :scriptnames is
    quite long and lists the syntax files for lots of different languages.

    --
    The randomly chosen signature file that would have appeared here is more than 4 lines long. As such, it violates one or more Usenet RFCs. In order to remain in compliance with said RFCs, the actual sig can be found at the following URL:
    http://user.xmission.com/~gazelle/Sigs/God

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)