1

Я знаю, как проверить, была ли скомпилирована функция IN:

:echo has("syntax")

Как получить список всех возможных функций времени компиляции?

Пример (псевдокод):

foreach "feature" in "feature-list":
    print "has(feature)"

Цель: создать плагин vim для самостоятельного использования, который обнаруживает некоторые функции и "переключает" некоторые условия.

2 ответа2

1

Цель: создать плагин vim для самостоятельного использования, который обнаруживает некоторые функции и "переключает" некоторые условия.

Если вы "включаете" некоторые функции, вам все равно нужно знать их заранее. Что плохого в том, чтобы жестко запрограммировать их имена прямо в плагин ?!

Vim имеет ограниченные возможности для саморефлексии. Вы можете проанализировать вывод :version (который включает в себя список функций). Я также видел, как плагин анализирует определенную страницу справки (например, $VIMRUNTIME/doc/options.txt), чтобы получить список настроек, но я бы порекомендовал ни один из них, если они вам не нужны.

0

Это список возможных функций в моей версии Vim (7.3.315):

["all_builtin_terms", "amiga", "arabic", "arp", "autocmd", "balloon_eval", "balloon_multiline", "beos", "browse", "builtin_terms", "byte_offset", "cindent", "clientserver", "clipboard", "cmdline_compl", "cmdline_hist", "cmdline_info", "comments", "compatible", "cryptv", "cscope", "debug", "dialog_con", "dialog_gui", "diff", "digraphs", "dnd", "dos16", "dos32", "ebcdic", "emacs_tags", "eval", "ex_extra", "extra_search", "farsi", "file_in_path", "filterpipe", "find_in_path", "float", "fname_case", "folding", "footer", "fork", "fullscreen", "gettext", "gui", "gui_athena", "gui_gnome", "gui_gtk", "gui_gtk2", "gui_mac", "gui_macvim", "gui_motif", "gui_photon", "gui_running", "gui_win32", "gui_win32s", "hangul_input", "iconv", "insert_expand", "jumplist", "keymap", "langmap", "libcall", "linebreak", "lispindent", "listcmds", "localmap", "lua", "mac", "macunix", "menu", "mksession", "modify_fname", "mouse", "mouse_dec", "mouse_gpm", "mouse_netterm", "mouse_pterm", "mouse_sysmouse", "mouse_xterm", "mouseshape", "multi_byte", "multi_byte_encoding", "multi_byte_ime", "multi_lang", "mzscheme", "netbeans_enabled", "netbeans_intg", "odbeditor", "ole", "os2", "path_extra", "perl", "persistent_undo", "postscript", "printer", "profile", "python", "python3", "qnx", "quickfix", "reltime", "rightleft", "ruby", "scrollbind", "showcmd", "signs", "smartindent", "sniff", "spell", "startuptime", "statusline", "sun_workshop", "syntax", "syntax_items", "system", "tag_binary", "tag_old_static", "tag_any_white", "tcl", "terminfo", "termresponse", "textobjects", "tgetent", "title", "toolbar", "transparency", "unix", "user_commands", "vertsplit", "vim_starting", "viminfo", "virtualedit", "visual", "visualextra", "vms", "vreplace", "wildignore", "wildmenu", "win16", "win32", "win32unix", "win64", "win95", "winaltkeys", "windows", "writebackup", "xfontset", "xim", "xsmp", "xsmp_interact", "xterm_clipboard", "xterm_save", "x11"]

На его компиляцию ушло около 30 секунд :h feature-list .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .