From 0b46c3a932705ccf43007580b140152ed2261877 Mon Sep 17 00:00:00 2001 From: Stefan Liebl Date: Mon, 24 Feb 2025 09:57:20 +0100 Subject: [PATCH] toptica.vim --- vimfiles.stefan/plugin/toptica.vim | 82 ++++++++++++++---------------- 1 file changed, 39 insertions(+), 43 deletions(-) diff --git a/vimfiles.stefan/plugin/toptica.vim b/vimfiles.stefan/plugin/toptica.vim index ccafed1..717b5f2 100644 --- a/vimfiles.stefan/plugin/toptica.vim +++ b/vimfiles.stefan/plugin/toptica.vim @@ -20,6 +20,23 @@ command -nargs=? -complete=file JenkinsLinter call s:Jenkins_linter('') set titlestring= +" Get compiler-version for DLCpro +function! g:Compiler_version() + if exists('g:ProjectBuildDir') + let cmakefile = g:ProjectBuildDir . '/CMakeCache.txt' + if filereadable(cmakefile) + for line in readfile(cmakefile) + if match(line, 'NEW_COMPILER:BOOL=OFF') >= 0 + return 'old' + elseif match(line, 'NEW_COMPILER:BOOL=ON') >= 0 + return 'new' + endif + endfor + endif + endif + return 0 +endfunction + function! s:ProjectSet(project_type, project_base_dir) execute "DirenvExport" let g:project_type = a:project_type @@ -37,31 +54,31 @@ function! s:ProjectSet(project_type, project_base_dir) else " defaults if (g:project_type == 'dlcpro-new') - let s:ProjectBaseDir = '/home/stefan/dlcpro/firmware' + let s:ProjectBaseDir = '~/dlcpro/firmware' elseif (g:project_type == 'dlcpro') - let s:ProjectBaseDir = '/home/stefan/dlcpro/firmware' + let s:ProjectBaseDir = '~/dlcpro/firmware' elseif (g:project_type == 'dlcpro-tui') - let s:ProjectBaseDir = '/home/stefan/dlcpro/firmware' + let s:ProjectBaseDir = '~/dlcpro/firmware' elseif (g:project_type == 'dlcpro-tui-simulator') - let s:ProjectBaseDir = '/home/stefan/dlcpro/firmware.tui-simulator' + let s:ProjectBaseDir = '~/dlcpro/firmware.tui-simulator' elseif (g:project_type == 'dlcpro-can') - let s:ProjectBaseDir = '/home/stefan/dlcpro/firmware' + let s:ProjectBaseDir = '~/dlcpro/firmware' elseif (g:project_type == 'shg') - let s:ProjectBaseDir = '/home/stefan/dlcpro/shg-firmware' + let s:ProjectBaseDir = '~/dlcpro/shg-firmware' elseif (g:project_type == 'dlcpro-gui') - let s:ProjectBaseDir = '/home/stefan/dlcpro/pc-gui' + let s:ProjectBaseDir = '~/dlcpro/pc-gui' elseif (g:project_type == 'topmode') - let s:ProjectBaseDir = '/home/stefan/topmode/firmware' + let s:ProjectBaseDir = '~/topmode/firmware' elseif (g:project_type == 'topmode-gui') - let s:ProjectBaseDir = '/home/stefan/topmode/pc-gui' + let s:ProjectBaseDir = '~/topmode/pc-gui' elseif (g:project_type == 'digifalc') - let s:ProjectBaseDir = '/home/stefan/dlcpro/falc/firmware' + let s:ProjectBaseDir = '~/dlcpro/falc/firmware' elseif (g:project_type == 'servoboard') - let s:ProjectBaseDir = '/home/stefan/dlcpro/mta/firmware' + let s:ProjectBaseDir = '~/dlcpro/mta/firmware' elseif (g:project_type == 'dl-motor') - let s:ProjectBaseDir = '/home/stefan/dlcpro/dl-motor' + let s:ProjectBaseDir = '~/dlcpro/dl-motor' elseif (g:project_type == 'pfd') - let s:ProjectBaseDir = '/home/stefan/dlcpro/pfd/firmware' + let s:ProjectBaseDir = '~/dlcpro/pfd/firmware' else echo "no project" endif @@ -80,7 +97,7 @@ function! s:ProjectSet(project_type, project_base_dir) " Settings for invoke development let s:invoke = 'invoke' - let s:tasks_file_dev = '/home/stefan/tools/invoke/'.g:project_type.'/tasks.py' + let s:tasks_file_dev = '~/tools/invoke/'.g:project_type.'/tasks.py' if filereadable(s:tasks_file_dev) call system('cp '.s:tasks_file_dev.' tasks.py') " copy development version to project elseif filereadable('tasks.py') @@ -114,8 +131,8 @@ function! s:ProjectSet(project_type, project_base_dir) endif endfunction - " Add default value for all given options, if not already set - function! s:SetDefaults(commandline) + " Add default value for all available options, if not already set + function! s:SetDefaultOptions(commandline) let commandline = a:commandline let task = split(commandline)[0] @@ -136,7 +153,7 @@ function! s:ProjectSet(project_type, project_base_dir) function! s:Make(args, async_mode) " Add defaults for options - let l:options = s:SetDefaults(a:args) + let l:options = s:SetDefaultOptions(a:args) if (a:async_mode == 'sync') " Synchronous execution with returned output @@ -150,14 +167,15 @@ function! s:ProjectSet(project_type, project_base_dir) " Asynchronous execution in background call system(s:invoke.' -e '.l:options.'&') else + " Asynchronous execution with AsyncRun call asyncrun#quickfix_toggle(10, 1) let &makeprg = s:invoke.' -e' execute 'AsyncRun -mode='.a:async_mode.' -save=2 -program=make @ '.l:options endif endfunction - " Tab-completion is done with plugin vim-bash-completion - let $BASH_COMPLETION_DIR = '/home/stefan/.invoke' + " Tab-completion for invoke is done with plugin vim-bash-completion + let $BASH_COMPLETION_DIR = '~/.invoke' let invoke_completion_file = $BASH_COMPLETION_DIR.'/bash_completion' if !filereadable(invoke_completion_file) call system('invoke --print-completion-script bash > '.invoke_completion_file) @@ -172,7 +190,7 @@ function! s:ProjectSet(project_type, project_base_dir) " Get some configurations from the project " ---------------------------------------- let l:tasks = s:Make('--list', 'sync') - let g:DebugRemote = l:targets =~ 'gdb-server' + let g:DebugRemote = (l:tasks =~ 'gdb-server') let g:ProjectBuildDir = s:Make('build-dir', 'sync') let g:Elffile = s:Make('elf-file', 'sync') @@ -185,6 +203,7 @@ function! s:ProjectSet(project_type, project_base_dir) let g:termdebug_config['command'] = '/opt/OSELAS.Toolchain-2020.08.0/arm-v7a-linux-gnueabihf/gcc-10.2.1-clang-10.0.1-glibc-2.32-binutils-2.35-kernel-5.8-sanitized/bin/arm-v7a-linux-gnueabihf-gdb' else let g:termdebug_config['command'] = 'arm-none-eabi-gdb' + endif else let g:termdebug_config['command'] = 'gdb' endif @@ -241,12 +260,6 @@ function! s:ProjectSet(project_type, project_base_dir) " python tags execute "set tags+=" . s:ProjectBaseDir . '/tags' - " compiler - " if exists("s:Program") - " " let g:Program = g:ProjectBuildDir.s:Program - " let g:Elffile = g:ProjectBuildDir.s:Elffile - " endif - " ============= " Some settings " ============= @@ -259,23 +272,6 @@ function! s:ProjectSet(project_type, project_base_dir) compiler gcc command! -complete=customlist,GetAllMakeCompletions -nargs=* MakeCmd call s:Make('', 'async') - " Get compiler-version for DLCpro - function! g:Compiler_version() - if exists('g:ProjectBuildDir') - let cmakefile = g:ProjectBuildDir . '/CMakeCache.txt' - if filereadable(cmakefile) - for line in readfile(cmakefile) - if match(line, 'NEW_COMPILER:BOOL=OFF') >= 0 - return 'old' - elseif match(line, 'NEW_COMPILER:BOOL=ON') >= 0 - return 'new' - endif - endfor - endif - endif - return 0 - endfunction - " configure quickfix window for asyncrun augroup QuickfixStatus autocmd BufWinEnter quickfix setlocal