tag:blogger.com,1999:blog-1392831648878588806.post1114609625150737560..comments2022-04-27T19:46:55.651+03:00Comments on The Itinerant Developer: Mysteries of IDE plugins: Painting in the code editor (Part 1)Davehttp://www.blogger.com/profile/05039004653244724673noreply@blogger.comBlogger16125tag:blogger.com,1999:blog-1392831648878588806.post-37772452524603756242014-05-14T17:06:35.143+03:002014-05-14T17:06:35.143+03:00Well, I have one idea :) SublimeText beautiful min...Well, I have one idea :) SublimeText beautiful minimap feature.<br />http://en.wikipedia.org/wiki/Sublime_Text#InterfaceIlyaShttps://www.blogger.com/profile/08819308219512123442noreply@blogger.comtag:blogger.com,1999:blog-1392831648878588806.post-7174585906810896602014-05-12T16:07:22.574+03:002014-05-12T16:07:22.574+03:00$5 for every feature ;)
Bookmarks are looking usef...$5 for every feature ;)<br />Bookmarks are looking useful already. Autosaving IDE layout, opening unit into code (not to form designer). This doesn't sound like painting in the code window, right?IlyaShttps://www.blogger.com/profile/08819308219512123442noreply@blogger.comtag:blogger.com,1999:blog-1392831648878588806.post-12909381424511996572014-05-11T14:05:27.573+03:002014-05-11T14:05:27.573+03:00Hi Jacob,
Thanks for the kind words!
I have actu...Hi Jacob,<br /><br />Thanks for the kind words!<br /><br />I have actually figured out some of that already - much of it through looking at CnPack, which gave definitions for two of the parameters (line and logical line numbers.) Ditto for IsLineElided, the use of which you can see in the screenshot at the bottom of the blog post. I didn't want to confuse the first article by getting into Davehttps://www.blogger.com/profile/05039004653244724673noreply@blogger.comtag:blogger.com,1999:blog-1392831648878588806.post-338899751500974642014-05-11T13:54:59.008+03:002014-05-11T13:54:59.008+03:00Thanks Rodrigo, I'll look into that. I saw yo...Thanks Rodrigo, I'll look into that. I saw your article using Delphi Detours for hooking the docked form title bar painting too (http://theroadtodelphi.wordpress.com/2014/05/09/patching-the-dock-title-bar-using-delphi-detours-library/) which looks like a great example of using DD inside the IDE.Davehttps://www.blogger.com/profile/05039004653244724673noreply@blogger.comtag:blogger.com,1999:blog-1392831648878588806.post-30674808164191273642014-05-09T20:25:25.103+03:002014-05-09T20:25:25.103+03:00Hi Dave, great work figuring this out. This is ind...Hi Dave, great work figuring this out. This is indeed one of the techniques I use for things like Castalia's advanced syntax highlighting (http://twodesk.com/castalia/smart_syntax_highlighting.html).<br /><br />I know how big of an undertaking this is. Can I take the liberty of filling in a few blanks?<br /><br />The integer parameters of PaintLine are a bit different depending on which Jacob Thurmanhttps://www.blogger.com/profile/03844278559588296344noreply@blogger.comtag:blogger.com,1999:blog-1392831648878588806.post-12112007082114243762014-05-08T17:21:01.107+03:002014-05-08T17:21:01.107+03:00Dave, the Delphi Detours Library (https://code.goo...Dave, the Delphi Detours Library (https://code.google.com/p/delphi-detours-library/) is implemented using trampolines, you can take a look to the sample apps on the project and also check the code of this unit https://code.google.com/p/delphi-ide-theme-editor/source/browse/trunk/delphi-ide-theme-editor/IDE%20PlugIn/Colorizer.Hooks.pas which patch some methods of the Delphi IDE.Rodrigohttps://www.blogger.com/profile/08910625562473366684noreply@blogger.comtag:blogger.com,1999:blog-1392831648878588806.post-55228055592491200092014-05-08T11:35:11.686+03:002014-05-08T11:35:11.686+03:00Jeroen: Commercial. It's a side project beyon...Jeroen: Commercial. It's a side project beyond the consulting I'm doing at the moment. My plan is to make several small, low-cost plugins, each doing one thing, rather than one single big plugin with many features. I hope that will let people pick and choose what they want added to the their IDE, and make it more affordable as well.<br /><br />If it doesn't work out - and we're Davehttps://www.blogger.com/profile/05039004653244724673noreply@blogger.comtag:blogger.com,1999:blog-1392831648878588806.post-16317451924398145692014-05-08T11:18:44.958+03:002014-05-08T11:18:44.958+03:00Glad you like it!Glad you like it!Davehttps://www.blogger.com/profile/05039004653244724673noreply@blogger.comtag:blogger.com,1999:blog-1392831648878588806.post-20710924779457937462014-05-08T11:18:14.375+03:002014-05-08T11:18:14.375+03:00That's an excellent point. I've wondered ...That's an excellent point. I've wondered about - but haven't measured - the performance effects of constantly rewriting the memory every paint call. I used it, basically, because it worked :)<br /><br />Do you have any suggestions about trampolining patch libraries to use instead of this code?Davehttps://www.blogger.com/profile/05039004653244724673noreply@blogger.comtag:blogger.com,1999:blog-1392831648878588806.post-30056829804898039312014-05-08T07:39:52.884+03:002014-05-08T07:39:52.884+03:00Interesting reading indeed. I am a little puzzled ...Interesting reading indeed. I am a little puzzled that you would use a patching approach that does not utilize a trampoline to avoid re-writing the same memory multiple times on every function call, especially for something called as often as a paint routine. With a trampoline, you can call the original code without having to unpatch and repatch it each time. Maybe that can be an optimization forAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-1392831648878588806.post-742017887207143482014-05-07T23:46:23.100+03:002014-05-07T23:46:23.100+03:00Great post. Thanks for the info, and keep it comi...Great post. Thanks for the info, and keep it coming.Nickhttps://www.blogger.com/profile/11064374653331712448noreply@blogger.comtag:blogger.com,1999:blog-1392831648878588806.post-38610153036705702092014-05-07T18:30:28.623+03:002014-05-07T18:30:28.623+03:00Are these going to be commercial plugins or open s...Are these going to be commercial plugins or open source ones? If the latter: would you be willing to merge them in GExperts?Anonymoushttps://www.blogger.com/profile/04244706419710554421noreply@blogger.comtag:blogger.com,1999:blog-1392831648878588806.post-79583421363670453082014-05-07T18:00:30.162+03:002014-05-07T18:00:30.162+03:00You're welcome, glad you found it useful.
I d...You're welcome, glad you found it useful.<br /><br />I do try to reference things in my posts - IMO a good informative post will tend to have lots of other material "behind" it, the items/knowledge on which it is based. Linking to those makes the post like a Wikipedia article, higher value than the text alone.Davehttps://www.blogger.com/profile/05039004653244724673noreply@blogger.comtag:blogger.com,1999:blog-1392831648878588806.post-82719240498642839472014-05-07T17:56:54.153+03:002014-05-07T17:56:54.153+03:00Great :) Out of interest, what is "inexpensi...Great :) Out of interest, what is "inexpensive" as a reasonable price for a plugin?<br /><br />As for useful - I hope all will be useful. Are there any specific things you would like to see implemented, though? I have a text file on my Desktop with just under forty different ideas at the moment, all of which I'd like to do... an impossible task without having it as fulltime Davehttps://www.blogger.com/profile/05039004653244724673noreply@blogger.comtag:blogger.com,1999:blog-1392831648878588806.post-46193881962526781532014-05-07T12:46:04.760+03:002014-05-07T12:46:04.760+03:00Excellent post, thanks a lot Dave. I've learnt...Excellent post, thanks a lot Dave. I've learnt a lot. Also, thanks for putting links to another articles like the one about code mangling.Soul Intruderhttps://www.blogger.com/profile/16873694208138872553noreply@blogger.comtag:blogger.com,1999:blog-1392831648878588806.post-22276351407075370412014-05-07T12:24:25.779+03:002014-05-07T12:24:25.779+03:00Well, I'm interested in trying your IDE plugin...Well, I'm interested in trying your IDE plugins and may be buy it if inexpensive and useful.IlyaShttps://www.blogger.com/profile/08819308219512123442noreply@blogger.com