六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 49|回复: 0

自己动手改写komodo sourcetree插件 对C/C++的支持

[复制链接]

升级  26%

84

主题

84

主题

84

主题

举人

Rank: 3Rank: 3

积分
278
 楼主| 发表于 2013-1-27 05:28:00 | 显示全部楼层 |阅读模式
其实很简单了,
    找到sourcetree.js 的 正则判断那一块加上
case 'C++':
                   function_tag =/^\s*[\w<>\(\)_\s"\*]+\s+([\w:\*&>\[\]=<]+)\(.*[^;]+$|^\s*(main)\(|\s*(\w+::[\w~]+)\(.*[^;]+$/;
                    class_support = false;
                    break; 

对每一个匹配行做
line = parts[current_line];
//  process line
re = /\r/g;
line = line.replace(re, "");
re = /\/\*.*\*\//g;
line = line.replace(re,"");
re = /\/\/.*$/g;
line = line.replace(re,"");
re = /\s+$/g;
line = line.replace(re,"");
if(line.match(/\s*if\s*\(/) || line.match(/\s*for\s*\(/) || line.match(/\s*while\s*\(/)|| line.match(/\s*switch\s*\(/))
    var found_function = false;
else
    var found_function = function_searcher.exec(line);
var found_class = false;




 处理。
 对C/C++的扩展
并且在之后的正则匹配的地方加上
switch(current_language){
                            case "SQL":
                                obj_name = found_function[1]+" "+found_function[2]+" "+found_function[3]+" ";
                                break;
                            case "C++":
                                obj_name = found_function[1];
                                if(found_function[2])
                                {
                                    obj_name = found_function[2];
                                }else if(found_function[3])
                                {
                                    obj_name = found_function[3];
                                }
                                break;

                           default:
                                obj_name = found_function[1];
                        }



就ok了!!o(∩_∩)o...哈哈。
又可以用komodo写c++了。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表