comp.lang.ada
 help / color / mirror / Atom feed
From: Stephen Leake <stephen_leake@stephe-leake.org>
Subject: Re: IDE's that support ADA
Date: Wed, 29 Oct 2014 16:47:25 -0500
Date: 2014-10-29T16:47:25-05:00	[thread overview]
Message-ID: <85egtqwnte.fsf@stephe-leake.org> (raw)
In-Reply-To: alpine.CYG.2.11.1410280739140.5220@WIL414CHAPIN.vtc.vsc.edu

Peter Chapin <PChapin@vtc.vsc.edu> writes:

> On Tue, 28 Oct 2014, Stephen Leake wrote:
>
>> Interesting. The latest version of Emacs was released 20 Oct 2014.
>> In what sense is it not "modern"?
>>
>> What does Visual Studio have that you believe Emacs doesn't have,
>> that you find useful? It is often somewhat difficult to find and
>> turn on various features in Emacs.
>
> Typical features of modern IDEs include: displaying semantic errors
> (type errors, etc) as you type, 

Meaning it attempts to parse the syntax after typing every character? So
if you start typing 'if ... then ... else .. end if', you get errors
until you type 'endif'? Yuck.

The current Emacs Ada mode indentation engine fails in that scenario
because the parse fails, and I'm working to make the parser tolerant of
errors so the indentation works.

On the other hand, Emacs Ada mode will tell you of the first current
syntax error if you ask it (which I do when indentation fails). And it
has a mode where you get that report each time you attempt to indent.

So I'll count that as "does that".

Hmm. You said "semantic", not "syntactic". So this means a full compile
with name and type resolution, not just a syntax parse. That makes sense
for simpler languages; I don't think it makes much sense for Ada.

> refactoring support, 

I've never been clear what this means, exactly. It could be:

- Rename all occurences of this identifier

    Emacs Ada mode has "show all references", which would walk thru all
    occurrences and let you rename each one; that could be enhanced
    fairly easily.

- Change the parameter list for this subprogram

    I don't see how you can automate that; you have to consider exactly
    what that means at each use. So the "walk thru all occurences" is
    useful.


- something else?

> integrated debugging, 

Has that.

> and code completion along with display of associated documentation.

There are various completion modes in Emacs; they will search open
buffers, history lists, etc.

If by this you mean "show me only possible completions that would
_compile_ here", that requires a successful semantic compile in the face of
errors. I'm working on allowing a syntax parse; that will get part way
there. 

In some simple cases you don't need a parse; if I type
"Ada.Text_IO.Put", it could offer "" and "_Line" as completions by
parsing the Ada.Text_IO spec, without parsing the current file.

More useful would be all the operations on type "Bar_Type" for object
"Foo". The GNAT cross-reference info can build that list given
"Bar_Type", so I might be able to get there.

I haven't tried completion in GPS in a while.

If the "associated documentation" for a subprogram is the comments at
the declaration, then that just requires navigating to the current
completion choice in another window. Although one editor I saw put that
in a help balloon; cute, but probably not enough space for useful info.

> Many IDEs also facilitate test case generation and profiling. 

Emacs can easily run the GNAT command line tool that does this, and
navgate thru the reports.

> In the Ada world there is integration with SPARK (for example as GPS
> does).

Not clear what "integration" means here. Again, Emacs can run the
command line tools that SPARK uses.

> Emacs is powerful and may well be able to do some or all of these
> things. Indeed, there is a Scala extension for Emacs that goes a long
> way in this direction. I believe it works by interacting directly with
> the Scala compiler behind the scenes.

Emacs Ada mode uses a mix of the GNAT compiler (for cross reference
info) and a separate parser (for indentation and lower-level navigation).

-- 
-- Stephe


  reply	other threads:[~2014-10-29 21:47 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-26 18:34 IDE's that support ADA nathandsash
2014-10-26 18:58 ` Martyn Pike
2014-10-26 19:02 ` Niklas Holsti
2014-11-14 22:38   ` rriehle
2014-11-16  0:38     ` David Botton
2014-10-26 21:33 ` David Botton
2014-10-29  1:52   ` Robert Love
2014-10-29  1:58     ` David Botton
2014-11-05 20:58       ` Wesley Pan
2014-10-28  7:38 ` Stephen Leake
2014-10-28 11:43   ` Peter Chapin
2014-10-29 21:47     ` Stephen Leake [this message]
2014-10-29 23:28       ` Peter Chapin
2014-10-29 23:48         ` Adam Beneschan
2014-11-01 21:58           ` Stephen Leake
2014-11-03 17:48             ` Adam Beneschan
2014-10-30  8:19         ` Dmitry A. Kazakov
2014-10-30 14:42           ` Adam Beneschan
2014-10-30 16:22             ` Peter Chapin
2014-11-01 22:01               ` Stephen Leake
2014-11-02 15:13                 ` Peter Chapin
2014-11-03 13:41                   ` Stephen Leake
2014-11-03  9:43                 ` IDE's that support Ada Jacob Sparre Andersen
2014-11-03 18:14                   ` Simon Wright
2014-11-04 17:46                   ` Stephen Leake
2014-11-04 19:35                     ` Simon Wright
2014-11-04 20:36                     ` Jacob Sparre Andersen
2014-11-05 14:25                       ` Stephen Leake
2014-11-01 21:53         ` IDE's that support ADA Stephen Leake
2014-11-01 22:46           ` Dmitry A. Kazakov
2014-11-02 15:10           ` Peter Chapin
2014-11-03 13:38             ` Stephen Leake
2014-11-03 17:00           ` Luke A. Guest
2014-11-03 18:52             ` David Botton
2014-11-03 19:50               ` Luke A. Guest
2014-11-03 20:46                 ` David Botton
2014-11-03 22:55                   ` Luke A. Guest
2014-11-04 18:11                     ` Stephen Leake
2014-11-04  3:41                 ` Dennis Lee Bieber
2014-11-04 18:10                 ` Stephen Leake
2014-11-04 18:03             ` Stephen Leake
2014-11-03 12:24       ` Florian Weimer
2014-10-28 12:59   ` David Botton
2014-10-29 21:51     ` Stephen Leake
2014-11-11  0:11 ` Hubert
2014-11-11  0:31   ` David Botton
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox