> -----Original Message-----
> From: A.J.Mechelynck [mailto:[EMAIL PROTECTED]
> Sent: Thursday, October 12, 2006 8:47 PM
> To: David Fishburn
> Cc: [email protected]
> Subject: Re: VimL and Exuberant tags - Suggestions please
>
> David Fishburn wrote:
> [...]
> > When variables are identified we strip off the scope:
> > let s:ignoreNextCursorMovedI = 0 ==>
> ignoreNextCursorMovedI Should
> > the scope be left on ==> s:ignoreNextCursorMovedI
>
> How are scopes handled in other languages?
>
> Notice that varname (in a function) is the same as l:varname
> while varname (in a script, but outside of all functions) is
> the same as g:varname. Similarly, s:funcname is the same as
> <SID>funcname
>
> If you identify scopes, should or shouldn't ctags qualify the
> non-global variables by their script (if script-local) or
> script and function (if function-local)? (I see you mention
> this in a further paragraph. If it's not too hard to program,
> it might be useful as an option.)
>
> And how to treat buffer- and window-local variables?
Basically I am saying this, consider the code snippet:
let g:var_global_scope = 1
let s:var_script_scope = 1
let var_script_default_scope = 1
function mydict.len() dict
let var_in_func = 2
let s:script_var_in_func = 2
return len(self.data)
endfunction
What I am suggesting is we do not remove the scoping at the start of the
variable. So in the case above, we would create the following tags:
Variable
--------
g:var_global_scope
s:var_script_scope
var_script_default_scope
These 2 variables are ignored since they were used inside of a function:
let var_in_func = 2
let s:script_var_in_func = 2
I would like to leave the scoping on, since it provides additional
information:
g:var_global_scope -> var_global_scope
s:var_script_scope -> var_script_scope
You don't know if this is a script, global, buffer, window, tab, scoped
variable.
You would assume they were all global unless otherwise referenced.
>
> >
> >
> > Instead of simply grouping everything under variables, should we
> > distinguish between different types?
> > let forms#form = {
> > \ 'title': 'Address Entry Form',
> > \ 'fields': [],
> > \ 'defaultbutton': 'ok',
> > \ 'fieldMap': {},
> > \ 'hotkeyMap': {},
> > \ }
> >
> > Right now this is identified as a variable, should we
> identify it as a
> > Dictionary by adding another kind of tag?
> [...]
>
> When a script has
>
> :let var1 = var2
>
> there is nothing there (maybe nothing in the script) which
> says whether the variable in question is a "simple" variable
> (Number/String), a List, or a Dictionary. Wouldn't it be a
> headbreaker to try to label all cases correctly?
Right, I wasn't looking for anything earth shattering here.
let var1 = var2
let var1 = {...}
let var1 = [...]
Does provide us with additional information if we wish to use it.
Dave