From 1ef872854c877997eade712a6b7b254c74e79ccf Mon Sep 17 00:00:00 2001 From: Wolfgang Mehner Date: Sun, 5 Nov 2017 17:31:54 +0100 Subject: [PATCH] Move ftplugin plug-ins - Fix file skeletons. - Move filetype plug-ins. - Update the toolbox. - Documentation. Note: The filetype plug-ins have been moved, and are thus not loaded automatically anymore. Copy them from 'c-support/rc' to 'ftplugin', or add the commands there to your own filetype plug-ins. taken from WolfgangMehner/vim-plugins, revision https://github.com/WolfgangMehner/vim-plugins/commit/006ed31d2db6dfba767663cb044a982a517cb467 --- README.md | 24 +-- autoload/mmtoolbox/cmake.vim | 161 ++++++++++++++++---- autoload/mmtoolbox/doxygen.vim | 64 ++++---- autoload/mmtoolbox/make.vim | 10 +- autoload/mmtoolbox/tools.vim | 60 +++++--- c-support/README.md | 19 ++- c-support/doc/c-hotkeys.pdf | Bin 107366 -> 114292 bytes c-support/doc/c-hotkeys.tex | 38 ++--- c-support/rc/c.vim | 51 +++++++ c-support/rc/cpp.vim | 41 +++++ c-support/rc/custom.templates | 8 +- c-support/rc/custom_with_personal.templates | 8 +- c-support/rc/customization.cpp.vim | 48 ------ {ftplugin => c-support/rc}/make.vim | 15 +- c-support/templates/Templates | 8 +- doc/csupport.txt | 34 +++-- doc/toolbox.txt | 11 +- doc/toolboxcmake.txt | 12 +- doc/toolboxdoxygen.txt | 11 +- doc/toolboxmake.txt | 4 +- ftplugin/c.vim | 60 -------- plugin/c.vim | 8 +- project/release.lua | 10 +- 23 files changed, 422 insertions(+), 283 deletions(-) create mode 100644 c-support/rc/c.vim create mode 100644 c-support/rc/cpp.vim delete mode 100644 c-support/rc/customization.cpp.vim rename {ftplugin => c-support/rc}/make.vim (80%) delete mode 100644 ftplugin/c.vim diff --git a/README.md b/README.md index b7569c9..5ca2a4a 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,9 @@ Preface This repository is mainly for the use with plug-in managers. -The development happens here: -[WolfgangMehner/vim-plugins](https://github.com/WolfgangMehner/vim-plugins) +Have a look at the [Screenshot Page](https://wolfgangmehner.github.io/vim-plugins/csupport.html). + +The development happens in [WolfgangMehner/vim-plugins](https://github.com/WolfgangMehner/vim-plugins). -------------------------------------------------------------------------------- @@ -222,6 +223,10 @@ RELEASE NOTES FOR VERSION 6.2.1 - Fix a problem with the path when setting 'Run->executable to run'. - New and reworked templates. Change statement templates. +Note: The filetype plug-ins have been moved, and are thus not loaded +automatically anymore. Copy them from 'c-support/rc' to 'ftplugin', +or add the commands there to your own filetype plug-ins. + Note: This reworks most of the statement templates. The loop and if templates which do not introduce a block have been remove entirely, since the templates without blocks save barely any typing. They do not make much sense in visual @@ -280,12 +285,6 @@ ___The following files and extensions are for convenience only.___ ___c.vim will work without them.___ ___The settings are explained in the files themselves.___ - ftplugin/c.vim - Example filetype plug-in for C/C++: - defines additional maps - ftplugin/make.vim - Access hotkeys for make(1) in makefiles. - ftdetect/template.vim ftplugin/template.vim syntax/template.vim @@ -296,8 +295,6 @@ ___The settings are explained in the files themselves.___ c-support/doc/ChangeLog Complete change log. - c-support/rc/customization.cpp.vim - Additional mappings for C++. c-support/rc/customization.ctags Additional settings for use in .ctags to enable navigation through makefiles and qmake files with the @@ -317,6 +314,13 @@ ___The settings are explained in the files themselves.___ The file is commented. Append it to your .vimrc if you like. + c-support/rc/c.vim + c-support/rc/cpp.vim + Example filetype plug-in for C/C++: + defines additional maps + c-support/rc/make.vim + Access hotkeys for make(1) in makefiles. + c-support/rc/*.templates Sample template files for customization. Used by the template setup wizard. diff --git a/autoload/mmtoolbox/cmake.vim b/autoload/mmtoolbox/cmake.vim index d61667c..d986757 100644 --- a/autoload/mmtoolbox/cmake.vim +++ b/autoload/mmtoolbox/cmake.vim @@ -43,7 +43,7 @@ endif if &cp || ( exists('g:CMake_Version') && ! exists('g:CMake_DevelopmentOverwrite') ) finish endif -let g:CMake_Version= '0.9.2' " version number of this script; do not change +let g:CMake_Version= '0.9.3' " version number of this script; do not change " "------------------------------------------------------------------------------- " Auxiliary functions {{{1 @@ -291,7 +291,7 @@ let s:ErrorFormat_MakeAdditions = " " policy list {{{2 " -let s:Policies_Version = '2.8.12' +let s:Policies_Version = '3.10' let s:Policies_List = [ \ [ 'CMP0000', 'A minimum required CMake version must be specified.', '2.6.0' ], \ [ 'CMP0001', 'CMAKE_BACKWARDS_COMPATIBILITY should no longer be used.', '2.6.0' ], @@ -309,7 +309,7 @@ let s:Policies_List = [ \ [ 'CMP0013', 'Duplicate binary directories are not allowed.', '2.8.0' ], \ [ 'CMP0014', 'Input directories must have CMakeLists.txt.', '2.8.0' ], \ [ 'CMP0015', 'link_directories() treats paths relative to the source dir.', '2.8.1' ], - \ [ 'CMP0016', 'target_link_libraries() reports error if only argument is not a target.', '2.8.3' ], + \ [ 'CMP0016', 'target_link_libraries() reports error if its only argument is not a target.', '2.8.3' ], \ [ 'CMP0017', 'Prefer files from the CMake module directory when including from there.', '2.8.4' ], \ [ 'CMP0018', 'Ignore CMAKE_SHARED_LIBRARY__FLAGS variable.', '2.8.9' ], \ [ 'CMP0019', 'Do not re-expand variables in include and link information.', '2.8.11' ], @@ -317,6 +317,54 @@ let s:Policies_List = [ \ [ 'CMP0021', 'Fatal error on relative paths in INCLUDE_DIRECTORIES target property.', '2.8.12' ], \ [ 'CMP0022', 'INTERFACE_LINK_LIBRARIES defines the link interface.', '2.8.12' ], \ [ 'CMP0023', 'Plain and keyword target_link_libraries signatures cannot be mixed.', '2.8.12' ], + \ [ 'CMP0024', 'Disallow include export result.', '3.0' ], + \ [ 'CMP0025', 'Compiler id for Apple Clang is now AppleClang.', '3.0' ], + \ [ 'CMP0026', 'Disallow use of the LOCATION property for build targets.', '3.0' ], + \ [ 'CMP0027', 'Conditionally linked imported targets with missing include directories.', '3.0' ], + \ [ 'CMP0028', 'Double colon in target name means ALIAS or IMPORTED target.', '3.0' ], + \ [ 'CMP0029', 'The subdir_depends() command should not be called.', '3.0.' ], + \ [ 'CMP0030', 'The use_mangled_mesa() command should not be called.', '3.0' ], + \ [ 'CMP0031', 'The load_command() command should not be called.', '3.0' ], + \ [ 'CMP0032', 'The output_required_files() command should not be called.', '3.0' ], + \ [ 'CMP0033', 'The export_library_dependencies()command should not be called.', '3.0' ], + \ [ 'CMP0034', 'The utility_source() command should not be called.', '3.0' ], + \ [ 'CMP0035', 'The variable_requires() command should not be called.', '3.0' ], + \ [ 'CMP0036', 'The build_name() command should not be called.', '3.0' ], + \ [ 'CMP0037', 'Target names should not be reserved and should match a validity pattern.', '3.0' ], + \ [ 'CMP0038', 'Targets may not link directly to themselves.', '3.0' ], + \ [ 'CMP0039', 'Utility targets may not have link dependencies.', '3.0' ], + \ [ 'CMP0040', 'The target in the TARGET signature of add_custom_command() must exist and must be defined in current directory.', '3.0' ], + \ [ 'CMP0041', 'Error on relative include with generator expression.', '3.0' ], + \ [ 'CMP0042', 'MACOSX_RPATH is enabled by default.', '3.0' ], + \ [ 'CMP0043', 'Ignore COMPILE_DEFINITIONS_ properties', '3.0' ], + \ [ 'CMP0044', 'Case sensitive _COMPILER_ID generator expressions', '3.0' ], + \ [ 'CMP0045', 'Error on non-existent target in get_target_property.', '3.0' ], + \ [ 'CMP0046', 'Error on non-existent dependency in add_dependencies.', '3.0' ], + \ [ 'CMP0047', 'Use QCC compiler id for the qcc drivers on QNX.', '3.0' ], + \ [ 'CMP0048', 'The project() command manages VERSION variables.', '3.0' ], + \ [ 'CMP0049', 'Do not expand variables in target source entries.', '3.0' ], + \ [ 'CMP0050', 'Disallow add_custom_command SOURCE signatures.', '3.0' ], + \ [ 'CMP0051', 'List TARGET_OBJECTS in SOURCES target property.', '3.1' ], + \ [ 'CMP0052', 'Reject source and build dirs in installed INTERFACE_INCLUDE_DIRECTORIES.', '3.1' ], + \ [ 'CMP0053', 'Simplify variable reference and escape sequence evaluation.', '3.1' ], + \ [ 'CMP0054', 'Only interpret if() arguments as variables or keywords when unquoted.', '3.1' ], + \ [ 'CMP0055', 'Strict checking for the break() command.', '3.2' ], + \ [ 'CMP0056', 'Honor link flags in try_compile() source-file signature.', '3.2' ], + \ [ 'CMP0057', 'Support new if() IN_LIST operator.', '3.3' ], + \ [ 'CMP0058', 'Ninja requires custom command byproducts to be explicit.', '3.3' ], + \ [ 'CMP0059', 'Do not treat DEFINITIONS as a built-in directory property.', '3.3' ], + \ [ 'CMP0060', 'Link libraries by full path even in implicit directories.', '3.3' ], + \ [ 'CMP0061', 'CTest does not by default tell make to ignore errors (-i).', '3.3' ], + \ [ 'CMP0062', 'Disallow install() of export() result.', '3.3' ], + \ [ 'CMP0063', 'Honor visibility properties for all target types.', '3.3' ], + \ [ 'CMP0064', 'Recognize TEST as a operator for the if() command.', '3.4' ], + \ [ 'CMP0065', 'Do not add flags to export symbols from executables without the ENABLE_EXPORTS target property.', '3.4' ], + \ [ 'CMP0066', 'Honor per-config flags in try_compile() source-file signature.', '3.7' ], + \ [ 'CMP0067', 'Honor language standard in try_compile() source-file signature.', '3.8' ], + \ [ 'CMP0068', 'RPATH settings on macOS do not affect install_name.', '3.9' ], + \ [ 'CMP0069', 'INTERPROCEDURAL_OPTIMIZATION is enforced when enabled.', '3.9' ], + \ [ 'CMP0070', 'Define file(GENERATE) behavior for relative paths.', '3.10' ], + \ [ 'CMP0071', 'Let AUTOMOC and AUTOUIC process GENERATED files.', '3.10' ], \ [ 'CMP????', 'There might be more policies not mentioned here, since this list is not maintained automatically.', '?.?.?' ], \ ] " @@ -605,9 +653,9 @@ function! s:Run ( args, cmake_only ) " silent exe 'update' | " write source file if necessary cclose - " - exe 'lchdir '.fnameescape( s:BuildLocation ) - " + + exe 'cd '.fnameescape( s:BuildLocation ) + if a:cmake_only == 1 " let g:CMakeDebugStr .= 'CMake only, ' " debug @@ -636,7 +684,9 @@ function! s:Run ( args, cmake_only ) let &g:errorformat = errorf_saved " let g:CMakeDebugStr .= 'success: '.( v:shell_error == 0 ).', ' " debug - " + + cd - + " errors occurred? if v:shell_error != 0 botright cwindow @@ -644,7 +694,6 @@ function! s:Run ( args, cmake_only ) redraw " redraw after cclose, before echoing call s:ImportantMsg ( 'CMake : CMake finished successfully.' ) endif - " else " let g:CMakeDebugStr .= 'CMake & make, ' " debug @@ -705,7 +754,9 @@ function! s:Run ( args, cmake_only ) endif " let g:CMakeDebugStr .= 'success: '.( v:shell_error == 0 ).', ' " debug - " + + cd - + " errors occurred? if v:shell_error != 0 botright cwindow @@ -727,13 +778,10 @@ function! s:Run ( args, cmake_only ) call s:ImportantMsg ( 'CMake : make finished successfully.' ) endif endif - " endif - " - lchdir - - " + let g:CMakeDebugStr .= 'done' " debug - " + endfunction " ---------- end of function s:Run ---------- " "------------------------------------------------------------------------------- @@ -766,11 +814,41 @@ endfunction " ---------- end of function s:PolicyListText ---------- "------------------------------------------------------------------------------- " s:OpenBuffer : Open a scratch buffer. {{{1 +" +" If a buffer called 'buf_name' already exists, jump to that buffer. Otherwise, +" open a buffer of the given name an set it up as a scratch buffer. It is +" deleted after the window is closed. +" +" Options: +" - showdir: the directory will be shown in the buffer list (set buf=nowrite) +" +" Settings: +" - buftype=nofile/nowrite (depending on the option 'showdir') +" - bufhidden=wipe +" - swapfile=0 +" - tabstop=8 +" +" Parameters: +" buf_name - name of the buffer (string) +" ... - options (string) +" Returns: +" opened - true, if a new buffer was opened (integer) "------------------------------------------------------------------------------- -function! s:OpenBuffer ( buf_name ) +function! s:OpenBuffer ( buf_name, ... ) - " a buffer like this already existing? - if bufnr ( a:buf_name ) != -1 + " options + let btype = 'nofile' + + for val in a:000 + if val == 'showdir' + let btype = 'nowrite' " like 'nofile', but the directory is shown in the buffer list + else + call s:ErrorMsg ( 'CMake : Unknown buffer option: '.val ) + endif + endfor + + " a buffer like this already opened on the current tab page? + if bufwinnr ( a:buf_name ) != -1 " yes -> go to the window containing the buffer exe bufwinnr( a:buf_name ).'wincmd w' return 0 @@ -781,22 +859,44 @@ function! s:OpenBuffer ( buf_name ) " buffer exists elsewhere? if bufnr ( a:buf_name ) != -1 - " yes -> settings of the new buffer + " yes -> reuse it silent exe 'edit #'.bufnr( a:buf_name ) return 0 else " no -> settings of the new buffer - silent exe 'file '.escape( a:buf_name, ' ' ) - setlocal noswapfile - setlocal bufhidden=wipe - setlocal tabstop=8 + let &l:buftype = btype + let &l:bufhidden = 'wipe' + let &l:swapfile = 0 + let &l:tabstop = 8 + call s:RenameBuffer( a:buf_name ) endif return 1 endfunction " ---------- end of function s:OpenBuffer ---------- +"------------------------------------------------------------------------------- +" s:RenameBuffer : Rename a scratch buffer. {{{1 +" +" Parameters: +" name - the new name (string) +" Returns: +" - +"------------------------------------------------------------------------------- +function! s:RenameBuffer ( name ) + + silent exe 'keepalt file '.fnameescape( a:name ) + +endfunction " ---------- end of function s:RenameBuffer ---------- + "------------------------------------------------------------------------------- " s:UpdateBuffer : Update a scratch buffer. {{{1 +" +" Replace the text in the buffer with 'text'. +" +" Parameters: +" text - the text to place in the buffer (string) +" Returns: +" - "------------------------------------------------------------------------------- function! s:UpdateBuffer ( text ) @@ -956,23 +1056,28 @@ function! s:ShowCache ( args ) return endif + if s:OpenBuffer ( 'CMake - cache', 'showdir' ) + silent exe 'nmap q :close' + endif + " get the cache - exe 'lchdir '.fnameescape( s:BuildLocation ) + exe 'cd '.fnameescape( s:BuildLocation ) let [ success, text ] = s:TextFromSystem ( shellescape( s:CMake_Executable ).' -N '.args ) + let location = fnamemodify ( s:BuildLocation, ':p' ) - lchdir - + cd - if success == 0 + close + redraw " redraw after cclose, before echoing call s:WarningMsg ( 'CMake : Could not obtain the cache.' ) return endif - if s:OpenBuffer ( 'CMake - cache' ) - silent exe 'nmap q :close' - endif - + call s:RenameBuffer ( location.'/CMake - cache' ) call s:UpdateBuffer ( text ) + endfunction " ---------- end of function s:ShowCache ---------- "------------------------------------------------------------------------------- diff --git a/autoload/mmtoolbox/doxygen.vim b/autoload/mmtoolbox/doxygen.vim index 3287c82..48986bc 100644 --- a/autoload/mmtoolbox/doxygen.vim +++ b/autoload/mmtoolbox/doxygen.vim @@ -13,7 +13,7 @@ " Organization: " Version: see variable g:Doxygen_Version below " Created: 10.06.2012 -" Revision: 30.06.2014 +" Revision: 17.10.2017 " License: Copyright (c) 2012-2016, Wolfgang Mehner " This program is free software; you can redistribute it and/or " modify it under the terms of the GNU General Public License as @@ -29,7 +29,7 @@ "------------------------------------------------------------------------------- " Basic checks. {{{1 "------------------------------------------------------------------------------- -" + " need at least 7.0 if v:version < 700 echohl WarningMsg @@ -37,14 +37,14 @@ if v:version < 700 echohl None finish endif -" + " prevent duplicate loading " need compatible if &cp || ( exists('g:Doxygen_Version') && ! exists('g:Doxygen_DevelopmentOverwrite') ) finish endif -let g:Doxygen_Version= '0.9.2' " version number of this script; do not change -" +let g:Doxygen_Version= '0.9.3' " version number of this script; do not change + "------------------------------------------------------------------------------- " Auxiliary functions. {{{1 "------------------------------------------------------------------------------- @@ -509,9 +509,9 @@ function! s:Run ( args ) let cmdlinearg = a:args endif " :TODO:27.10.2013 19:28:WM: 'cmdlinearg' is not correctly escaped for use under Windows - " - exe 'lchdir '.fnameescape( fnamemodify( s:ConfigFile, ':p:h' ) ) - " + + exe 'cd '.fnameescape( fnamemodify( s:ConfigFile, ':p:h' ) ) + let warn_log_file_configured = '' " if ! filereadable( s:ConfigFile ) @@ -535,12 +535,12 @@ function! s:Run ( args ) " write both the log and the warning file silent exe ':!'.shellescape( s:Doxygen_Executable ).' '.cmdlinearg.' 1> '.shellescape( s:LogFile ).' 2> '.shellescape( s:WarningFile ) endif - " - lchdir - - " + + cd - + " process the warnings call s:Warnings () - " + endfunction " ---------- end of function s:Run ---------- " "------------------------------------------------------------------------------- @@ -589,18 +589,18 @@ endfunction " ---------- end of function s:EditConfig ---------- " s:ViewLog : Edit the Doxygen configuration file. {{{1 "------------------------------------------------------------------------------- function! s:ViewLog () - " + " go to the directory of 's:ConfigFile', so that the standard for 's:LogFile' works - exe 'lchdir '.fnameescape( fnamemodify( s:ConfigFile, ':p:h' ) ) - " - if ! filereadable ( s:LogFile ) - return s:ErrorMsg ( 'Doxygen : File not readable: '.s:LogFile ) - endif - " + exe 'cd '.fnameescape( fnamemodify( s:ConfigFile, ':p:h' ) ) + let logfile = fnamemodify( s:LogFile, ":p" ) - " - lchdir - - " + + cd - + + if ! filereadable ( logfile ) + return s:ErrorMsg ( 'Doxygen : File not readable: '.logfile ) + endif + exe 'sview '.fnameescape( logfile ) endfunction " ---------- end of function s:ViewLog ---------- " @@ -608,15 +608,19 @@ endfunction " ---------- end of function s:ViewLog ---------- " s:Warnings : Send the warning file through QuickFix. {{{1 "------------------------------------------------------------------------------- function! s:Warnings () - " + silent exe 'update' | " write source file if necessary cclose - " + " go to the directory of 's:ConfigFile', so that the standard for " 's:WarningFile' works - exe 'lchdir '.fnameescape( fnamemodify( s:ConfigFile, ':p:h' ) ) - " + exe 'cd '.fnameescape( fnamemodify( s:ConfigFile, ':p:h' ) ) + + let warnfile = fnamemodify( s:WarningFile, ":p" ) + + cd - + " any errors? - if getfsize( s:WarningFile ) > 0 + if getfsize( warnfile ) > 0 " " save the current settings let errorf_saved = &l:errorformat @@ -624,7 +628,7 @@ function! s:Warnings () " read the file and process the errors let &l:errorformat = s:ErrorFormat " - exe 'cgetfile '.fnameescape( s:WarningFile ) + exe 'cgetfile '.fnameescape( warnfile ) " " restore the old settings let &l:errorformat = errorf_saved @@ -634,9 +638,7 @@ function! s:Warnings () redraw " redraw after cclose, before echoing call s:ImportantMsg ( "Doxygen : no warnings/errors" ) endif - " - lchdir - - " + endfunction " ---------- end of function s:Warnings ---------- "------------------------------------------------------------------------------- diff --git a/autoload/mmtoolbox/make.vim b/autoload/mmtoolbox/make.vim index 09e92dc..200a47b 100644 --- a/autoload/mmtoolbox/make.vim +++ b/autoload/mmtoolbox/make.vim @@ -13,7 +13,7 @@ " Organization: " Version: see variable g:Make_Version below " Created: 06.05.2013 -" Revision: 07.10.2016 +" Revision: 17.10.2017 " License: Copyright (c) 2013-2015, Wolfgang Mehner " This program is free software; you can redistribute it and/or " modify it under the terms of the GNU General Public License as @@ -367,11 +367,11 @@ function! s:Run ( args ) if s:Makefile == '' exe 'make '.cmdlinearg else - exe 'lchdir '.fnameescape( fnamemodify( s:Makefile, ':p:h' ) ) - " + exe 'cd '.fnameescape( fnamemodify( s:Makefile, ':p:h' ) ) + exe 'make -f '.shellescape( s:Makefile ).' '.cmdlinearg - " - lchdir - + + cd - endif " botright cwindow diff --git a/autoload/mmtoolbox/tools.vim b/autoload/mmtoolbox/tools.vim index 7d05309..295681f 100644 --- a/autoload/mmtoolbox/tools.vim +++ b/autoload/mmtoolbox/tools.vim @@ -11,7 +11,7 @@ " Organization: " Version: see variable g:Toolbox_Version below " Created: 29.12.2012 -" Revision: 23.10.2014 +" Revision: 30.09.2017 " License: Copyright (c) 2012-2015, Wolfgang Mehner " This program is free software; you can redistribute it and/or " modify it under the terms of the GNU General Public License as @@ -42,7 +42,7 @@ if &cp || ( exists('g:Toolbox_Version') && g:Toolbox_Version != 'searching' && ! finish endif " -let s:Toolbox_Version= '1.2' " version number of this script; do not change +let s:Toolbox_Version = '1.3' " version number of this script; do not change " "---------------------------------------------------------------------- " --- Find Newest Version --- {{{2 @@ -265,24 +265,27 @@ endfunction " ---------- end of function mmtoolbox#tools#NewToolbox ------- " " Parameters: " toolbox - the toolbox (dict) -" name - the name of the tool (string) +" name_full - the full name of the tool (string) +" name - the short name of the tool (string) " file - the script (string) " Returns: " success - tool loaded without errors, but might still be disabled (integer) "------------------------------------------------------------------------------- -function! s:LoadTool ( toolbox, name, file ) - " - let toolbox = a:toolbox - let name = a:name - " +function! s:LoadTool ( toolbox, name_full, name, file ) + + let toolbox = a:toolbox + let name_full = a:name_full + let name = a:name + " try to load and initialize try " " get tool information - let retlist = mmtoolbox#{name}#GetInfo() + let retlist = {name_full}#GetInfo() " " assemble the entry let entry = { + \ "name_full" : a:name_full, \ "name" : name, \ "prettyname" : retlist[0], \ "version" : retlist[1], @@ -326,17 +329,19 @@ endfunction " ---------- end of function s:LoadTool ---------- " " Parameters: " toolbox - the toolbox (dict) -" name - the name of the tool (string) +" name_full - the full name of the tool (string) +" name - the short name of the tool (string) " file - the script (string) " Returns: " - "------------------------------------------------------------------------------- -function! s:RegisterTool ( toolbox, name, file ) +function! s:RegisterTool ( toolbox, name_full, name, file ) " " assemble the entry " - also record which tools was loaded later on, to keep creating correct " menus let entry = { + \ "name_full" : a:name_full, \ "name" : a:name, \ "filename" : a:file, \ "loaded" : 0, @@ -370,10 +375,16 @@ function! mmtoolbox#tools#Load ( toolbox, directories ) " " go through all dir/*.vim for file in split( glob (dir.'/*.vim'), '\n' ) - " - " the name is the basename of the file - let name = fnamemodify( file, ':t:r' ) - " + + if file =~ 'autoload[/\\]\(.\{-}\)[/\\]\{1,2}\([^/\\]\+\)\.vim$' + let mlist = matchlist( file, 'autoload[/\\]\(.\{-}\)[/\\]\{1,2}\([^/\\]\+\)\.vim$' ) + let name_full = substitute( mlist[1], '[/\\]', '#', 'g' ).'#'.mlist[2] + let name = mlist[2] + else + " invalid name + continue + endif + " do not process 'tools.vim' (this script) if name == 'tools' continue @@ -386,9 +397,9 @@ function! mmtoolbox#tools#Load ( toolbox, directories ) " " check whether to use the tool if s:GetToolConfig ( a:toolbox.plugin, name ) == 'yes' - call s:LoadTool ( a:toolbox, name, file ) + call s:LoadTool ( a:toolbox, name_full, name, file ) else - call s:RegisterTool ( a:toolbox, name, file ) + call s:RegisterTool ( a:toolbox, name_full, name, file ) endif " endfor @@ -434,7 +445,7 @@ function! s:LoadAdditionalTool ( toolbox_name, name ) " " load the tool let toolbox.unused[name].loaded = 1 - let success = s:LoadTool ( toolbox, name, toolbox.unused[name].filename ) + let success = s:LoadTool ( toolbox, toolbox.unused[name].name_full, name, toolbox.unused[name].filename ) " " create the menu entry if success @@ -463,15 +474,16 @@ function! mmtoolbox#tools#ToolEnabled ( toolbox, name ) if ! has_key ( a:toolbox.tools, a:name ) return 0 endif - " + + let entry = a:toolbox.tools[ a:name ] let enabled = 0 - " + try - let enabled = mmtoolbox#{a:name}#Property('get','enabled') + let enabled = {entry.name_full}#Property('get','enabled') catch /.*/ " fail quietly endtry - " + return enabled endfunction " ---------- end of function mmtoolbox#tools#ToolEnabled ---------- " @@ -585,7 +597,7 @@ function! mmtoolbox#tools#AddMaps ( toolbox ) " try " try to create the maps - call mmtoolbox#{entry.name}#AddMaps() + call {entry.name_full}#AddMaps() catch /.*/ " could not load the plugin: ? call s:ErrorMsg ( "Could not create maps for the tool \"".name."\" (".v:exception.")", @@ -626,7 +638,7 @@ function! s:CreateToolMenu ( toolbox, name, root, mleader ) " try " try to create the menu - call mmtoolbox#{entry.name}#AddMenu( menu_root, a:mleader ) + call {entry.name_full}#AddMenu( menu_root, a:mleader ) catch /.*/ " could not load the plugin: ? call s:ErrorMsg ( "Could not create menus for the tool \"".a:name."\" (".v:exception.")", diff --git a/c-support/README.md b/c-support/README.md index aadae84..720adcb 100644 --- a/c-support/README.md +++ b/c-support/README.md @@ -211,6 +211,10 @@ RELEASE NOTES FOR VERSION 6.2.1 - Fix a problem with the path when setting 'Run->executable to run'. - New and reworked templates. Change statement templates. +Note: The filetype plug-ins have been moved, and are thus not loaded +automatically anymore. Copy them from 'c-support/rc' to 'ftplugin', +or add the commands there to your own filetype plug-ins. + Note: This reworks most of the statement templates. The loop and if templates which do not introduce a block have been remove entirely, since the templates without blocks save barely any typing. They do not make much sense in visual @@ -269,12 +273,6 @@ ___The following files and extensions are for convenience only.___ ___c.vim will work without them.___ ___The settings are explained in the files themselves.___ - ftplugin/c.vim - Example filetype plug-in for C/C++: - defines additional maps - ftplugin/make.vim - Access hotkeys for make(1) in makefiles. - ftdetect/template.vim ftplugin/template.vim syntax/template.vim @@ -285,8 +283,6 @@ ___The settings are explained in the files themselves.___ c-support/doc/ChangeLog Complete change log. - c-support/rc/customization.cpp.vim - Additional mappings for C++. c-support/rc/customization.ctags Additional settings for use in .ctags to enable navigation through makefiles and qmake files with the @@ -306,6 +302,13 @@ ___The settings are explained in the files themselves.___ The file is commented. Append it to your .vimrc if you like. + c-support/rc/c.vim + c-support/rc/cpp.vim + Example filetype plug-in for C/C++: + defines additional maps + c-support/rc/make.vim + Access hotkeys for make(1) in makefiles. + c-support/rc/*.templates Sample template files for customization. Used by the template setup wizard. diff --git a/c-support/doc/c-hotkeys.pdf b/c-support/doc/c-hotkeys.pdf index e09531121731fe7a01f83d58d27df451bbf5897a..744a223a4f94058d97e8cfbeb14325bc05fa5f60 100644 GIT binary patch delta 42918 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 VJV-(mCKgUMb|f+~Q8_WB{{nXj5J~_5 delta 36015 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 +" (formerly Fritz Mehner ) +" +" ------------------------------------------------------------------------------ + +" Only do this when not done yet for this buffer +if exists("b:did_c_support_ftplugin") + finish +endif +let b:did_c_support_ftplugin = 1 + +" ---------- complete a classical C comment ---------------------------------- +" '/*' => '/* | */' (and surround selected area in visual mode) +"inoremap /* /**/ +"vnoremap /* s/**/p + +" ---------- complete a classical C multi-line comment ----------------------- +" '/*' => /* +" * | +" */ +"inoremap /* /*/kA + +" ---------- { always opens a block -------------------------------------- +"inoremap { {}O +"vnoremap { S{}Pk=iB + +" ---------- Set "maplocalleader" as configured using "g:C_MapLeader" -------- +call C_SetMapLeader () + +" ---------- Maps for the Make tool ------------------------------------------ + noremap rm :Make +inoremap rm :Make + noremap rmc :Make clean +inoremap rmc :Make clean + noremap rmd :Make doc +inoremap rmd :Make doc + noremap rma :MakeCmdlineArgs +inoremap rma :MakeCmdlineArgs + noremap rcm :MakeFile +inoremap rcm :MakeFile + +" ---------- Reset "maplocalleader" ------------------------------------------ +call C_ResetMapLeader () + diff --git a/c-support/rc/cpp.vim b/c-support/rc/cpp.vim new file mode 100644 index 0000000..3615a13 --- /dev/null +++ b/c-support/rc/cpp.vim @@ -0,0 +1,41 @@ +" ------------------------------------------------------------------------------ +" +" Vim filetype plugin file +" +" Language : C++ +" Plugin : c.vim +" Revision : 03.10.2017 +" Maintainer : Wolfgang Mehner +" +" ------------------------------------------------------------------------------ + +" Only do this when not done yet for this buffer +if exists("b:did_c_support_ftplugin") + finish +endif +let b:did_c_support_ftplugin = 1 + +" ---------- C++ I/O (speeds up typing) -------------------------------------- +"inoremap >> >> +"inoremap << << +"inoremap <<" << "" +"inoremap <<; << "\n"; + +" ---------- Set "maplocalleader" as configured using "g:C_MapLeader" -------- +call C_SetMapLeader () + +" ---------- Maps for the Make tool ------------------------------------------ + noremap rm :Make +inoremap rm :Make + noremap rmc :Make clean +inoremap rmc :Make clean + noremap rmd :Make doc +inoremap rmd :Make doc + noremap rma :MakeCmdlineArgs +inoremap rma :MakeCmdlineArgs + noremap rcm :MakeFile +inoremap rcm :MakeFile + +" ---------- Reset "maplocalleader" ------------------------------------------ +call C_ResetMapLeader () + diff --git a/c-support/rc/custom.templates b/c-support/rc/custom.templates index 390e493..0e5299d 100644 --- a/c-support/rc/custom.templates +++ b/c-support/rc/custom.templates @@ -9,10 +9,10 @@ SetStyle( 'C' ) § templates automatically included into new files § set the property to an empty string to disable the insertion -§SetProperty ( 'C::FileSkeleton::Header', 'Comments.file description impl' ) -§SetProperty ( 'C::FileSkeleton::Source', 'Comments.file description header' ) -§SetProperty ( 'Cpp::FileSkeleton::Header', 'Comments.file description impl' ) -§SetProperty ( 'Cpp::FileSkeleton::Source', 'Comments.file description header' ) +§SetProperty ( 'C::FileSkeleton::Header', 'Comments.file description header' ) +§SetProperty ( 'C::FileSkeleton::Source', 'Comments.file description impl' ) +§SetProperty ( 'Cpp::FileSkeleton::Header', 'Comments.file description header' ) +§SetProperty ( 'Cpp::FileSkeleton::Source', 'Comments.file description impl' ) § ------------------------------------------------------------- § A template definition is build like this: diff --git a/c-support/rc/custom_with_personal.templates b/c-support/rc/custom_with_personal.templates index d961f59..3c92305 100644 --- a/c-support/rc/custom_with_personal.templates +++ b/c-support/rc/custom_with_personal.templates @@ -36,10 +36,10 @@ SetStyle( 'C' ) § templates automatically included into new files § set the property to an empty string to disable the insertion -§SetProperty ( 'C::FileSkeleton::Header', 'Comments.file description impl' ) -§SetProperty ( 'C::FileSkeleton::Source', 'Comments.file description header' ) -§SetProperty ( 'Cpp::FileSkeleton::Header', 'Comments.file description impl' ) -§SetProperty ( 'Cpp::FileSkeleton::Source', 'Comments.file description header' ) +§SetProperty ( 'C::FileSkeleton::Header', 'Comments.file description header' ) +§SetProperty ( 'C::FileSkeleton::Source', 'Comments.file description impl' ) +§SetProperty ( 'Cpp::FileSkeleton::Header', 'Comments.file description header' ) +§SetProperty ( 'Cpp::FileSkeleton::Source', 'Comments.file description impl' ) § ------------------------------------------------------------- § A template definition is build like this: diff --git a/c-support/rc/customization.cpp.vim b/c-support/rc/customization.cpp.vim deleted file mode 100644 index eb882b2..0000000 --- a/c-support/rc/customization.cpp.vim +++ /dev/null @@ -1,48 +0,0 @@ -" ------------------------------------------------------------------------------ -" -" Vim filetype plugin file -" -" Language : C++ -" Plugin : c.vim -" Maintainer : Wolfgang Mehner -" -" ------------------------------------------------------------------------------ -" -" Only do this when not done yet for this buffer -" -if exists("b:did_CPP_ftplugin") - finish -endif -let b:did_CPP_ftplugin = 1 -" -"------------------------------------------------------------------------------- -" additional mapping : C++ I/O -"------------------------------------------------------------------------------- -" -inoremap >> >> -inoremap << << -inoremap <<" << "" -inoremap <<; << "\n"; -" -"------------------------------------------------------------------------------- -" set "maplocalleader" as configured using "g:C_MapLeader" -"------------------------------------------------------------------------------- -call C_SetMapLeader () -" -"------------------------------------------------------------------------------- -" additional mapping : Make tool -"------------------------------------------------------------------------------- - noremap rm :Make -inoremap rm :Make - noremap rmc :Make clean -inoremap rmc :Make clean - noremap rma :MakeCmdlineArgs -inoremap rma :MakeCmdlineArgs - noremap rcm :MakeFile -inoremap rcm :MakeFile -" -"------------------------------------------------------------------------------- -" reset "maplocalleader" -"------------------------------------------------------------------------------- -call C_ResetMapLeader () -" diff --git a/ftplugin/make.vim b/c-support/rc/make.vim similarity index 80% rename from ftplugin/make.vim rename to c-support/rc/make.vim index 7f8c27d..a1afd27 100644 --- a/ftplugin/make.vim +++ b/c-support/rc/make.vim @@ -3,8 +3,8 @@ " Vim filetype plugin file " " Language : Make -" Plugin : c.vim / latex.vim / ... -" Revision : 15.04.2017 +" Plugin : c.vim / latex-support.vim / ... +" Revision : 03.10.2017 " Maintainer : Wolfgang Mehner " (formerly Fritz Mehner ) " @@ -16,8 +16,10 @@ if exists("b:did_c_support_make") endif let b:did_c_support_make = 1 -" ---------- Maps for the Make tool ----------------------------- -" +" ---------- Set "maplocalleader" as configured using "g:C_MapLeader" -------- +"call C_SetMapLeader () + +" ---------- Maps for the Make tool ------------------------------------------ noremap rm :Make inoremap rm :Make noremap rmc :Make clean @@ -28,4 +30,7 @@ inoremap rmd :Make doc inoremap rma :MakeCmdlineArgs noremap rcm :MakeFile inoremap rcm :MakeFile -" + +" ---------- Reset "maplocalleader" ------------------------------------------ +"call C_ResetMapLeader () + diff --git a/c-support/templates/Templates b/c-support/templates/Templates index c18915d..32fd2e1 100644 --- a/c-support/templates/Templates +++ b/c-support/templates/Templates @@ -26,10 +26,10 @@ SetStyle( 'C' ) § templates automatically included into new files § set the property to an empty string to disable the insertion -SetProperty ( 'C::FileSkeleton::Header', 'Comments.file description impl' ) -SetProperty ( 'C::FileSkeleton::Source', 'Comments.file description header' ) -SetProperty ( 'Cpp::FileSkeleton::Header', 'Comments.file description impl' ) -SetProperty ( 'Cpp::FileSkeleton::Source', 'Comments.file description header' ) +SetProperty ( 'C::FileSkeleton::Header', 'Comments.file description header' ) +SetProperty ( 'C::FileSkeleton::Source', 'Comments.file description impl' ) +SetProperty ( 'Cpp::FileSkeleton::Header', 'Comments.file description header' ) +SetProperty ( 'Cpp::FileSkeleton::Source', 'Comments.file description impl' ) § ========================================================== § File Includes and Shortcuts diff --git a/doc/csupport.txt b/doc/csupport.txt index 849a0c1..d31a19b 100644 --- a/doc/csupport.txt +++ b/doc/csupport.txt @@ -1,4 +1,4 @@ -*csupport.txt* C/C++ Support Feb 05 2017 +*csupport.txt* C/C++ Support Oct 03 2017 C/C++ Support *c-support* *csupport* @@ -1067,7 +1067,8 @@ To switch the make tool box off add the following line to the file .vimrc > let g:C_UseTool_make = 'no' < -The hotkeys for the make tool are defined in the file ~/.vim/ftplugin/c.vim . +The maps for the make tool can be defined in the file '~/.vim/ftplugin/c.vim'. +Compare the example filetype plug-in 'c-support/rc/c.vim'. 1.8.2 Other Tools *csupport-toolbox-others* @@ -1864,17 +1865,17 @@ The file skeletons are controlled via these properties, which can be set in one of the template files. For each filetype, the headers and source files can be different: > - SetProperty ( 'C::FileSkeleton::Header', 'Comments.file description impl' ) - SetProperty ( 'C::FileSkeleton::Source', 'Comments.file description header' ) - SetProperty ( 'Cpp::FileSkeleton::Header', 'Comments.file description impl' ) - SetProperty ( 'Cpp::FileSkeleton::Source', 'Comments.file description header' ) + SetProperty ( 'C::FileSkeleton::Header', 'Comments.file description header' ) + SetProperty ( 'C::FileSkeleton::Source', 'Comments.file description impl' ) + SetProperty ( 'Cpp::FileSkeleton::Header', 'Comments.file description header' ) + SetProperty ( 'Cpp::FileSkeleton::Source', 'Comments.file description impl' ) < This inserts only comments to describe the file. To disable the insertion for one of these types, set the property to an empty string: > SetProperty ( 'C::FileSkeleton::Source', '' ) In general, these properties are semicolon-separated lists of templates to be inserted: > - SetProperty ( 'C::FileSkeleton::Source', 'Comments.file description header; ;Comments.all sections.implementation, C' ) + SetProperty ( 'C::FileSkeleton::Source', 'Comments.file description impl; ;Comments.all sections.implementation, C' ) This will insert the file description and the file section comments (see |csupport-comm-sections|). If a space appears as an entry in the list, an empty line is inserted: > @@ -2038,8 +2039,8 @@ See |folding| for more information on folding. 9. Additional Mappings *csupport-ad-mappings* ============================================================================== -There are a few additional filetype specific key mappings defined in -'~/.vim/ftplugin/c.vim'. +Additional mappings can be defined in the file '~/.vim/ftplugin/c.vim'. +Compare the example filetype plug-in 'c-support/rc/c.vim'. Complete a classical C comment: '/*' => '/* | */' (modes: i,v). @@ -2054,15 +2055,16 @@ Open a block (modes: i,v): } In visual mode the content of the new block will be indented. -The file customization.cpp.vim provides additional insert mode mappings to -facilitate writting cin and cout statements, e.g. +The file 'c-support/rc/cpp.vim' provides additional insert mode mappings to +facilitate writing cin and cout statements, e.g. > - '<<' -> ' << |' - '<<"' -> ' << "|" ' - '<<;' -> ' << "|\n";' - '>>' -> ' >> |' + '<<' -> ' << |' + '<<"' -> ' << "|" ' + '<<;' -> ' << "|\n";' + '>>' -> ' >> |' < -Copy this file to ~/.vim/ftplugin and rename it to 'cpp.vim'. +Copy the files 'c-support/rc/c.vim' or 'c-support/rc/cpp.vim' +to '~/.vim/ftplugin'. ============================================================================== 10. WINDOWS PARTICULARITIES *csupport-windows* diff --git a/doc/toolbox.txt b/doc/toolbox.txt index 4e2c0b8..b748197 100644 --- a/doc/toolbox.txt +++ b/doc/toolbox.txt @@ -1,8 +1,8 @@ -*toolbox.txt* MM Toolbox Support Oct 23 2014 +*toolbox.txt* MM Toolbox Support Sep 30 2017 MM Toolbox Support *toolbox* - Plug-in version 1.2 + Plug-in version 1.3 for Vim version 7.0 and above Wolfgang Mehner @@ -377,6 +377,13 @@ See also |toolbox-support-AddMenu()|. A. CHANGE LOG *toolbox-support-change-log* ============================================================================== +------------------------------------------------------------------------------ + RELEASE NOTES FOR VERSION 1.3 +------------------------------------------------------------------------------ + +- Change path handling to be more flexible with regards to file locations. +- Minor changes. + ------------------------------------------------------------------------------ RELEASE NOTES FOR VERSION 1.2 ------------------------------------------------------------------------------ diff --git a/doc/toolboxcmake.txt b/doc/toolboxcmake.txt index 71d102b..1856f79 100644 --- a/doc/toolboxcmake.txt +++ b/doc/toolboxcmake.txt @@ -1,8 +1,8 @@ -*toolboxcmake.txt* CMake Tool Feb 05 2016 +*toolboxcmake.txt* CMake Tool Oct 16 2017 CMake Tool *toolbox-cmake* - Plug-in version 0.9.2 + Plug-in version 0.9.3 for Vim version 7.0 and above Wolfgang Mehner @@ -385,6 +385,14 @@ value on the command line. A. CHANGE LOG *toolbox-cmake-change-log* ============================================================================== +------------------------------------------------------------------------------ + RELEASE NOTES FOR VERSION 0.9.3 +------------------------------------------------------------------------------ + +- Change: Do not use :lchdir internally, switch to :cd, which has less + side-effects. +- Minor changes and bugfixes. + ------------------------------------------------------------------------------ RELEASE NOTES FOR VERSION 0.9.2 ------------------------------------------------------------------------------ diff --git a/doc/toolboxdoxygen.txt b/doc/toolboxdoxygen.txt index e189a38..8997210 100644 --- a/doc/toolboxdoxygen.txt +++ b/doc/toolboxdoxygen.txt @@ -1,8 +1,8 @@ -*toolboxdoxygen.txt* Doxygen Tool Feb 14 2016 +*toolboxdoxygen.txt* Doxygen Tool Oct 16 2017 Doxygen Tool *toolbox-doxygen* - Plug-in version 0.9.2 + Plug-in version 0.9.3 for Vim version 7.0 and above Wolfgang Mehner @@ -290,6 +290,13 @@ The executable of doxywizard is set by g:Doxygen_WizardExec: > A. CHANGE LOG *toolbox-doxygen-change-log* ============================================================================== +------------------------------------------------------------------------------ + RELEASE NOTES FOR VERSION 0.9.3 +------------------------------------------------------------------------------ + +- Change: Do not use :lchdir internally, switch to :cd, which has less + side-effects. + ------------------------------------------------------------------------------ RELEASE NOTES FOR VERSION 0.9.2 ------------------------------------------------------------------------------ diff --git a/doc/toolboxmake.txt b/doc/toolboxmake.txt index c7ce6bb..883f5e4 100644 --- a/doc/toolboxmake.txt +++ b/doc/toolboxmake.txt @@ -1,4 +1,4 @@ -*toolboxmake.txt* Make Tool Oct 07 2016 +*toolboxmake.txt* Make Tool Oct 16 2017 Make Tool *toolbox-make* @@ -178,6 +178,8 @@ A. CHANGE LOG *toolbox-make-change-log* - Change: If make is not executable, still provide the functionality for finding targets in a Makefile. +- Change: Do not use :lchdir internally, switch to :cd, which has less + side-effects. ------------------------------------------------------------------------------ RELEASE NOTES FOR VERSION 1.1 diff --git a/ftplugin/c.vim b/ftplugin/c.vim deleted file mode 100644 index 1ecc7e6..0000000 --- a/ftplugin/c.vim +++ /dev/null @@ -1,60 +0,0 @@ -" ------------------------------------------------------------------------------ -" -" Vim filetype plugin file -" -" Language : C -" Plugin : c.vim -" Revision : 15.04.2017 -" Maintainer : Wolfgang Mehner -" (formerly Fritz Mehner ) -" -" ------------------------------------------------------------------------------ - -" Only do this when not done yet for this buffer -if exists("b:did_c_support_ftplugin") - finish -endif -let b:did_c_support_ftplugin = 1 - -"------------------------------------------------------------------------------- -" additional mapping : complete a classical C comment: '/*' => '/* | */' -"------------------------------------------------------------------------------- -inoremap /* /**/ -vnoremap /* s/**/p -" -"------------------------------------------------------------------------------- -" additional mapping : complete a classical C multi-line comment: -" '/*' => /* -" * | -" */ -"------------------------------------------------------------------------------- -inoremap /* /*/kA -" -"------------------------------------------------------------------------------- -" additional mapping : { always opens a block -"------------------------------------------------------------------------------- -inoremap { {}O -vnoremap { S{}Pk=iB -" -"------------------------------------------------------------------------------- -" set "maplocalleader" as configured using "g:C_MapLeader" -"------------------------------------------------------------------------------- -call C_SetMapLeader () -" -"------------------------------------------------------------------------------- -" additional mapping : Make tool -"------------------------------------------------------------------------------- - noremap rm :Make -inoremap rm :Make - noremap rmc :Make clean -inoremap rmc :Make clean - noremap rma :MakeCmdlineArgs -inoremap rma :MakeCmdlineArgs - noremap rcm :MakeFile -inoremap rcm :MakeFile -" -"------------------------------------------------------------------------------- -" reset "maplocalleader" -"------------------------------------------------------------------------------- -call C_ResetMapLeader () -" diff --git a/plugin/c.vim b/plugin/c.vim index cba8e9f..44209fc 100644 --- a/plugin/c.vim +++ b/plugin/c.vim @@ -2546,10 +2546,10 @@ function! s:RereadTemplates () call mmtemplates#core#ChangeSyntax ( g:C_Templates, 'comment', '§' ) " property: file skeletons - call mmtemplates#core#Resource ( g:C_Templates, 'add', 'property', 'C::FileSkeleton::Header', 'Comments.file description impl' ) - call mmtemplates#core#Resource ( g:C_Templates, 'add', 'property', 'C::FileSkeleton::Source', 'Comments.file description header' ) - call mmtemplates#core#Resource ( g:C_Templates, 'add', 'property', 'Cpp::FileSkeleton::Header', 'Comments.file description impl' ) - call mmtemplates#core#Resource ( g:C_Templates, 'add', 'property', 'Cpp::FileSkeleton::Source', 'Comments.file description header' ) + call mmtemplates#core#Resource ( g:C_Templates, 'add', 'property', 'C::FileSkeleton::Header', 'Comments.file description header' ) + call mmtemplates#core#Resource ( g:C_Templates, 'add', 'property', 'C::FileSkeleton::Source', 'Comments.file description impl' ) + call mmtemplates#core#Resource ( g:C_Templates, 'add', 'property', 'Cpp::FileSkeleton::Header', 'Comments.file description header' ) + call mmtemplates#core#Resource ( g:C_Templates, 'add', 'property', 'Cpp::FileSkeleton::Source', 'Comments.file description impl' ) " property: Doxygen menu call mmtemplates#core#Resource ( g:C_Templates, 'add', 'property', 'Doxygen::BriefAM::Menu', '' ) diff --git a/project/release.lua b/project/release.lua index df907fd..e6b0f7c 100755 --- a/project/release.lua +++ b/project/release.lua @@ -100,10 +100,13 @@ filelists_repo.awk = { filelists.bash = { 'autoload/mmtemplates/', + 'autoload/mmtoolbox/tools.vim', + 'autoload/mmtoolbox/bash/bashdb.vim', 'doc/bashsupport.txt', 'doc/templatesupport.txt', + 'doc/toolbox.txt', + 'doc/bashdbintegration.txt', 'ftdetect/template.vim', - 'ftplugin/sh.vim', 'ftplugin/template.vim', 'plugin/bash-support.vim', 'syntax/template.vim', @@ -139,8 +142,6 @@ filelists.c = { 'doc/toolboxdoxygen.txt', 'doc/toolboxmake.txt', 'ftdetect/template.vim', - 'ftplugin/c.vim', - 'ftplugin/make.vim', 'ftplugin/template.vim', 'plugin/c.vim', 'syntax/template.vim', @@ -190,8 +191,6 @@ filelists.latex = { 'doc/toolbox.txt', 'doc/toolboxmake.txt', 'ftdetect/template.vim', - 'ftplugin/tex.vim', - 'ftplugin/make.vim', 'ftplugin/template.vim', 'plugin/latex-support.vim', 'syntax/template.vim', @@ -223,7 +222,6 @@ filelists.lua = { 'doc/toolbox.txt', 'doc/toolboxmake.txt', 'ftdetect/template.vim', - 'ftplugin/lua.vim', 'ftplugin/template.vim', 'plugin/lua-support.vim', 'syntax/template.vim',