Code Monkey home page Code Monkey logo

Comments (10)

raven42 avatar raven42 commented on June 18, 2024

This may be a limitation of ctags. Can you confirm the output of running ctags on the file to see if it has the "access" flag?

ctags --extras=+F -f - --format=2 --excmd=pattern --fields=nksSafet --sort=no --append=no -V --language-force=go --go-kinds=picsmtfv <file>

from tagbar.

XSven avatar XSven commented on June 18, 2024

This is the output:

ctags --extras=+F -f - --format=2 --excmd=pattern --fields=nksSafet --sort=no --append=no -V --language-force=go --go-kinds=picsmtfv pkg/knib-lib-gologger.go
  Option: --language-force=go
  Option: --go-kinds=picsmtfv
Initialize parser: Go
enable field "name": yes
enable field "input": yes
enable field "pattern": yes
Reading command line arguments
OPENING pkg/knib-lib-gologger.go as Go language file [new]
kniblog pkg/knib-lib-gologger.go        /^package kniblog$/;"   p       line:1
Logger  pkg/knib-lib-gologger.go        /^var Logger *zerolog.Logger$/;"        v       line:10 package:kniblog typeref:typename:*zerolog.Logger
writeClosersZerolog     pkg/knib-lib-gologger.go        /^var writeClosersZerolog []io.WriteCloser$/;"  v       line:11 package:kniblog typeref:typename:[]io.WriteCloser
LogSetupZerolog pkg/knib-lib-gologger.go        /^func LogSetupZerolog(logLevel int8, writers []io.Writer, writeClosers []io.WriteCloser) error {$/;"   f       line:13 package:kniblog typeref:typename:error  signature:(logLevel int8, writers []io.Writer, writeClosers []io.WriteCloser)   end:23
LogStopZerolog  pkg/knib-lib-gologger.go        /^func LogStopZerolog() []error {$/;"   f       line:25 package:kniblog typeref:typename:[]error        signature:()    end:35

from tagbar.

raven42 avatar raven42 commented on June 18, 2024

Ok this looks to be an issue with ctags itself then. Tagbar keys off the field "access:public" to help determine public/private status. Without that, it can't make the determination and avoids making an assumption that it is private. Here is an example from a C++ file that correctly labels the access mode:

fun     test.cpp        /^              void fun();$/;" p       line:6  class:A typeref:typename:void   file:   access:public   signature:()    end:6

You can open an issue on the universal-ctags github page. Once ctags supports it, we can confirm the correct behavior within tagbar. If you do open an issue on universal-ctags, feel free to link this issue to that one so we can help track it.

from tagbar.

XSven avatar XSven commented on June 18, 2024

Ok I will do but I do not understand why tagbar is able to mark ("-" minus sign) the variable

-writeClosersZerolog : []io.WriteCloser

as private and afterwards tagbar is not able to hide it using the "v" key?!

From what you have written it is not clear to me if we are talking about a universal-ctags bug or a missing feature for the Go programming language (maybe it is only a matter of taste).

from tagbar.

raven42 avatar raven42 commented on June 18, 2024

That is actually a good question. When I try to repro I don't see the access modifier in front. I just see writeClosersZerolog : []io.WriteCloser in my tagbar window without the - symbol.

I can confirm that when I open a C++ file that has the access modifiers in the ctags output, I see the - symbol in the tagbar window, and when I hit the v key it does hide these private variables. I wouldn't say it is an issue with the Go language itself, but just how ctags is presenting the data to tagbar.

Can you provide the file you are using as well as your vim version information?

from tagbar.

XSven avatar XSven commented on June 18, 2024

This
knib-lib-gologger.go.txt
is the file. Note that I had to add the additional extension .txt because github doesn't allow to attach .go files. My vim belongs to the package vim-enhanced-8.1.2424-1.ppc. The detailed version information is

vim --version
VIM - Vi IMproved 8.1 (2018 May 18, compiled Jun  2 2020 02:10:57)
Included patches: 1-2424
Compiled by <[email protected]>
Huge version without GUI.  Features included (+) or not (-):
+acl               -farsi             -mouse_sysmouse    -tag_old_static
+arabic            +file_in_path      +mouse_urxvt       -tag_any_white
+autocmd           +find_in_path      +mouse_xterm       -tcl
+autochdir         +float             +multi_byte        +termguicolors
-autoservername    +folding           +multi_lang        +terminal
-balloon_eval      -footer            -mzscheme          +terminfo
+balloon_eval_term +fork()            +netbeans_intg     +termresponse
-browse            +gettext           +num64             +textobjects
++builtin_terms    -hangul_input      +packages          +textprop
+byte_offset       +iconv             +path_extra        +timers
+channel           +insert_expand     -perl              +title
+cindent           +job               +persistent_undo   -toolbar
-clientserver      +jumplist          +popupwin          +user_commands
-clipboard         +keymap            +postscript        +vartabs
+cmdline_compl     +lambda            +printer           +vertsplit
+cmdline_hist      +langmap           +profile           +virtualedit
+cmdline_info      +libcall           +python/dyn        +visual
+comments          +linebreak         -python3           +visualextra
+conceal           +lispindent        +quickfix          +viminfo
+cryptv            +listcmds          +reltime           +vreplace
+cscope            +localmap          +rightleft         +wildignore
+cursorbind        -lua               -ruby              +wildmenu
+cursorshape       +menu              +scrollbind        +windows
+dialog_con        +mksession         +signs             +writebackup
+diff              +modify_fname      +smartindent       -X11
+digraphs          +mouse             -sound             -xfontset
-dnd               -mouseshape        +spell             -xim
-ebcdic            +mouse_dec         +startuptime       -xpm
+emacs_tags        -mouse_gpm         +statusline        -xsmp
+eval              -mouse_jsbterm     -sun_workshop      -xterm_clipboard
+ex_extra          +mouse_netterm     +syntax            -xterm_save
+extra_search      +mouse_sgr         +tag_binary
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
       defaults file: "$VIMRUNTIME/defaults.vim"
  fall-back for $VIM: "/opt/freeware/share/vim"
Compilation: /opt/freeware/bin/gcc -O2 -maix64 -D_LINUX_SOURCE_COMPAT -D_GNU_SOURCE -I/opt/freeware/include -I/usr/include -c -I. -Iproto -DHAVE_CONFIG_H     -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
Linking: /opt/freeware/bin/gcc -O2 -maix64 -D_LINUX_SOURCE_COMPAT -D_GNU_SOURCE -I/opt/freeware/include -I/usr/include   -L/opt/freeware/lib64 -L/opt/freeware/lib -L/usr/lib -Wl,-blibpath:/opt/freeware/lib64:/opt/freeware/lib:/usr/vac/lib:/usr/lib:/lib -L/usr/local/lib -o vim        -lm -lncurses -liconv -lintl

from tagbar.

raven42 avatar raven42 commented on June 18, 2024

Hmm. When I open this file, I don't see any access symbol in front of any of the variables.
image

Do you have a custom config for ctags / vim / tagbar that is adding this? Or maybe another extension that adds this somehow? I'm just running out of ideas myself. I do know that with tagbar, if it sees the "access" flag from ctags output, then it will use that to give the symbol in the display, but also will add the expected behavior for hiding / unhiding via the v keymap.

from tagbar.

XSven avatar XSven commented on June 18, 2024

These are my tagbar related configurations

nn <silent> <unique> <Leader>tb :TagbarToggle<CR>
let g:tagbar_position = 'topleft vertical'
let g:tagbar_autofocus = 1
let g:tagbar_zoomwidth = 0
let g:tagbar_foldlevel = 0
let g:tagbar_sort = 1
let g:tagbar_compact = 1

I have the vim-go plugin installed but it is not loaded. This is my runtimepath

/home/micsw/.vim
/home/micsw/.vim/plugged/molokai
/home/micsw/.vim/plugged/vcscommand.vim
/home/micsw/.vim/plugged/vim-fugitive
/home/micsw/.vim/plugged/vim-numbertoggle
/home/micsw/.vim/plugged/tagbar
/home/micsw/.vim/plugged/vim-airline
/home/micsw/.vim/plugged/TaskList.vim
/home/micsw/.vim/plugged/vim-unimpaired
/home/micsw/.vim/plugged/vim-eunuch
/home/micsw/.vim/plugged/syntastic
/home/micsw/.vim/plugged/vim-yaml-folds
/opt/freeware/share/vim/vimfiles
/opt/freeware/share/vim/vim81
/opt/freeware/share/vim/vimfiles/after
/home/micsw/.vim/plugged/vim-yaml-folds/after
/home/micsw/.vim/after

from tagbar.

raven42 avatar raven42 commented on June 18, 2024

I took a look through the plugins and nothing jumps out that I can see that would impact how tagbar sees the tags. Sorry I can't be of more help on this. If you figure it out, I'd be curious how you are seeing the access modifier in your setup. Otherwise we can wait to see if the ctags enhancement gets implemented, and check to ensure the correct behavior here in tagbar.

from tagbar.

XSven avatar XSven commented on June 18, 2024

I have not yet raised a universal-ctags issue, but I have just detected that the "v" toggling seems to work for "struct"s instead of "funtion"s. I have opened the tagbar for test suite file knib-lib-gologger_test.go. asserter is a private field of the LogSetupZerologSuite struct and I can toggle its visibility with "v"

▾+LogSetupZerologSuite : struct
    [fields]
   -asserter : *require.Assertions

This is the corresponding ctags output

ctags --extras=+F -f - --format=2 --excmd=pattern --fields=nksSafet --sort=no --append=no -V --language-force=go --go-kinds=picsmtfv pkg/knib-lib-gologger_test.go
  Option: --language-force=go
  Option: --go-kinds=picsmtfv
Initialize parser: Go
enable field "name": yes
enable field "input": yes
enable field "pattern": yes
Reading command line arguments
OPENING pkg/knib-lib-gologger_test.go as Go language file [new]
symtbl[:=] *root*<-byteSliceWriter/20084e98 (line: 13)
symtbl[<>] byteSliceWriter->20084e98
symtbl[>|] byteSliceWriter->20084e98
symtbl[< ] byteSliceWriter->20084e98
symtbl[:=] *root*<-byteSliceWriterCloser/20085808 (line: 24)
symtbl[<>] byteSliceWriterCloser->20085808
symtbl[>|] byteSliceWriterCloser->20085808
symtbl[< ] byteSliceWriterCloser->20085808
symtbl[<>] byteSliceWriterCloser->20085808
symtbl[>|] byteSliceWriterCloser->20085808
symtbl[< ] byteSliceWriterCloser->20085808
symtbl[:=] *root*<-LogSetupZerologSuite/20086528 (line: 41)
symtbl[<>] LogSetupZerologSuite->20086528
symtbl[>|] LogSetupZerologSuite->20086528
symtbl[< ] LogSetupZerologSuite->20086528
symtbl[<>] LogSetupZerologSuite->20086528
symtbl[>|] LogSetupZerologSuite->20086528
symtbl[< ] LogSetupZerologSuite->20086528
symtbl[<>] LogSetupZerologSuite->20086528
symtbl[>|] LogSetupZerologSuite->20086528
symtbl[< ] LogSetupZerologSuite->20086528
symtbl[<>] LogSetupZerologSuite->20086528
symtbl[>|] LogSetupZerologSuite->20086528
symtbl[< ] LogSetupZerologSuite->20086528
symtbl[<>] LogSetupZerologSuite->20086528
symtbl[>|] LogSetupZerologSuite->20086528
symtbl[< ] LogSetupZerologSuite->20086528
kniblog_test    pkg/knib-lib-gologger_test.go   /^package kniblog_test$/;"      p       line:1
byteSliceWriter pkg/knib-lib-gologger_test.go   /^type byteSliceWriter struct {$/;"     s       line:13 package:kniblog_test    end:16
logContent      pkg/knib-lib-gologger_test.go   /^      logContent []string$/;" m       line:15 struct:kniblog_test.byteSliceWriter     typeref:typename:[]string
Write   pkg/knib-lib-gologger_test.go   /^func (writer *byteSliceWriter) Write(p []byte) (n int, err error) {$/;"       f       line:18 struct:kniblog_test.byteSliceWriter     typeref:typename:(n int, err error)     signature:(p []byte)    end:22
byteSliceWriterCloser   pkg/knib-lib-gologger_test.go   /^type byteSliceWriterCloser struct {$/;"       s       line:24 package:kniblog_test    end:28
logContent      pkg/knib-lib-gologger_test.go   /^      logContent []string$/;" m       line:26 struct:kniblog_test.byteSliceWriterCloser       typeref:typename:[]string
isClosed        pkg/knib-lib-gologger_test.go   /^      isClosed   bool$/;"     m       line:27 struct:kniblog_test.byteSliceWriterCloser       typeref:typename:bool
Write   pkg/knib-lib-gologger_test.go   /^func (writer *byteSliceWriterCloser) Write(p []byte) (n int, err error) {$/;" f       line:30 struct:kniblog_test.byteSliceWriterCloser       typeref:typename:(n int, err error)     signature:(p []byte)    end:34
Close   pkg/knib-lib-gologger_test.go   /^func (writer *byteSliceWriterCloser) Close() error {$/;"      f       line:36 struct:kniblog_test.byteSliceWriterCloser       typeref:typename:error  signature:()    end:39
LogSetupZerologSuite    pkg/knib-lib-gologger_test.go   /^type LogSetupZerologSuite struct {$/;"        s       line:41 package:kniblog_test    end:48
asserter        pkg/knib-lib-gologger_test.go   /^      asserter         *require.Assertions$/;"        m       line:43 struct:kniblog_test.LogSetupZerologSuite        typeref:typename:*require.Assertions
writers pkg/knib-lib-gologger_test.go   /^      writers          []io.Writer$/;"        m       line:44 struct:kniblog_test.LogSetupZerologSuite        typeref:typename:[]io.Writer
byteWriters     pkg/knib-lib-gologger_test.go   /^      byteWriters      []*byteSliceWriter$/;" m       line:45 struct:kniblog_test.LogSetupZerologSuite        typeref:typename:[]*byteSliceWriter
writeClosers    pkg/knib-lib-gologger_test.go   /^      writeClosers     []io.WriteCloser$/;"   m       line:46 struct:kniblog_test.LogSetupZerologSuite        typeref:typename:[]io.WriteCloser
byteWriteClosers        pkg/knib-lib-gologger_test.go   /^      byteWriteClosers []*byteSliceWriterCloser$/;"   m       line:47 struct:kniblog_test.LogSetupZerologSuite        typeref:typename:[]*byteSliceWriterCloser
SetupTest       pkg/knib-lib-gologger_test.go   /^func (suite *LogSetupZerologSuite) SetupTest() {$/;"  f       line:50 struct:kniblog_test.LogSetupZerologSuite        signature:()    end:63
TestLogSetupZerologSuite        pkg/knib-lib-gologger_test.go   /^func TestLogSetupZerologSuite(t *testing.T) {$/;"     f       line:65 package:kniblog_test    signature:(t *testing.T)        end:67
TestSetupAcceptsWritersAndWriteClosers  pkg/knib-lib-gologger_test.go   /^func (suite *LogSetupZerologSuite) TestSetupAcceptsWritersAndWriteClosers() {$/;"     f       line:69 struct:kniblog_test.LogSetupZerologSuite        signature:()    end:74
logInAllLoglevels       pkg/knib-lib-gologger_test.go   /^func logInAllLoglevels() {$/;"        f       line:76 package:kniblog_test    signature:()    end:82
TestAllWritersAreRegistered     pkg/knib-lib-gologger_test.go   /^func (suite *LogSetupZerologSuite) TestAllWritersAreRegistered() {$/;"        f       line:84 struct:kniblog_test.LogSetupZerologSuite        signature:()    end:97
TestLogLevelIsPassedToLogger    pkg/knib-lib-gologger_test.go   /^func (suite *LogSetupZerologSuite) TestLogLevelIsPassedToLogger() {$/;"       f       line:99 struct:kniblog_test.LogSetupZerologSuite        signature:()    end:111
TestWriteClosersCloseOnLogStop  pkg/knib-lib-gologger_test.go   /^func (suite *LogSetupZerologSuite) TestWriteClosersCloseOnLogStop() {$/;"     f       line:113        struct:kniblog_test.LogSetupZerologSuite        signature:()    end:122

from tagbar.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.