рдЖрдЬ рд╣рдо VIM рдХреЗ рд▓рд┐рдП рдРрдб-рдСрди рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореБрдЭреЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдлрд╝рд╛рдЗрд▓ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЗрд╕рдореЗрдВ cmake рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкреЗрдВрдЪ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛ред рдмреЗрд╢рдХ, рдПрдирдИрдЖрд░рдбреА рдЯреНрд░реА рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рд╕рд╛рдордирд╛ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдХреЛрдИ рднреА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЕрдЪрддреБрдВрдЧ: рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рдкрд╣рд▓реА рдмрд╛рд░ рд╡рд┐рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдорд┐рд▓реЗред рдпрд╣ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рд▓реЗрдЦ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдмреЗрд╣реЛрд╢ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдЫреЛрдбрд╝ рджреЗрдВред
Cmake рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореИрдиреЗрдЬрдореЗрдВрдЯ рдкреНрд▓рдЧрдЗрди, cmake рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, "рдмрд┐рд▓реНрдб" рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдПрдВ рдФрд░ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдкреЗрдбрд╝ рдХреЗ рд╕рд╛рде рдПрдХ рдкреИрдирд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ, рдЬрд┐рд╕рдХреЗ рддрддреНрд╡реЛрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред
рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЪрд▓реЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдк cmake рдХреЗ рд╕рд╛рде рдмрдирд╛рдИ рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЖрдВрддреНрд░ рдореЗрдВ рдЧрд╣рд░реА рдЦреБрджрд╛рдИ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдпрд╣ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдирд┐рд░реНрднрд░ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдХрд╣рд╛рдБ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЖрдЗрдП рдЕрд░реНрдз-рдмреБрджреНрдзрд┐рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ cppshniki рдХреЗ рд╕рд╛рде рддрд╛рд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреЛрдЬ рдХрд░реЗрдВ:
grep ".*\.cpp" -R build/
рдореБрдЭреЗ рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде DependInfo.cmake рдореЗрдВ рдПрдХ рдЪрд░ рдорд┐рд▓рд╛
SET(CMAKE_DEPENDS_CHECK_CXX "/home/..../brushcombo.cpp" "/home/.../build/CMakeFiles/kdots.dir/brushcombo.o" ... )
рд╣рдо рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рднреА DependInfo.cmake рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкрд░реНрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкрде рдвреВрдВрдврддреЗ рд╣реИрдВред
sub cmake_project_files { my $dir = shift; my @dependencies = File::Find::Rule->file() ->name("DependInfo.cmake") ->in($dir); my @accum = (); foreach my $filename(@dependencies) { open(FILE, $filename); my @data = <FILE>; push (@accum, src_files(\@data)); close(FILE); } return @accum; } sub src_files { my @result = (); foreach my $line(@{(shift)}) { if ($line =~ m/\s*\"(([a-zA-Z_\/]+)\/([a-zA-Z_]+\.(cpp|cc))).*/) { push(@result, $1); } } return @result; }
рдкреВрд░реНрдг рд╕реНрд░реЛрдд
рдпрд╣рд╛рдБрдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдмрд╛рдБрдзрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо ~ / .vim рдореЗрдВ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдкрджрд╛рдиреБрдХреНрд░рдо рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВрдЧреЗред
- рдкреНрд▓рдЧрдЗрди - рдкреНрд▓рдЧрдЗрдиреНрд╕ рдпрд╣рд╛рдБ рд░рдЦреЗ рдЧрдП рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╣рд░ рдмрд╛рд░ VIM рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
- ftplugin - рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЬреЛ рдХреЗрд╡рд▓ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЪрд▓рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдпрд╣рд╛рдБ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ
- рдСрдЯреЛрд▓реИрдб - рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП
- рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ - рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ
рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкреНрд▓рдЧрдЗрди рдХреЛ рд╕рдВрдкрд╛рджрдХ рджреНрд╡рд╛рд░рд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣рд░ рдмрд╛рд░ рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕реЗ ~ / .vim / plugin рдореЗрдВ рдбрд╛рд▓реЗрдВред рдлрд╝рд╛рдЗрд▓ рдХреЛ cmake-project.vim рдирд╛рдо рджреЗрдВред
рдПрдХ рдкрд░реНрд▓ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
if !has('perl') echo "Error: perl not found" finish endif
рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЯреНрд░реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрдВрдХреНрд╢рди рдмрдирд╛рдПрдВред рдлрд╝рдВрдХреНрд╢рдВрд╕, рд╕рд╛рде рд╣реА рдЪрд░, рд╡рд┐рднрд┐рдиреНрди рд╕реНрдХреЛрдк рдХреЗ рд╕рд╛рде рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ
рдпрд╣рд╛рдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ)ред рд╢реБрд░реБрдЖрдд рдореЗрдВ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди "CMakeProject" рдирд╛рдордХ рдПрдХ рдирдИ рд╡рд┐рдВрдбреЛ рдФрд░ рдмрдлрд░ рдмрдирд╛рддрд╛ рд╣реИред
function! s:cmake_project_window() vnew badd CMakeProject buffer CMakeProject " , , , VIM setlocal buftype=nofile ...
рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдорд╛рд░рд╛ рд╡рд░реНрддрдорд╛рди рдмрдлрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЯреНрд░реА рд╡рд╛рд▓рд╛ рдкреИрдирд▓ рд╣реИ, рдмрдлрд░ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░ (рдкреНрд▓рдЧрдЗрди рдХреЗ рдЕрдВрджрд░ рдЧреБрдВрдЬрд╛рдЗрд╢ рдХреЗ рд╕рд╛рде) рдШреЛрд╖рд┐рдд рдХрд░реЗрдВред
let s:cmake_project_bufname = bufname("%")
рдЕрдм рдкрд░реНрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдмрд╛рдБрдз рд▓реЗрдВред рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ ~ / .vim / plugin / cmake- рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓рд┐рдмрд░ рдорд┐рд▓ рд╕рдХреЗрдВред рд╣рдореЗрдВ cmakeproject :: cmake_project_files рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИ рдФрд░ рдЗрд╕реЗ Wim рдХреА рд╕реВрдЪреА рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
perl << EOF " Python Ruby use lib "$ENV{'HOME'}/.vim/plugin/cmake-project"; use cmakeproject; my $dir = VIM::Eval('g:cmake_project_build_dir'); my @result = cmakeproject::cmake_project_files($dir); VIM::DoCommand("let s:cmake_project_files = []"); foreach $filename(@result) { if (-e $filename) { VIM::DoCommand("call insert(s:cmake_project_files, \'$filename\')"); } } EOF
рдЕрдЧрд▓рд╛, рдЗрди рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдПрдХ рдкреЗрдбрд╝ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВред рд╡рд┐рдо рдореЗрдВ рдХрдИ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╣реИрдВ: рд╣реИрд╢ рдФрд░ рд╕реВрдЪреАред рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╣реИрд╢ рдореЗрдВ рдПрдХ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рд╣реИрд╢ рдХреБрдЫ (1 рдирд╣реАрдВ) рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ 1 рд╣реИ, рддреЛ рдпрд╣ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╣реИред
рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб "/home/paranoik/main.cpp" рдлрд╝реЙрд░реНрдо рдХреА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд░реВрдк рдХреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ {'home': {'paranoik': {'main.cpp': 1}}, рдЬрд╣рд╛рдБ {key, value} рдПрдХ рд╣реИрд╢ рдХреЗ рд╕рд╛рде рд╣реИ 1 рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдЬреЛрдбрд╝реАред
let s:cmake_project_file_tree = {} for fullpath in s:cmake_project_files let current_tree = s:cmake_project_file_tree let cmake_project_args = split(fullpath, '\/') let filename = remove(cmake_project_args, -1) for path in cmake_project_args if !has_key(current_tree, path) let current_tree[path] = {} " endif let current_tree = current_tree[path] endfor let current_tree[filename] = 1 endfor call s:cmake_project_print_bar(s:cmake_project_file_tree, 0)
рдЕрдм рд╣рдо рдмрдлрд░ рдореЗрдВ рдкреЗрдбрд╝ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╕реНрдерд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЛ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рд╕реНрддрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдлрд╝рдВрдХреНрд╢рди s: cmake_project_indent рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ)ред
function! s:cmake_project_print_bar(tree, level) for pair in items(a:tree) if type(pair[1]) == type({}) " let name = s:cmake_project_indent(a:level) . "-" . pair[0] call append(line('$'), name . "/") " "-<dir>/" let newlevel = a:level + 1 call s:cmake_project_print_bar(pair[1], newlevel) " . else " let name = s:cmake_project_indent(a:level) . pair[0] call append(line('$'), name) endif endfor endfunction
Cmake_project_window () рдлрд╝рдВрдХреНрд╢рди рдХреЛ CMakePro рдХрдорд╛рдВрдб рд╕реЗ рдмрд╛рдБрдзреЗрдВ
command -nargs=0 -bar CMakePro call s:cmake_project_window()
рд╣рдореЗрдВ cmake рдлрд╛рдЗрд▓реНрд╕ рдЬреЗрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрдорд╛рдВрдб рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИред
command -nargs=1 -bar CMake call s:cmake_project_cmake(<f-args>) function! s:cmake_project_cmake(srcdir) if !isdirectory(a:srcdir) echo "This directory not exists!" . a:srcdir return endif let s:cmake_project_dir = a:srcdir exec "cd" a:srcdir if !isdirectory(g:cmake_project_build_dir) call mkdir(g:cmake_project_build_dir) endif cd build exec "!cmake" "../" cd .. call s:cmake_project_window() endfunction
рдЬрдм рдХрд░реНрд╕рд░ рдкреИрдирд▓ рдХреЗ рдкрд╛рд░ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрд░реНрд╕рд░ рдХреЗ рдиреАрдЪреЗ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо s: cmake_project_cursor_moved () рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ CursorMoved рд╕рд┐рдЧреНрдирд▓ рд╕реЗ рдмрд╛рдВрдзрддреЗ рд╣реИрдВред
autocmd CursorMoved * call s:cmake_project_cursor_moved()
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдкреИрдирд▓ рдмрдлрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕рдХрд╛ рдирд╛рдо рдЬрд╛рдВрдЪреЗрдВред
function! s:cmake_project_cursor_moved() if exists('s:cmake_project_bufname') && bufname('%') == s:cmake_project_bufname <code> endif endfunction
рд╣рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд▓рд╛рдЗрди рдХрд╛ рдбреЗрдЯрд╛ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдХрд░реНрд╕рд░ рдХреЗ рдиреАрдЪреЗ рд╢рдмреНрдж рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред
let cmake_project_filename = getline('.') let fullpath = s:cmake_project_var(cmake_project_filename) let highlight_pattern = substitute(fullpath, '[.]', '\\.', '') let highlight_pattern = substitute(highlight_pattern, '[/]', '\\/', '') exec "match" "ErrorMsg /" . highlight_pattern . "/"
рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд┐рдд рд╣реИред рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ nth рд╕реНрддрд░ рдХрд╛ рдПрдХ рддрддреНрд╡ рд╣реИ, рддреЛ рд╡рд╣ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬрд┐рд╕рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд╕реНрдерд┐рдд рд╣реИ, nth рд╕реНрддрд░ рдХреЗ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рд╢реАрд░реНрд╖ рдкрд░ рдирд┐рдХрдЯрддрдо рддрддреНрд╡ рд╣реИред
let level = s:cmake_project_level(cmake_project_filename) let level -= 1 let finding_line = s:cmake_project_find_parent(level, line('.')) while level > -1 let path = s:cmake_project_var(getline(finding_line)) let fullpath = path . fullpath let level -= 1 let finding_line = s:cmake_project_find_parent(level, finding_line) endwhile let fullpath = "/" . fullpath "
рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ
if filereadable(fullpath) wincmd l exec 'e' fullpath setf cpp endif endif
рдкрд░рд┐рдгрд╛рдо рд╣реИ:

рдпрд╣рд╛рдБ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд╕реНрд░реЛрдд:
