TAG: emacs, python, cedet, semantic, ctags 
DATE: 2013-08-20

我用Emacs 24写python程序。 发现屏幕不时有些闪动,MiniBuffer有消息一闪而过。 我打开 *Messages* buffer,发现有许多这样的消息:

CTAGS/movie-scheduling.py...
Can't guess python-indent-offset, using defaults: 4
Mark set [7 times]
CTAGS/movie-scheduling.py...
Can't guess python-indent-offset, using defaults: 4
Mark set [7 times]
CTAGS/movie-scheduling.py...
Can't guess python-indent-offset, using defaults: 4
Mark set [7 times]
... ...

每当我修改python程序,就会不停出现类似上面的消息。消息增加得很快,几乎两秒增 加一次。有时会占用许多CPU,导致输入程序有延迟。

不知道这是 python-mode 的问题,还是 semantic 在分析文件。

如果是 semantic 在分析文件, 在我写 c/c++/java 程序时, semantic的活动又没有这么频繁。

通过以下的分析,发现不是 python-mode 的问题,也不是semantic的问题,具体来说 是semantic启用ctags辅助产生的问题。

  1. 不启用cedet,编辑python程序,不会出现上面说的问题,说明不是python模式的问 题。
  2. 启用cedet,编辑python程序,问题又出现。每次一改动python程序,就会出现问题 中描述的信息。但是semantic分析文件,怎么会调用ctags呢?

    我发现我的.emacs中,cedet的设置有这样一句:

    (semantic-load-enable-all-exuberent-ctags-support)

    应该就是它了,注释掉这一句,重启emacs,再编辑python程序,不再出现上面的问题了。

  3. 要想保留ctags对semantic的支持,也可以保留上面的配置,再加一句也可以解决问题。

    (global-semantic-idle-scheduler-mode nil)

    不让semantic利用空闲时间分析文件,它也就不会频繁地调用ctags分析python文件 了。 这样做的坏处就是,当你要访问某个tag时,semantic可能要临时分析,花的 时间较长。 不过可以忍受

当python模式遇见cedet的更多相关文章

  1. 纯Python模式

    http://crcmod.sourceforge.net/intro.html https://help.aliyun.com/document_detail/85288.html OSS的CRC数 ...

  2. Python 实习遇见的各种面试题

    Python 语法 说说你平时 Python 都用哪些库 == 和 is 区别. == 是比较两对象的值,is 是比较在内存中的地址(id), is 相当于 id(objx) == id(objy). ...

  3. [Python模式]策略模式

    策略模式 定义了算法族,分别封装起来,让它们之间可以互相替换.此模式让算法的变化独立于使用算法的客户. 作为动态语言,Python实现策略模式非常容易,只要所有算法提供相同的函数即可. import ...

  4. 命令和python模式转换

    安装完paython成功之后,就必须了解一下:命令模式和python交互模式 1.我们输入  cmd  之后进入的运行环境就是命令模式 2.在命令模式下输入  python,看到>>> ...

  5. selenium webdriver+windows+python+chrome遇见的问题

    win7系统,在python中调用ChromeDriver 一直报错 “ selenium.common.exceptions.WebDriverException: Message: 'Chrome ...

  6. Linux下Python模式下【Tab】自动补全

    注:此文为转载他人博客,如有侵权,请联系我删除 1.我们需要一个tab补全的功能脚本  #!/usr/bin/python # python tab file import sys import re ...

  7. python 模式之工厂模式

    转自:https://www.cnblogs.com/lizhitai/p/4471952.html 工厂模式是一个在软件开发中用来创建对象的设计模式. 工厂模式包涵一个超类.这个超类提供一个抽象化的 ...

  8. python编程遇见的异常

    import sys print('目前系统的编码为:',sys.getdefaultencoding()) # 目前系统的编码为: utf-8 name = 'this is a test!' pr ...

  9. python学习笔记-(十三)堡垒机

    1.课前准备: 本次学习堡垒机相关知识:之前,需要安装Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作. 前提: python3.5程序安装到默认路径下并已添加pa ...

随机推荐

  1. es6 ...展开运算符

    展开运算符,目前应用在数组上,对象展开运算符,将在es7 提案 1.两个对象连接返回新的对象   let a = {aa:'aa'} let b = {bb:'bb'} let c = {...a,. ...

  2. 区别mouseover与mouseenter?

    区别mouseover与mouseenter? * mouseover: 在移入子元素时也会触发, 对应mouseout,进入子元素的时候,父元素显示离开状态 * mouseenter: 只在移入当前 ...

  3. 简单说明webbench的安装和使用

    简介 运行在linux上的一个性能测试工具 官网地址:http://home.tiscali.cz/~cz210552/webbench.html 如果不能打开的话,也可以直接到网盘下载:http:/ ...

  4. vyos User Guide

    vyos User Guide 来源 https://wiki.vyos.net/wiki/User_Guide The VyOS User Guide is focused on providing ...

  5. 分享关于js解析URL中的参数的方法

    function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&] ...

  6. 51nod 1206 Picture 矩形周长求并 | 线段树 扫描线

    51nod 1206 Picture 矩形周长求并 | 线段树 扫描线 #include <cstdio> #include <cmath> #include <cstr ...

  7. 洛谷 P2022 有趣的数 解题报告

    P2022 有趣的数 题目描述 让我们来考虑1到N的正整数集合.让我们把集合中的元素按照字典序排列,例如当N=11时,其顺序应该为:1,10,11,2,3,4,5,6,7,8,9. 定义K在N个数中的 ...

  8. linux内核分析 第六周读书笔记

    第三章 进程管理 3.1 进程 进程:处于执行期的程序 线程是在进程活动中的对象:内核调度的对象是线程而不是进程,在Linux系统中,并不区分线程和进程 在现代操作系统中, 进程提供两种虚拟机制:虚拟 ...

  9. java关于类加载的面试题

    ---面试题 class SingleTon { private static SingleTon singleTon = new SingleTon(); public static int cou ...

  10. 解题:POI 2007 Driving Exam

    题面 有点意思的题 从一个位置$i$出发可以到达每一个位置即是从$1,n$出发可以到达$i$.然后有了一个做法:把图上下反转后建反图,这样就可以求从一个点$i$到达左右两侧的花费$dp[i][0/1] ...