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. Oculus VR眼镜调研

    VR眼镜 oculus 软件安装 最详细的Oculus Rift VR/3D眼镜安装设置教程(多图) 在线安装Oculus rift驱动[非VPN方法] Rift,Go,Gear VR,Quest: ...

  2. 使用FileReader对象的readAsDataURL方法来读取图像文件

    使用FileReader对象的readAsDataURL方法来读取图像文件   FileReader对象的readAsDataURL方法可以将读取到的文件编码成Data URL.Data URL是一项 ...

  3. Cannot create file"C:\Users\LML\AppData\Local\Temp\EditorLineEnds.ttr"。另一个程序正在使用此文件,进程无法访问。

    不能二次启动,每次开机第一次都ok,出于习惯,总是想试试第二次打开软件是否正常,结果不出所料,出现了“Cannot create file"C:\Users\LML\AppData\Loca ...

  4. 在Asp.Net Core中使用Session

    1.在Stratup.cs中配置Session public void ConfigureServices(IServiceCollection services) { services.AddSes ...

  5. Cent7安装mysql5.7.11全过程

    下载mysql(注:其他版本未测试) https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-5.7.11.tar.gz 1.安装依赖包 yum -y ...

  6. DPM(Deformable Parts Model)

    DPM(Deformable Parts Model) Reference: Object detection with discriminatively trained partbased mode ...

  7. HotSpot垃圾收集器GC的种类

      堆内存的结构:

  8. matplotlib + pandas绘图

    利用pandas处理日期数据,并根据日期绘制增长率曲线. 处理的json文本内容如下: # pd.json [{"name": "A", "date& ...

  9. (待修莫队 没过! 抽空在检查)Dynamic len(set(a[L:R])) UVA - 12345

    #include <iostream> #include <cstdio> #include <sstream> #include <cstring> ...

  10. BZOJ5058 期望逆序对 【矩乘 + 组合数学 + 树状数组】

    题目链接 BZOJ5058 题解 可以发现任意两个位置\(A,B\)最终位置关系的概率是相等的 如果数列是这样: CCCCACCCCBCCCC 那么最终有\(7\)种位置关系 \((A,B)\) \( ...