为方便阅读Linux kernel代码修改exVim,用颜色标注的为添加的代码

来源:互联网 发布:游戏编程入门书籍 编辑:程序博客网 时间:2024/05/18 01:34

1  make ARCH=arm CROSS_COMPILE=arm-linux- cscope 

生成Linux内核只包含当前架构源文件,头文件列表。

2 将生成的cscope.files 改名为kernel.files(避免exVim调用cscope时将此文件覆盖)
mv cscope.files kernel.files
3修改~/.toolkit/quickgen/bash/quick_gen_project.sh
核心思路是:将kernel.files拷贝到.vimfile中,避免重新扫描
这里的修改和cscope,ctags功能相关,但是和现实的工程目录没有关系,即修改这步后没有编入linux kernel的文件依然会在工程目录中显示出来。


        if [ -f "kernel.files" ]; then
            cp "./kernel.files" "./${vimfiles_path}/
filenamelist_vimfiles"
            sed -i "s/^/\.\.\//g" "./${vimfiles_path}/filenamelist_vimfiles" 
        else

            # create filenamelist_cwd
            echo "  |- generate _filenamelist_cwd"
            if test "${dir_filter}" != ""; then
                # NOTE: if we have dir filter, we still need get files in root directory
                find ${force_posix_regex_1} . -maxdepth 1 ${force_posix_regex_2} -regex ".*\.("${file_filter}")" > "./${vimfiles_path}/_filenamelist_cwd"
                find ${force_posix_regex_1} ${dir_filter} ${force_posix_regex_2} -regex ".*\.("${file_filter}")" >> "./${vimfiles_path}/_filenamelist_cwd"
            else
                find ${force_posix_regex_1} . ${force_posix_regex_2} -regex ".*\.("${file_filter}")" > "./${vimfiles_path}/_filenamelist_cwd"
            fi

            if [ -f "./${vimfiles_path}/_filenamelist_cwd" ]; then
                echo "  |- rename _filenamelist_cwd to filenamelist_cwd"
                cp "./${vimfiles_path}/_filenamelist_cwd" "./${vimfiles_path}/test_cwd"
                mv -f "./${vimfiles_path}/_filenamelist_cwd" "./${vimfiles_path}/filenamelist_cwd"
            fi
            # create filenamelist_vimfiles
            echo "  |- generate _filenamelist_vimfiles"
            sed "s,\(.*\),.\1,g" "./${vimfiles_path}/filenamelist_cwd" >> "./${vimfiles_path}/_filenamelist_vimfiles"
            if [ -f "./${vimfiles_path}/_filenamelist_vimfiles" ]; then
                echo "  |- rename _filenamelist_vimfiles to filenamelist_vimfiles"
                mv -f "./${vimfiles_path}/_filenamelist_vimfiles" "./${vimfiles_path}/filenamelist_vimfiles"
            fi
        fi
4 在工程目录中只显示编译linux kernel用到的头文件和源文件
a)修改/home/pc/.vim/plugin/exProject.vim
在为工程目录扫描时读入kernel.files,在两次调用call exUtility#Browse时添加同样的代码:
    let g:linuxkernellistpath = g:exES_CWD . '/kernel.files'
    if filereadable(g:linuxkernellistpath )
        let g:linuxkernelfilelist = readfile(g:linuxkernellistpath,'',)
    endif


    call exUtility#Browse( entry_dir, exUtility#GetFileFilterPattern(project_file_filter), exUtility#GetDirFilterPattern(project_dir_filter), filename_list )
b)修改/home/pc/.vim/autoload/exUtility.vim
在为工程目录显示时都会注意判断扫描到的文件是否出现在kernel.files
如果没有出现则不显示,这样会去除其他架构的代码,便于查看和阅读。
在Browse函数中,只有出现在kernel.files中的文件才在工程目录中显示。
                  if filereadable(g:linuxkernellistpath)
                        if(index(g:linuxkernelfilelist,file[(len(g:exES_CWD)+1):]) >=0)
                            silent call add(file_list, file)
                        endif                   
                    else

                        silent call add(file_list, file)
                    endif

0 0