c++builder 代码输入助手

指针箭头、指针符号-> 输入太麻烦

java、c#、delphi 语言里,输入一个字符点.就可以弹出代码提示窗口。很是方便。

c++语言,输入->,需要按3个键才可以弹出,能否输入一个字符自动替换为->呢,如此就方便输入了。

比如:输入一个字符'自动替换为c++的指针符号->

那么代码输入编写速度提高很多,找一个不常用的字符按键代替这3个输入的。

cnpack>ide enhancements>setttings>editor enhancement>other>

auto input matched bracket and quote {} () "" ''

通过这个选项,可以自动输入后面的字符,能否实现呢?

CnSrcEditorEnhance>chkAutoBracket

btQuote:
begin
CnOtaMovePosInCurSource(ipCur, , -); //-1
CnOtaEditDelete();
CnOtaInsertTextToCurSource('->'); //''''
end;
btDitto: CnOtaInsertTextToCurSource('"');
end; CnOtaMovePosInCurSource(ipCur, , ); //-1

输入'

删除',插入->

功能已经实现,如何弹出代码提示框呢?

alt+Space 激活弹出代码提示窗口,是发消息还是参考cnpack输入2个字符激活代码提示窗口呢?

1、2个字符弹出的是cnpack的窗口。不合适。

2、cnpack>Editor Enhancements settings>Code Editor>Add a CodeCompletion HotKey (Alt+Space),看看这个快捷键如何调用invoke激活代码输入助手的。

最终借助方法2找到解决方法了。

调用IOTAEditActions的CodeCompletion方法,弹出代码提示窗口,代码自动完成功能!

change code cnwizards\Source\SrcEditorEnhance\CnSrcEditorKey.pas

编译后的dll放到

D:\Program Files (x86)\CnPack\CnWizards

