CnPack Forum » CnWizards IDE Wizards » [feature idea] jump to next compile error

2007-1-19 15:09 klemm
[feature idea] jump to next compile error


When compiling a project we some-times get errors. These errors are put in compile messages tool-window. After compiling, the ide code editor jumps to first error.
Once the first error is resolved, i have to double-click on the next error in messages or press ctrl+f9 to compile again and jump to next error. Trouble is, that i don't want to pick up the mouse and compiling just to jump to next error is: 1. kind of stupid and 2. some-times takes too long.

Would it be possible to have a keyboard shortcut to navigate the errors in compile-messages window?


2007-1-20 00:18 Passion
Thanks for your good suggesion. It should be an useful requirment. We'll do some research for its implementation possibility.

2007-1-23 22:20 Passion
Hi, In Delphi 5/6/7 and C++Builder 5/6, it's possible to jump to the next compile error, for the messge view control is TTreeview, we can get it's selected index.

But in BDS, the message view control is virtual tree. And its selected index is hidden to us. It's hard to obtain it.

What's your comments about it?

2007-1-24 23:21 Passion
Now we think though the Virtual Tree can not raise its selectindex, we can also post VK_DOWN message to it to let it move to next item.

In our latest nightly-build version 284, this function has been added into Editor Wizard's submenu. Please check it.


2007-1-24 23:52 klemm
Reply #3 Passion's post

Thanks for looking into this.

I'm still using Delphi 7. Not going to move to BDS for some time.

But what is the problem with virtual tree?
I seem to remember that they used Mike Lischkes virtual string tree ([url][/url] in many places (project manager, structure pane, message view, refactoring window).

I'm somewhat familiar with the component. TBaseVirtualTree.GetSortedSelection will return all selected nodes.
It returns a TNodeArray.
TNodeArray = array of PVirtualNode;
PVirtualNode = ^TVirtualNode;
TVirtualNode = packed record
    Index,                   // index of node with regard to its parent
    ChildCount: Cardinal;    // number of child nodes
    NodeHeight: Word;        // height in pixels
    States: TVirtualNodeStates; // states describing various properties of the node (expanded, initialized etc.)
    Align: Byte;             // line/button alignment
    CheckState: TCheckState; // indicates the current check state (e.g. checked, pressed etc.)
    CheckType: TCheckType;   // indicates which check type shall be used for this node
    Dummy: Byte;             // dummy value to fill DWORD boundary
    TotalCount,              // sum of this node, all of its child nodes and their child nodes etc.
    TotalHeight: Cardinal;   // height in pixels this node covers on screen including the height of all of its
                             // children
    // Note: Some copy routines require that all pointers (as well as the data area) in a node are
    //       located at the end of the node! Hence if you want to add new member fields (except pointers to internal
    //       data) then put them before field Parent.
    Parent,                  // reference to the node's parent (for the root this contains the treeview)
    PrevSibling,             // link to the node's previous sibling or nil if it is the first node
    NextSibling,             // link to the node's next sibling or nil if it is the last node
    FirstChild,              // link to the node's first child...
    LastChild: PVirtualNode; // link to the node's last child...
    Data: record end;        // this is a placeholder, each node gets extra data determined by NodeDataSize

Hope that helps!

2007-1-24 23:55 klemm
Oh.. i guess i should click refresh before posting next time.

Will check the build right now!

2007-1-25 00:40 klemm
I assigned Ctrl+Alt+Down as shortcut in delphi 7. It worked. Very nice!

I tried with BDS also - ctrl+alt+down/up are assigned by ide to jump to next/previous function. So i assigned ctrl+< for testing. It does not work. When i press the shortcut i will be moved to currently selected message postition in editor. When i double-click on next message then the shortcut location changes. It seems VK_DOWN is not handled as it should be.

Please make "previous message line tool" too :loveliness:

2007-1-25 10:29 Passion
OK. Thanks your hint.
We'll try to fix the problem in BDS. BTW, what's your BDS Version? 2005 or 2006?

For "previous message line tool", maybe we can provide a PascalScript to do this. It should work the same way.

2007-1-25 12:34 klemm
BDS is 2006.

2007-1-25 22:32 Passion
Hi, during our investigation, In BDS, Virtual tree will capture Ctrl and do some othe work. So if we define the shortcut contains Ctrl, it will be uses in VirtualTree, not in shortcut,

If you define the shortcut as an Alt+xxxx, it should works.

2007-1-26 01:18 klemm
It's working with Alt+key in BDS2006.

2007-1-26 09:21 Passion
In 285 we've add a "previous " tool in the same way. Please check it. :)

2007-1-26 19:53 Passion
In 286, we use a hook way and resolve this problem, now Ctrl can be used. Please test it once it comes out for download.

2007-1-27 04:37 klemm

286 installer is incomplete.
File size is 1,2mb while others are around 11,7mb.

2007-1-27 11:18 Passion
Oh. yes. My network crashed last night.:L

Now I re-upload it.

2007-1-27 11:59 klemm
Hey, where did 286 go now? It disappeared mid-download (a very slow download.. about 2kB/s). :funk:

2007-1-27 12:30 Passion
Now it should be OK.
I just re-upload it again.

Our poor network......

2007-1-27 13:41 klemm
I'm sorry to report that the shortcuts you assigned don't work. When i press Ctrl+del, it will just delete a character in source. Ctrl+Sysrq does nothing.
However Ctrl + , and Ctrl + . work nicely in BDS2006.

I'm already accustomed to this tool and have saved at least 10 minutes thanks to it :lol
But seriously speaking - i feel the workflow is greatly improved.

[[i] Last edited by  klemm at 2007-1-27 07:50 [/i]]

2007-1-27 23:17 Passion
The shortcut problem maybe comes from the keyboard layout. Actually I use Ctrl +,. to do the previous/next message line in my workstation, not Ctrl+del/sysrq, which is shown on others.

I'll do some shortcut conversion on next new build.

2007-1-28 00:10 Passion
Hi, klemm, Would you like to download 287 to test it again? I modified the shortcut convert routine to use Ctrl+, and Ctrl + .

2007-1-30 08:15 klemm
I don't understand what you changed.
287 is still working fine with ctrl+alt+down/up in D7 and with ctrl+,/. in BDS2006.
I can not test ctrl+del or ctrl+sysrq because i'm unable to assign these keys with shortcut selector.

2007-1-30 08:54 Passion
I mean now in 287 we use Ctrl,/. as the DEFAULT shortcuts of prev/next message line tool.

But if other shortcuts were  assigned in previous CnWizards and were kept, the DEFAULT shortcuts are overrided and maybe can not be tested, except restoring default settings of CnWizards.

The shortcuts ctrl+del or ctrl+sysrq are not our purpose, if these 2 appears in default settings, it should be a bug, which is in 286.

2007-1-30 10:45 klemm
Ok. Thanks for explaining.

I'll now go and create a new thread -- i have another new feature idea :)

页: [1]

Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.