决对值得试试的 c++语法提示插件 for gedit

软件和网站开发以及相关技术探讨
louis315
帖子: 86
注册时间: 2005-10-20 9:19

决对值得试试的 c++语法提示插件 for gedit

#1

帖子 louis315 » 2007-05-15 17:18

最新的插件包在:http://groups.google.com/group/freeLJ

在ubuntu 7.04上直接使用,用到了:python2.5和pygtk, 其它平台还没有测试过。

安装方法:

1. sudo -s
2. tar zxvf ljcs_gedit_plugin_xxxx.tar.gz
3. cp -rf ljcs_gedit_plugin/* /usr/lib/gedit-2/plugins/
4. 打开gedit,选择ljcs插件
5. 打开gedit的底部面板 (Ctrl+F9)

可以试试啦!

ljcs的目标:

现在有很多的c++ IDE和支持c++语法高亮显示的Editor,做为c++爱好者,很想为喜爱的IDE/Edit添
加c/c++助手,帮助我们进行项目分析和开发,比如下面列出的功能:
* 符号搜索及预览
* 自动完成
* c/c++文件大纲 浏览

ljcs就是为这个想法来设计的。

ljcs的架构:

在过去一段时间内对ljcs摸索和开发中,现在基本明确了ljcs的两层架构:
* kernel : 完成c/c++文件的分析和搜索工作
* plugin : 完成与各IDE/Editor的结合工作
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#2

帖子 eexpress » 2007-05-16 9:09

给个图,,,,给个deb(到irc找人打包)。
● 鸣学
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#3

帖子 eexpress » 2007-05-16 9:17

Traceback (most recent call last):
File "/usr/lib/gedit-2/plugins/ljcs_plugin/geditplugin.py", line 146, in on_btn_next_clicked
size = len(self.defines)
TypeError: object of type 'NoneType' has no len()

加了当前路径,没删除路径的,不知道如何使用。点那define/tips
● 鸣学
头像
jaywee
帖子: 517
注册时间: 2006-06-18 21:49
联系:

#4

帖子 jaywee » 2007-05-17 23:06

我怎么记得gedit本身就带有语法高亮显示功能呢>
Time waits for no man!
头像
jaywee
帖子: 517
注册时间: 2006-06-18 21:49
联系:

#5

帖子 jaywee » 2007-05-17 23:07

呀,看错了,是语法提示啊!!不好意思!
Time waits for no man!
louis315
帖子: 86
注册时间: 2005-10-20 9:19

#6

帖子 louis315 » 2007-05-19 0:13

安装方法:

安装到用户目录下(为本用户安装):

解压并把ljcs_gedit_plugin中的内容放到.gnome2/gedit/plugins/里

(注意要自己创建.gnome2/gedit/里面的plugins目录)

安装到系统目录下(为本机所有用户安装):

1. sudo -s
2. tar zxvf ljcs_gedit_plugin_xxxx.tar.gz
3. cp -rf ljcs_gedit_plugin/* /usr/lib/gedit-2/plugins/



使用方法:
1. 打开gedit,选择ljcs插件

2. 打开gedit的底部面板 (Ctrl+F9)

可以打开一个c/c++文件试试啦!

现在完成的功能:

* 自动完成

* 打开头文件 ctrl+[left mouse button] 2007-5-16日版本以后

* 预览功能 当输入左括号'(', 左小于号'<' 或ctrl+[left mouse button] 时显示
louis315
帖子: 86
注册时间: 2005-10-20 9:19

to 3楼 eexpress

#7

帖子 louis315 » 2007-05-19 0:34

呵…… 不好意思哦,因为现在才刚开始,那个不算什么错误,主要是我没有说明怎么使用。

我说下现在能用的功能好了:

新建/打开 test.cpp

1. #include 自动完成
输入 #include <
这时会出现 include 提示,会显示系统目录下的所有可以include的文档。
如图:
图片

2. 自动完成
#include <string.h>
#include <stdio.h> // 输入完成后,保存一下文件!!! 在打开/保存文件时才进行语法分析

str // <- 在这里输入 str时,会显示当前以str开始的所有符号

如图:
图片

3. 用 ctrl+鼠标左键 点击符号(函数/变量 之类的)可以查看其定义位置

4. 预览
上面的操作中有些会在底部面板的defines里显示出预览
附件
ljcs-include.png
ljcs-tip.png
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#8

帖子 eexpress » 2007-05-19 14:15

ok
等完善。功能绝对有用。
include的自动找当前目录/工程目录的h吗?
● 鸣学
louis315
帖子: 86
注册时间: 2005-10-20 9:19

#9

帖子 louis315 » 2007-05-19 23:38

#include现在只能显示相对当前目录的文件/相对系统目录的文件, 现在还没开始写project的UI, 所以没法设定project的相对目录哦, 不过大部分情况下, 我也不会设定project的-I,所以还好啦.
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#10

帖子 eexpress » 2007-05-20 0:11

ctrl-鼠标的都有效。包括开h和预览函数。支持本地目录。ctrl-鼠标的方式,蛮喜欢的。以前vim是随时显示,老跳,有些麻烦。我说的工程目录也就是当前目录的意思。不是需要建立工程。呵呵。
建议,建立一个ctrl+双击(右键?)的打开函数的源文件的功能。就像打开h一样。

补全没出,是3个字符自动触发补全显示的??
● 鸣学
louis315
帖子: 86
注册时间: 2005-10-20 9:19

有时候可能有bug吧,嘿…… 我这里补全会出的

#11

帖子 louis315 » 2007-05-20 18:05

更新到5.20号的版本吧! 添加了后台分析线程, 再也不会打开文件时停顿这么久了!! 当然,还是分析完成后才能用的,我没有加任何提示,反正能用了就说明分析完成了。

添加了简单的search面板,现在filter只添加了一个test_filter,因为我还没有想好怎么做呢。
要想自己添加filter,会c的人看一下 ljcs_plugin/filters/test_filter怎么写就知道了,记住,把自己写的filter放到ljcs_plugin/filters/目录里。
louis315
帖子: 86
注册时间: 2005-10-20 9:19

现在有很多东西都没有加呢,呵……

#12

帖子 louis315 » 2007-05-20 18:21

建立一个ctrl+双击(右键?)的打开函数的源文件的功能
嗯, 下一次发版本就先把这个功能加上,因为我对pygtk不怎么熟的哦,呵…… 所以很多想法都是边学边加的。

有空来这里 http://groups.google.com/group/freeLJ
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#13

帖子 eexpress » 2007-05-20 18:58

@ 20的。函数定义显示有些不对了(部分显示的不是函数定义,而是调用位置)。补全还是没出,等了好久的,要不还是加一个热键激活补全?。
● 鸣学
louis315
帖子: 86
注册时间: 2005-10-20 9:19

#14

帖子 louis315 » 2007-05-20 21:55

我想补全没出是因为没有补全吧~~ 如果找不到关键字,目前就不显示提示。

例:
--------------------------------------------------------------------------------
// test.cpp
--------------------------------------------------------------------------------
#include <string.h>

::st <---- 如果这时不出补全
只有下面几种可能
1. 这个文件没有保存(只有在保存/打开时进行文件分析)
2. 是这个文件没有保存为.cpp/.cc/.c/.h/....(只有在打开的文件为c/c++文件时,才出提示)
3. 程序bug(嘿…… 我这里没问题哦)
--------------------------------------------------------------------------------

分析结果不一定总是对的哦~~~ c++语法太复杂了~~~ 我只能分析出部分,出错是比较正常的。
现在做的分析都是 上下文无关 的语法分析!要知道c++的语法,即使上下文相关分析都会有歧义的。
这个ljcs也不打算去做特别多的歧义分析,也不准备做上下文相关分析,我感觉这样不太适合做提示插件哦。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#15

帖子 eexpress » 2007-05-21 9:02

不像哦。我是现成的老工程目录。用vim都正常的。多的分析也不需要,只要基本的tags都认就可以。还有就是,hypersrc的tags生成,对于这个工程目录,是一闪而过的。说明tags并不多。
● 鸣学
回复