procedure TCnSrcEditorKey.ExecuteInsertCharOnIdle(Sender: TObject);
var
EditView: IOTAEditView;
awinControl:TWinControl;
begin
if (FAutoMatchType = btNone) or (FRepaintView = ) then
Exit;
EditView := CnOtaGetTopMostEditView;
case FAutoMatchType of
btBracket: CnOtaInsertTextToCurSource(')');
btSquare: CnOtaInsertTextToCurSource(']');
btCurly: CnOtaInsertTextToCurSource('}');
btQuote:
begin
if IsCpp( EditView.Buffer.FileName ) then
begin
CnOtaMovePosInCurSource(ipCur, , -); //-1
CnOtaEditDelete(); awinControl:=CnOtaGetCurrentEditControl;
PostMessage(awinControl.Handle,WM_KEYDOWN,VK_RETURN,);
PostMessage(awinControl.Handle,WM_KEYUP,VK_RETURN,);
IOTAEditView(FRepaintView).Paint;
Application.ProcessMessages; CnOtaInsertTextToCurSource('->'); //ksr ''''
end
else
CnOtaInsertTextToCurSource('''');
end;
btDitto: CnOtaInsertTextToCurSource('"');
end; if (FAutoMatchType = btQuote) and IsCpp( EditView.Buffer.FileName ) then
begin
CnOtaMovePosInCurSource(ipCur, , ); //-1 ksr if Assigned(EditView) then
(EditView as IOTAEditActions).CodeCompletion(csCodeList or csManual);
end
else
CnOtaMovePosInCurSource(ipCur, , -); IOTAEditView(FRepaintView).Paint;
end;

真正输入字符 ' 的时候把auto input matched bracket and quote功能关掉就可以了。

爽!

c++builder的福音啊!!!

能否连续按'在弹出助手界面再输入'能弹出当前选择的行,再输入'能选择当前行并关闭当前助手界面再继续根据选择又弹出助手界面,连续性??

先发送个esc键。

ShowIDECodeCompletion

http://docwiki.embarcadero.com/RADStudio/XE8/en/Code_Insight
http://docwiki.embarcadero.com/RADStudio/XE8/en/Code_Completion
http://edn.embarcadero.com/article/27913
http://delphi.about.com/od/beginners/l/aa051203a.htm
http://codeverge.com/embarcadero.delphi.ide/delphi-xe-code-insight/1057944

c++builder 代码输入助手的更多相关文章

  1. 提升c++builder 代码输入流畅度的配置

    提高c++builder 代码输入流畅度 1.输入指针的函数名后,识别函数参数移动光标到括弧内,此功能太慢,有明显延迟,建议关闭.关闭以后,输入函数名不会自动添加(),需要自己手动输入括弧了,不过速度 ...

  2. 解决“无法连接到Python代码运行助手。请检查本机的设置”问题

    廖雪峰老师python课程里有个代码运行助手,可以让你在线输入Python代码,然后通过本机运行的一个Python脚本来执行代码,很方便的一个脚本工具,但是很多人用过之后出现了这样的提示:“无法连接到 ...

  3. Visual studio智能感知挡住了当前代码输入行

    AssistX->Listboxes->Enable Visual Assist completion, suggestion and member list in .. 如果勾选了该项就 ...

  4. 发布代码小助手V2.1发布了——Code2HTML工具

    设计起源: 新浪博客似乎没有插入代码的功能,所以不得不用打空格的方法格式化代码.而且没法显示行号. 描述: 发布代码小助手用python和Tkinter开发,可以在任何常见操作系统上运行.主要用于在不 ...

  5. code_analyzer(代码分析助手)

    软件名: code_analyzer 使用c语言 pcre正则库分析源码文件,包括文件中的头文件.宏定义.函数. 用途: 无聊时,可以用来打发下时间. 演示: 对于本源程序的分析结果如下: ##### ...

  6. Idea 自定义快捷代码输入 如syso => System.out.println()

    前言 之前一直用的Eclipse System.out.println()的快捷代码输入 是 syso,但是在Idea 不好使用了,后来搜索了一番才知道,在Idea中的快捷输入是 sout,这里我就想 ...

  7. C++Builder 代码编辑器 回车自动补充括弧

    两大问题 括弧和折叠 一.括弧 XE7,回车,自动补充括弧} 好用,有时候不准确,代码量多,不知道什么原因就引起错误,总是多一个括弧,一回车就加一个括弧,都不敢回车写代码了,怎么关闭此选项? 找到了, ...

  8. 例题:计算运费。c#语言基础,比较简单。看代码输入格式和方法。同样方法可以做一个 出租车打车的程序

    while (true) { Console.WriteLine("请输入行李重量"); double k = Convert.ToDouble(Console .ReadLine ...

  9. 代码代码:输入两个正整数m和n,求其最大公约数和最小公倍数。15 20 5

    import java.util.Scanner; //输入两个正整数m和n,求其最大公约数和最小公倍数.15 20 5 public class Test { public static void ...

随机推荐

  1. 配置Tomcat 中文字符集问题

    找到Tomcat安装路径下的conf文件夹下的server.xml配置文件,修改配置Tomcat端口的标签"Connector",添加URIEncoding属性,代码如下: < ...

  2. 微信朋友圈如何同时分享(图片+文字) Android版

    以下是:微信朋友圈SDK 分享图片的代码,但只能分享图片,不能分享文字,如何才能图片和文字同时分享?求各位大神指教! public class MainActivity extends Activit ...

  3. hdu1828(线段树+扫描线)

    又知道了线段树的一种用法,除了单点更新,区间更新,还有这种在一段线段上标号但不往下推. 真是神奇 hdu1828 #include <iostream> #include <stdi ...

  4. Java编程思想 (1~10)

    [注:此博客旨在从<Java编程思想>这本书的目录结构上来检验自己的Java基础知识,只为笔记之用] 第一章 对象导论 1.万物皆对象2.程序就是对象的集合3.每个对象都是由其它对象所构成 ...

  5. factory工厂模式

    工厂方法模式 工厂方法模式概述    工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现 简单理解: 与简单工厂模式类似,简单工厂模式是一个工厂,用户将条件为 ...

  6. iso中AutoLayout和Autoresizing Mask的区别

    •在iOS6之前,关于屏幕旋转的适配和iPhone,iPad屏幕的自动适配,基本都是由Autoresizing Mask来完成的.但是随着大家对iOS App的要求越来越高,以及今后可能出现的多种屏幕 ...

  7. DelegatingFilterProxy

    安全过滤器链 Spring Security的web架构是完全基于标准的servlet过滤器的. 它没有在内部使用servlet或任何其他基于servlet的框架(比如spring mvc), 所以它 ...

  8. 摘录:官方文档对ROWID虚拟行的定义

    ROWID Pseudocolumn For each row in the database, the ROWID pseudocolumn returns the address of the r ...

  9. Android 一步步教你从ActionBar迁移到ToolBar

    谷歌的材料设计也发布了有一段时间了,包括官方的support库 相信大家也熟悉了不少,今天就把actionbar 迁移到toolbar的 经验发出来. 这个地方要注意 我用的图标都是studio里的一 ...

  10. linux 开机自动运行

    1.开机启动时自动运行程序 Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init.init根据配置文件继续引导过程,启动其它进程.通常情况下,修改放置在 /etc/rc或 /et ...