Mercurial > vim-unreal
changeset 9:b5040cfea052
Tweak how configs and targets are parsed and handled
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Tue, 29 Aug 2023 13:06:44 -0700 |
parents | 5cd58b3fd93d |
children | 8d3cd3988229 |
files | autoload/unreal.vim plugin/unreal.vim |
diffstat | 2 files changed, 17 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/autoload/unreal.vim Tue Jan 26 12:00:31 2021 -0800 +++ b/autoload/unreal.vim Tue Aug 29 13:06:44 2023 -0700 @@ -282,10 +282,10 @@ let s:extra_args_version = 1 function! unreal#generate_vimcrosoft_extra_args(solution) abort + let l:argdir = + \fnamemodify(a:solution, ':p:h').s:dirsep.'.vimcrosoft' let l:argfile = - \fnamemodify(a:solution, ':p:h').s:dirsep. - \'.vimcrosoft'.s:dirsep. - \fnamemodify(a:solution, ':t').'.flags' + \l:argdir.s:dirsep.fnamemodify(a:solution, ':t').'.flags' let l:do_regen = 0 let l:version_line = "# version ".string(s:extra_args_version) @@ -304,6 +304,10 @@ let l:do_regen = 1 endtry if l:do_regen + if !isdirectory(l:argdir) + call mkdir(l:argdir) + endif + let l:arglines = [ \l:version_line, \"-DUNREAL_CODE_ANALYZER" @@ -317,31 +321,30 @@ " Configuration and Platform {{{ let s:unreal_configs = [] +let s:unreal_configs_map = {} function! s:cache_unreal_configs() abort if len(s:unreal_configs) == 0 for l:state in g:unreal_config_states for l:target in g:unreal_config_targets - call add(s:unreal_configs, l:state.l:target) + let l:key = l:state.l:target + call add(s:unreal_configs, l:key) + let s:unreal_configs_map[l:key] = [l:state, l:target] endfor endfor endif endfunction function! s:parse_config_state_and_target(config) abort - let l:alen = len(a:config) + let l:config = trim(a:config) - let l:config_target = "" - for l:target in g:unreal_config_targets - let l:tlen = len(l:target) - if l:alen > l:tlen && a:config[l:alen - l:tlen : ] == l:target - let l:config_target = l:target + for l:key in keys(s:unreal_configs_map) + if l:config == l:key + let [l:config_state, l:config_target] = s:unreal_configs_map[l:key] break endif endfor - let l:config_state = a:config[0 : l:alen - t:tlen - 1] - if index(g:unreal_config_states, l:config_state) >= 0 || \index(g:unreal_config_targets, l:config_target) >= 0 return [l:config_state, l:config_target] @@ -357,7 +360,7 @@ endfunction function! unreal#set_platform(platform) abort - if index(g:unreal_platforms, a:platform) < 0 + if index(g:unreal_platforms, trim(a:platform)) < 0 call unreal#throw("Invalid Unreal platform: ".a:platform) endif let g:unreal_project_platform = a:platform
--- a/plugin/unreal.vim Tue Jan 26 12:00:31 2021 -0800 +++ b/plugin/unreal.vim Tue Aug 29 13:06:44 2023 -0700 @@ -32,7 +32,7 @@ \"Debug", "DebugGame", "Development", "Shipping", "Test" \]) let g:unreal_config_targets = get(g:, 'unreal_config_targets', [ - \"", "Editor", "Client", "Server" + \"Editor", "Client", "Server", "" \]) let g:unreal_build_options = get(g:, 'unreal_build_options', [ \"-DisableUnity", "-ForceUnity"