[66821 Closed] O2 (H2) IDE Features

Hi ,

First of all: Thank you’ve convinced me to leave Delphi. That was good advice, which I followed. Now I work with primarily with Visual Studio and Oxygene, and have a few things I want you to get rid of.

Can you please (after the launch and the stabilization of H2) give some more attention to the Visual Studio integration of your two languages? That would be totally awesome.
I work with Oxygene a while now on iOS and ASP.Net projects and really like it. However, I miss every day the ordinary IDE producttivity things in Oxygene projects , which are present when I create a C # project, for example .
Right now I find, this often conflicts with the cool features of Oxygene and Visual Studio.

Specifically, I miss:

  • Solution Explorer: " Show all items > Add to Project "
  • Solution Explorer: Support for iOS / OSX “folder based” fileTypes
  • Editor: Code completion - CASE> enumerable types automatically complete (as in Delphi)
  • Editor: Code Completion - automatic „END;“ in all block kinds
  • Editor: Built-in code snippets („live templates“) for common things
  • Code Completion : Show overloads and parameter lists with CTRL + Space (or automatically)
  • Editor: structural highlighting
  • Editor: parentheses- and block-matching (with colors or lines)
  • Editor: Code Formatting
  • Unit Test project template
  • Editor: Refactoring tools
  • Editor: an efficient sorted list CC (my types above, followed by plausible live templates and common types below, then the other stuff in alphabetical order)
  • complete and actual Item Templates (for each item type, that‘s createable in C# and Xcode)

Those missing things are a bit counter-productive and the only shortcoming with Oxygene.

The Oxygene language and the language features are absolutely cool. I’m sure, who can develop something like this, they can also build an awesome IDE integration, which let all the competitors in the rain. What do you think?

1 Like

Jens,

very good list. some of these are already in or plans, and i’ll make sure the rest gets logged. Some items, however are alfeady there:

Editor: Code completion - CASE> enumerable types automatically complete (as in Delphi)

should work already: “case myEnumVar of<enter>”

Editor: Built-in code snippets („live templates“) for common things

mayhaps they aren’t “live” (i never used Delphi’s live templates — after my time — so cannot compare), but we have code snippets, for example, type “cw<tab>” and you’ll get “Console.Write(|)”.

Editor: Refactoring tools

we recently introduced Refactor|Rename. more are coming (but concrete feature requests would be appreciated of course)

Editor: an efficient sorted list CC (my types above, followed by plausible live templates and common types below, then the other stuff in alphabetical order)

i’m not sur eif, essentially, “unsorted” CC would be feasible. when you type A, where woukdl it jump? to the A in the first section or the second? how would you ever get to the second (“not my stuff”) section, without using the mouse an scrolling for the item you want?

thanx!
marc

Doesn't work here. Perhaps a misconfigured VS2013?
     
    [RemObjects.SDK.Remotable]
    [System.Reflection.ObfuscationAttribute(Exclude := true)]
    TReturnCode = public enum (rcUnknown = 0, rcOK = 1, rcFail = 2, rcServiceNotReady = 3, rcPIDThreadNotReady = 4, rcDBNotReady = 5, rcUnauthenticated = 6, rcNoPermission = 7, rcWrongClientInterface = 8, rcHighWater = 9, rcInvalidCredentials = 10, rcToManyPendingCalljobs = 11, rcToManyBufferedCalljobs = 12, rcUserNameEmpty = 13, rcPasswordEmpty = 14, rcError_ParameterHasNoInstance = 15, rcError_Exception = 16, rcLicenseExpired = 17, rcInvalidLicenseKey = 18);

If I type:

`case ServiceRequest.ReturnCode of` 

the CC Tooltip has “OffsetType” as current item, which makes no sense in this context. If I close the CC Tooltip, go behind my “of” and press return, I get an empty case construct without the enum items.
Regardless the context - “of” comes before “Offset”. The CC should show the “of” and should complete the template on pressing “return”.

cw<tab> is working. if<tab> and so on too.
But some common templates can fire on BLANK instead of TAB within the “natural typing flow”, like:

 `if<space>(|cursor|) then (|tab to next cursorpoint|);

or

ifb<space>(|cursor|) then begin (line wrap) (|tab to next cursorpoint|) 
(line wrap) end;

The main problems are:
If a code-snippet does not exist (for example “ifb”) and I press TAB, then I’ve to press Backspace 7 times and write the “then” manually. that’s quicker without using templates :wink:
Other templates (that doesn’t match (or start with) an existing command name, like cw, should fire on tab (as they currently do)
Currently no template fires, if I press Return on it’s CC Tooltip item. Thats not a natural behavior for me.

Editor: Refactoring tools

  • extract method
  • introduce var | const | private field | protected fied | public field | property
  • intrudure method parameter for …
  • move to parent / clild class
  • put in (new or exiting) partial class
  • find usage
  • comment / uncomment
  • block comment / uncomment

i’m not sur eif, essentially, “unsorted” CC would be feasible

This is a “problem” of the endless count of classes in .Net of cause.
The CC shows any class of any referenced assembly (in some cases without to check if it’s content related or not).

quick example.
I’ve an on own type “ConfigurationItem” and have used the .Net interface “IDesignerSerializationProvider” before in my code.

If I want do create a “ConfigurationItem” instance I’ve to tyoe “ConfigurationI” before the CC tooltip reaches my own class, because .Net has dozends of class names starting with “Configuration”. But if I type ConfigurationI manually I can also append the “tem” myself. The CC didn’t help in this case.
In case of “IDesignerSerializationProvider” the CC saving the typing of “rovider”.

I think, it’d be much faster, if the CC has a “cache” of all Types, that I’ve used before in the current assembly, and priorizes the “cached classes” in the CC (in alphabetical order) directly on top of the “partical matching search result”.
code templates and -perhaps- commands are also candidates for this “priorized word cache”

<ides>
IDesignerSerializationProvider  < top used>
IDeserializationCallback;
IDesigner
---
IDesignerSerializationManager

… continue typing “e”

<idese>
IDesignerSerializationProvider <top used>
IDesignerSerializationSettings
1 Like

I would like the ability to push methods, properties into and out of base classes.

Also something like a new base class refactoring. You pick a class A, add a new class B. A ends up deriving from B and B derives from the original base of A.

Yestertay evening I’ve refactored some parts of my old Delphi “Spaghetti code” and wished me additionally refactoring things like:

  • extract method(s) into a reusable Interface
  • the combined steps:
    introduce (or move to) private (or protected) field with private (or public) property"
  • fix “upper-lower case” of class members to match the languages standards
  • embed in $REGION

Could you add this typical “colored waved underlines” to the code editor, they appear, if you write undeclared words, uncompilable code or such things? Currenty I’ve to recompile or rebuild my projects, before “error insight” tells me that’s something wrong.

The CC Tooltip is currently scrolling to the matching item. That feels “somehow wrong”, because all other code editors I know do filter the CC List items instead of scrolling to the best match.
The CC of “smart and feature rich” code editors, like AppCode, providing additionally a “contains” filter instead a “starting with”.
But the “contains filter” should be a user option.

1 Like

All good idea, yes. logging this all properly will take some time and effort, so i’ll do that next week when we all come back up for air and 7.0 s out the door. If i forget, which i will, please remind me by bumping this thread :wink:

thanx!

Next issues were logged:
66810: Solution Explorer: Support for iOS / OSX “folder based” fileTypes
35755: Implement “Show All files” in solution explorer
10078: Automatic formatting & reformatting
66811: Unit Test project template
66812: Ability to push methods, properties into and out of base classes
66817: Extract method(s) into a reusable Interface
66818: embed in $REGION
66819: Show errors while typing (without recompiling the project)
66821: Iplement find usage command
66820: Provide “contains” filter for CC

Thank you for the report.

I also tested the case on enum and it really seems broken. The issue is logged for further review (66822: Expand case items doesn’t work). Thank you for the report.

Best regards.

Thanx, Vika! Beat me to it…

bugs://67414 got closed as fixed

bugs://66817 got closed as fixed

bugs://66821 got closed as fixed

bugs://66810 got closed with status nochangereq.

bugs://66818 got closed with status wontfix.