代码之家  ›  专栏  ›  技术社区  ›  cristobalito

emacs中的标记具有较大的代码基

  •  16
  • cristobalito  · 技术社区  · 14 年前

    我想知道人们在处理大型代码库(大约50000个cpp |.h |.cs文件)时如何在emacs中使用标记。我的一些同事使用索引工具(我不记得名字),这些工具可以在几秒钟内返回整个代码库的所有结果。在emacs和标签上,我似乎无法接近这种性能,但本质上是一样的!

    我尝试过的一些方法:

    1. 为整个存储库创建一个标记文件。这通常是相当大的,通常很难使用(有时太多的标签匹配)。
    2. 为cpp | h | cs创建单独的标记文件。如果我知道(大概(至少是将要使用的编程语言))我碰巧在寻找什么,我会更加专注。
    3. 存储库中某个部分上的较小标记文件。这些都是伟大的,当我相当肯定的地区,但管理费用是一个痛苦。我通常会在需要的时候生成这些。

    如对您的工作流程有任何建议/示例,我们将不胜感激。

    4 回复  |  直到 14 年前
        1
  •  5
  •   Sudhanshu    14 年前

    以下是我使用的脚本:

    #!/usr/bin/bash
    echo "Creating list of files to build tags..."
    find `pwd` -name '*.c' -o -name '*.h' > cscope_files
    
    echo "Building cscope and ctags databases..."
    cscope -bqki cscope_files
    ctags -eL cscope_files
    

    > cat cscope_files | wc -l
    10700
    

    (defun hide-cscope-buffer ()
      "Turn off the display of cscope buffer"
       (interactive)
       (if (not cscope-display-cscope-buffer)
           (progn
             (set-variable 'cscope-display-cscope-buffer t)
             (message "Turning ON display of cscope results buffer."))
         (set-variable 'cscope-display-cscope-buffer nil)
         (message "Toggling OFF display of cscope results buffer.")))
    
    
    (global-set-key [f9] 'cscope-find-this-symbol)
    (global-set-key [f10] 'cscope-find-global-definition-no-prompting)
    (global-set-key [f11] 'cscope-find-functions-calling-this-function)
    (global-set-key [f12] 'cscope-find-this-file)
    (global-set-key (kbd "C-t") 'cscope-pop-mark)
    (global-set-key (kbd "C-n") 'cscope-next-symbol)
    (global-set-key (kbd "C-p") 'cscope-prev-symbol)
    (global-set-key (kbd "C-b") 'hide-cscope-buffer)
    (global-set-key [S-f7] 'cscope-next-file)
    (global-set-key [S-f8] 'cscope-prev-file)
    (global-set-key [S-f9] 'cscope-find-this-text-string)
    (global-set-key [S-f10] 'cscope-find-global-definition)
    (global-set-key [S-f11] 'cscope-find-egrep-pattern)                                                                                                                           
    (global-set-key [S-f12] 'cscope-find-files-including-file)
    

    不过,我不是一个普通的emacs用户。当我尝试切换到emacs时,我使用了这些,

    更新: 对于目录层次结构中的多个标记文件,请查看 多个标记文件 article .

        3
  •  2
  •   phils    14 年前

    你可能想看看 GNU Global 也。它支持C和C++(与YACC、java、PHP4和汇编一起),所以 对于C#来说工作得很好(不过,我还没有写过任何C#,所以我可能也在胡说八道)。

        4
  •  1
  •   djcb    14 年前

    short introduction 在emacs中使用它。

    注意,如果你的项目真的有50K个文件(和50K个loc),那么第一次运行(索引所有这些文件)可能会有点慢。