On 09/02/09 05:40, Garrett Whelan wrote: > I would like to be able to access all the variables at a given time in > Vim without necessarily knowing what they are. Basically everything you > would see if you typed :let and :set. So in increasing order of difficulty > > 1. Is there a way to redirect the output from :let and :set? It would > be pretty simple to parse that up, but I can't figure it out.
:help :redir > 2. Is there a way to call functions in the Vim code from VimL? > Browsing through the source I see list_hashtable_vars seems to > have the info I need. You cannot access arbitrary functions in the binary code from vimscript. The only things you can execute from vimscript are vimscript functions, ex-commands, and keybindings, see :help function-list :help ex-cmd-index :help index.txt :help :normal You can view the C _source_ code if you've downloaded it, but of course this is done by loading the actual source files in the editor, not by disassembly. > 3. Is there a way to access the actual C data structures from VimL? > If I could read the various hashtables myself I could do what I > needed. AFAIK, there isn't -- nothing equivalent to the PEEK and POKE functions available in some versions of BASIC. > > I suspect there's no way to do any of this, but I thought I'd ask before > I took a more...cumbersome route. Oh, also what is this declaration > structure: > 2038 static void > 2039 list_func_vars(first) > 2040 int *first; > 2041 { > 2042 if (current_funccal != NULL) > 2043 list_hashtable_vars(¤t_funccal->l_vars.dv_hashtab, > 2044 (char_u *)"l:", FALSE, first); > 2045 } > > I've never seen that in C before. Declaring variables after the > arguments but before the body? > > --Whaledawg It's not variables, it's the arguments: "int *first" here means that "first", the argument, is a pointer to int. I'm told doing it this way rather than "static void list_func_vars(int *first)" makes the source more portable among various C compilers. IIUC, the Vim C source obeys the C89 standard, as shown by this line which I see in the logfile where I saved the stdout/stderr of configure: checking for gcc option to accept ISO C89... none needed See an explanation of Vim source coding style at ":help coding-style", and this particular case somewhat below ":help style-examples", in the section starting "Functions start with:". Best regards, Tony. -- Pure drivel tends to drive ordinary drivel off of the TV screen. --~--~---------~--~----~------------~-------~--~----~ You received this message from the "vim_dev" maillist. For more information, visit http://www.vim.org/maillist.php -~----------~----~----~----~------~----~------~--~---