unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "Eric M. Ludlam" <eric@siege-engine.com>
To: joakim@verona.se
Cc: Tom <levelhalom@gmail.com>,
	Lennart Borgman <lennart.borgman@gmail.com>,
	emacs-devel@gnu.org
Subject: Re: Emacs learning curve
Date: Tue, 03 Aug 2010 18:07:03 -0400	[thread overview]
Message-ID: <4C589307.5060106@siege-engine.com> (raw)
In-Reply-To: <m3k4o8lrkj.fsf@verona.se>

On 08/02/2010 03:53 PM, joakim@verona.se wrote:
> Lennart Borgman<lennart.borgman@gmail.com>  writes:
>
>> On Mon, Aug 2, 2010 at 8:39 PM, Tom<levelhalom@gmail.com>  wrote:
>>>
>>> And why not add these by simply reusing the work of others?
>>>
>>> The most requested and popular features are code
>>> completion, refactoring and such. I know CEDET can do some of
>>> these, but I wonder if Emacs should harness the effort put into
>>> these areas by other development teams.
>>>
>>> Take a look at the screenshots IdeBridge for example:
>>>
>>> http://www.emacswiki.org/emacs/IdeBridge>
>>>
>>> It uses SharpDevelop libraries to provide completion. I know a
>>> pure elisp solution would be the best, but given the plethora of
>>> languages it's not a realistic goal to provide a comprehensive
>>> Elisp backend solution for everything due to limited developer
>>> resources.
>>>
>>> The best approach may be to provide a standard code
>>> completion (refactoring, documentation lookup, etc.) frontend in
>>> Emacs into which any backend implementation can be
>>> plugged. People would write bridge code like in the above example
>>> to handle communication between the frontend and the selected
>>> backend. There are no licensing issues, because it can work
>>> with process communication.
>>
>>
>> I think that CEDET already makes this possible, but Eric can surely
>> give a better answer. (Maybe this should be pointed out very clearly
>> in Emacs doc, at least as a goal?)
>
> Just to reiterate, (Eric will surely put it better):
> - Cedet is as the name implies "a Collection of Emacs Development Tools"
> - One tool is Semantic, which basically is a collection of interfaces
> and different implementations of parsers for various languages
> - It is possible to implement the semantic interfaces on various
> different backends, several such implementations are included in Emacs.
>
> I worked on a couple of such implementations, and while its not always
> super obvious how to do it, I think anyone with a genuine interest in
> implementing a new backend to Semantic can do it. In fact, not using the
> Cedet interfaces is what would be a waste, its the best shot Emacs has
> at implementing these modern ide facilities.

As is suggested above, CEDET is a a bunch of interfaces with default 
back-ends and front ends.  It is similar in nature to GUD or the VC 
stuff, but instead uses different mechanisms to create the abstraction.

A large portion of the miscellaneous tools in CEDET use EIEIO to create 
a series of base classes that define the interface or API that some user 
interface interacts with.  Some examples are:

EDE - This defines some basic concepts of what a project and target are. 
  It then implements project styles for Automake, Make, Emacs, Linux, 
and some others.  On top of these classes is global-ede-mode.  This 
defines a menu and some misc keybindings for compilation or whatever.

In the context of some external tool like SharpDevelop, Visual Studio, 
Eclipse or whatever, if it is possible to read those project files EDE 
can wrap it and the implementation can dispatch back out to that tool to 
do the project management work.  Someone who then learns how to work in 
one kind of project in Emacs (via keybindings or what-not) will know how 
to work in another project even if the back-end is totally different.

Semantic then uses the EDE interfaces to provide project level 
configuration of what files to search or what CPP macros exist.

SemanticDB - The databases used by Semantic to track tag info which is 
used for completion is also based on EIEIO classes.  The default just 
saves stuff to disk, but other back-ends, such as the Emacs backend uses 
Emacs commands to lookup symbols, or the GNU Global backend can query a 
GNU Global database.

The Semantic tools also use mode-local to create an interface boundary. 
  In this case, on a per-mode basis.  Thus the C++ support use the 
parser generator in Semantic to parse the code in a buffer and save off 
the tags.  External parsers can be installed used instead, such as the 
exuberent ctags parser, so on a per-mode basis, you can configure and 
use different backends.

The completion engine is the same.  If there is an alternate 
implementation for creating a list of possible completions for a 
particular mode, you can override the right function to provide the 
output.  Any tool that uses Semantic's smart completion engine would 
then automatically start using the new external tool (such as 
SharpDevelop) instead.

Not yet a part of Emacs, the COGRE UML tool uses the Semantic back end, 
mode-local override features, and EIEIO to generate code from high-level 
concepts such as class diagrams.  COGRE uses EIEIO, and any kind of 
connected graph could be created besides the UML implementation.

I hope this helps answer questions.  I do think that the original 
poster's desire for a place to put a back-end already exists in the 
CEDET infrastructure, and if it doesn't do it perfectly for some case, 
we can certainly tweak the API if needed.

Eric



  reply	other threads:[~2010-08-03 22:07 UTC|newest]

Thread overview: 313+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-09 19:12 Emacs learning curve Noah Lavine
2010-07-10  6:55 ` Eli Zaretskii
2010-07-10 10:36   ` Tom
2010-07-10 11:17     ` Eli Zaretskii
2010-07-10 11:41       ` Lennart Borgman
2010-07-10 15:07         ` Tom
2010-07-10 16:23           ` Alfred M. Szmidt
2010-07-10 16:39             ` Deniz Dogan
2010-07-10 16:44             ` Lennart Borgman
2010-07-11  1:22               ` Sean Sieger
2010-07-11  8:33               ` Alfred M. Szmidt
2010-07-11 11:10                 ` Lennart Borgman
2010-07-12 16:54                   ` Alfred M. Szmidt
2010-07-12 17:08                     ` Lennart Borgman
2010-07-12 17:45                       ` joakim
2010-07-12 17:59                         ` Lennart Borgman
2010-07-13  6:41                         ` David Kastrup
2010-07-12 17:53                       ` Alfred M. Szmidt
2010-07-12 17:48                     ` Drew Adams
2010-07-12 18:05                       ` Lennart Borgman
2010-07-10 17:57             ` Tom
2010-07-10 18:32               ` Bernardo Barros
2010-07-10 21:03               ` David Kastrup
2010-07-11  8:34                 ` Tom
2010-07-11 10:51                   ` Sebastian Rose
2010-07-11 16:05                     ` Juri Linkov
2010-07-11 16:55                       ` Miles Bader
2010-07-11 17:14                         ` Chong Yidong
2010-07-11 17:59                           ` David De La Harpe Golden
2010-07-11 18:01                             ` David De La Harpe Golden
2010-07-11 19:00                             ` Jan Djärv
2010-07-11 19:08                               ` David De La Harpe Golden
2010-07-11 22:49                             ` Chong Yidong
2010-07-12  7:25                               ` Eli Zaretskii
2010-07-12  9:00                                 ` David De La Harpe Golden
2010-07-12  9:30                                   ` Eli Zaretskii
2010-07-12 20:56                                     ` David De La Harpe Golden
2010-07-11 18:00                           ` Drew Adams
2010-07-11 22:49                             ` Chong Yidong
2010-07-11 23:18                               ` Drew Adams
2010-07-11 18:05                           ` Sebastian Rose
2010-07-11 18:15                             ` Clipboard interactions [was: Re: Emacs learning curve] David De La Harpe Golden
2010-07-11 18:45                               ` David De La Harpe Golden
2010-07-11 23:14                         ` Clipboard interactions [was: " Juri Linkov
2010-07-12  9:00                           ` Clipboard interactions Miles Bader
2010-07-12 15:57                             ` Stephen J. Turnbull
2010-07-12 16:59                               ` Jan Djärv
2010-07-13  2:06                                 ` Stephen J. Turnbull
2010-07-13  7:53                                   ` Jan Djärv
2010-07-13  8:41                                     ` Stephen J. Turnbull
2010-07-11 15:08                   ` Emacs learning curve Drew Adams
2010-08-04 20:54           ` Walter Alejandro Iglesias
2010-08-05 17:39             ` Barry Fishman
2010-08-06  2:48               ` Stephen J. Turnbull
2010-08-06  2:59               ` Lennart Borgman
2010-08-06  3:10                 ` Miles Bader
2010-08-06  5:18                 ` Stephen J. Turnbull
2010-08-06 11:43                 ` Walter Alejandro Iglesias
2010-07-10 23:22         ` Juri Linkov
2010-07-11  1:00         ` Sean Sieger
2010-07-11  1:44           ` Óscar Fuentes
2010-07-11  2:14           ` Lennart Borgman
2010-07-11  2:23             ` Sean Sieger
2010-07-11  2:47               ` Lennart Borgman
2010-07-18 19:33         ` Giorgos Keramidas
2010-08-02  9:19       ` Stefan Monnier
2010-08-02 13:26         ` Juanma Barranquero
2010-08-02 14:57           ` Tassilo Horn
2010-08-02 15:00             ` Juanma Barranquero
2010-08-02 15:50             ` Lennart Borgman
2010-08-02 18:19               ` Tassilo Horn
2010-08-02 20:31             ` Stefan Monnier
2010-08-02 21:42               ` Johan Bockgård
2010-08-04 17:49                 ` Stefan Monnier
2010-08-02 14:16         ` Drew Adams
2010-08-02 15:07           ` Sean Sieger
2010-08-02 15:55           ` Lennart Borgman
2010-08-02 20:35           ` Stefan Monnier
2010-08-02 21:11             ` Drew Adams
2010-08-02 18:13         ` Eli Zaretskii
2010-08-02 18:37           ` Lennart Borgman
2010-08-02 19:10             ` Eli Zaretskii
2010-08-02 20:02               ` Lennart Borgman
2010-08-03  5:57                 ` David Kastrup
2010-08-02 18:39           ` Tom
2010-08-02 18:43             ` Lennart Borgman
2010-08-02 19:53               ` joakim
2010-08-03 22:07                 ` Eric M. Ludlam [this message]
2010-08-04  9:13                   ` David Kastrup
2010-08-04  9:42                     ` Alex Ott
2010-08-03  3:33           ` Stephen J. Turnbull
2010-08-03 18:45         ` Andy Wingo
2010-08-04 12:36           ` Stefan Monnier
2010-07-10 15:01   ` Noah Lavine
  -- strict thread matches above, loose matches on Subject: below --
2010-08-02 19:02 grischka
2010-07-15 15:05 grischka
2010-07-14 17:14 grischka
2010-07-14 18:05 ` Drew Adams
2010-07-15  8:33   ` Uday S Reddy
2010-07-15 13:49     ` Drew Adams
2010-07-16  1:31   ` Richard Stallman
2010-07-16  2:52     ` Miles Bader
2010-07-16  5:30     ` David Kastrup
2010-07-13  2:13 grischka
2010-07-13  5:58 ` Drew Adams
2010-07-12 19:18 grischka
2010-07-12 20:53 ` Óscar Fuentes
2010-07-12 21:07   ` immanuel litzroth
2010-07-12 22:03   ` Drew Adams
2010-07-12 22:29     ` Óscar Fuentes
2010-07-12 23:22       ` Drew Adams
2010-07-12 23:53         ` Óscar Fuentes
2010-07-13  1:17           ` Drew Adams
2010-07-13  3:07             ` Óscar Fuentes
2010-07-13  5:59               ` Drew Adams
2010-07-14  8:18                 ` Tom
2010-07-14  9:38                   ` David Kastrup
2010-07-14 10:31                     ` Tom
2010-07-14 18:32                       ` David Kastrup
2010-07-15  8:22                       ` Miles Bader
2010-07-15  8:51                         ` Tom
2010-07-15  9:05                           ` Eli Zaretskii
2010-07-15  9:27                             ` Tom
2010-07-15  9:41                               ` David Kastrup
2010-07-15 10:09                                 ` Tom
2010-07-15 10:24                                   ` David Kastrup
2010-07-15 10:31                                     ` Tom
2010-07-15 15:05                                 ` Óscar Fuentes
2010-07-15 15:15                                   ` David Kastrup
2010-07-15 15:39                                   ` Eli Zaretskii
2010-07-16  4:35                                     ` Stephen J. Turnbull
2010-07-16  9:15                                     ` Uday S Reddy
2010-07-16  9:25                                       ` Miles Bader
2010-07-16 10:39                                       ` Tassilo Horn
2010-07-15 10:00                               ` Eli Zaretskii
2010-07-15 10:14                                 ` Tom
2010-07-15 10:25                                   ` David Kastrup
2010-07-15 10:34                                   ` Eli Zaretskii
2010-07-16 16:56                           ` Alfred M. Szmidt
2010-07-16 17:12                             ` Óscar Fuentes
2010-07-16 17:27                               ` Tassilo Horn
2010-07-16 17:38                                 ` Óscar Fuentes
2010-07-16 18:11                                   ` Teemu Likonen
2010-07-16 18:23                                     ` Tassilo Horn
2010-07-16 20:10                                       ` Teemu Likonen
2010-07-16 22:16                                         ` Miles Bader
2010-07-17  5:45                                           ` David Kastrup
2010-07-16 23:07                                         ` Sean Sieger
2010-07-17  6:02                                           ` Teemu Likonen
2010-07-17  6:29                                             ` Tassilo Horn
2010-07-17  7:21                                             ` David Kastrup
2010-07-17  7:43                                               ` Teemu Likonen
2010-07-17 12:15                                             ` Juri Linkov
2010-07-17 12:27                                               ` David Kastrup
2010-07-17 13:01                                                 ` John Yates
2010-07-17 16:15                                                 ` Juri Linkov
2010-07-17 12:50                                               ` Andreas Schwab
2010-07-17 16:11                                                 ` Juri Linkov
2010-07-19 19:39                                               ` Andy Wingo
2010-07-19 19:47                                                 ` David Kastrup
2010-07-17 14:28                                             ` Uday S Reddy
2010-07-17 15:56                                               ` Teemu Likonen
2010-07-18 13:00                                                 ` Stephen J. Turnbull
2010-07-18 19:21                                                   ` Teemu Likonen
2010-07-20  1:56                                                     ` Stephen J. Turnbull
2010-07-20 23:25                                                       ` Kim F. Storm
2010-07-17  6:09                                         ` Tassilo Horn
2010-07-22 12:15                                           ` Lennart Borgman
2010-07-22 13:16                                             ` Tassilo Horn
     [not found]                                               ` <770DFAD9-23D5-4BD3-A209-7E64FFC8999C@gmail.com>
     [not found]                                                 ` <201007230857.48161.tassilo@member.fsf.org>
2010-07-23 12:53                                                   ` Ivan Andrus
2010-07-16 18:15                                   ` Tassilo Horn
2010-07-16 18:59                                     ` Óscar Fuentes
2010-07-16 19:02                                       ` David Kastrup
2010-07-16 19:14                                         ` Óscar Fuentes
2010-07-16 18:16                                 ` Jan Djärv
2010-07-22 17:52                               ` Alfred M. Szmidt
2010-07-22 18:04                                 ` Óscar Fuentes
2010-07-22 18:38                                   ` Alfred M. Szmidt
2010-07-22 18:40                                 ` Lennart Borgman
2010-07-22 22:29                           ` Stefan Monnier
2010-07-16  9:04                       ` Uday S Reddy
2010-07-16 19:05                       ` Ivan Kanis
2010-07-16 22:26                         ` Miles Bader
2010-07-17 17:08                           ` Ivan Kanis
2010-07-17 17:51                             ` Chong Yidong
2010-07-22 11:36                               ` Lennart Borgman
2010-07-22 12:14                                 ` Tassilo Horn
2010-07-22 12:18                                   ` Lennart Borgman
2010-07-22 13:03                                     ` Tassilo Horn
2010-07-22 18:01                                   ` Ivan Kanis
2010-07-22 19:45                                     ` David Kastrup
2010-07-22 19:56                                       ` Wojciech Meyer
2010-07-22 21:58                                         ` Stephen Eilert
2010-07-23  6:08                                           ` David Kastrup
2010-07-23  6:23                                             ` Fren Zeee
2010-07-23 18:23                                           ` Dirk-Jan C. Binnema
2010-07-23  7:28                                       ` Alfred M. Szmidt
2010-07-22 12:24                                 ` David Kastrup
2010-07-22 12:37                                   ` Lennart Borgman
2010-07-22 14:20                                 ` Davis Herring
2010-07-22 15:59                                   ` Lennart Borgman
2010-07-22 17:52                               ` Alfred M. Szmidt
2010-07-17 20:09                             ` Miles Bader
2010-07-17 11:15                         ` Dirk-Jan C. Binnema
2010-07-21 15:31                         ` Stefan Monnier
2010-07-21 15:48                           ` Sebastian Rose
2010-07-21 16:50                           ` David Kastrup
2010-07-22 17:52                         ` Alfred M. Szmidt
2010-07-22 18:40                           ` David Kastrup
2010-07-22 19:21                             ` David Kastrup
2010-07-22 19:27                               ` Wojciech Meyer
2010-07-25 12:33                                 ` Lennart Borgman
2010-07-25 14:22                                   ` Drew Adams
2010-07-25 14:59                                     ` Lennart Borgman
2010-07-25 16:04                                       ` Drew Adams
2010-07-25 20:32                                     ` Fabian Ezequiel Gallina
2010-07-23 17:20                               ` Lennart Borgman
2010-07-23 17:57                                 ` Miles Bader
2010-07-23 18:19                                   ` Drew Adams
2010-07-24  3:33                                   ` Lennart Borgman
2010-07-24  4:51                                     ` Miles Bader
2010-07-24 11:52                                       ` Kim F. Storm
2010-07-24 14:09                                         ` Miles Bader
2010-07-25  2:07                                         ` David Robinow
2010-07-23 13:47                       ` Stefan Monnier
2010-07-23 14:41                         ` Tom
2010-07-23 16:02                           ` Drew Adams
2010-07-23 17:50                             ` Óscar Fuentes
2010-07-23 18:07                               ` Drew Adams
2010-07-23 20:28                                 ` Óscar Fuentes
2010-07-23 22:21                                   ` Drew Adams
2010-07-23 23:46                                     ` Óscar Fuentes
2010-07-23 23:52                                       ` Óscar Fuentes
2010-07-24  1:16                                       ` Drew Adams
2010-07-24 14:30                                 ` Sean Sieger
2010-07-23 19:12                               ` Tom
2010-07-24  8:55                                 ` Leo
2010-07-24 13:48                                   ` joakim
2010-07-24 17:57                                   ` Wojciech Meyer
2010-07-23 18:25                             ` Juanma Barranquero
2010-07-23 18:50                               ` Drew Adams
2010-07-23 19:27                                 ` Juanma Barranquero
2010-07-24  6:38                                 ` Ivan Andrus
2010-07-23 17:46                           ` Lennart Borgman
2010-07-14 12:13                 ` René Kyllingstad
2010-07-13  1:58           ` Stephen J. Turnbull
2010-07-13  3:25             ` Óscar Fuentes
2010-07-13  6:17               ` Stephen J. Turnbull
2010-07-13  6:34               ` Tom
2010-07-13  8:02                 ` Stephen J. Turnbull
2010-07-13  8:32                   ` Tom
2010-07-13  9:03                     ` Stephen J. Turnbull
2010-07-13  9:20                       ` Tom
2010-07-13  9:19                     ` immanuel litzroth
2010-07-13 11:59                     ` Eric M. Ludlam
2010-07-13 12:07                       ` David Kastrup
2010-07-13 12:54                         ` joakim
2010-07-13 15:33                           ` David Kastrup
2010-07-13 15:49                             ` joakim
2010-07-13 18:02                               ` Alex Ott
2010-07-13 16:12                             ` David Engster
2010-07-13 16:26                               ` David Kastrup
2010-07-13 18:45                                 ` David Engster
2010-07-14  2:49                                   ` Stephen J. Turnbull
2010-07-14 11:43                                     ` Eric M. Ludlam
2010-07-14 13:06                                       ` David Engster
2010-07-13 17:12                               ` Chong Yidong
2010-07-13 22:09                                 ` Eric M. Ludlam
2010-07-13 12:19                       ` joakim
2010-07-13 12:41                       ` Tom
2010-07-13 20:08     ` Joe Brenner
2010-07-14 17:16       ` Richard Stallman
2010-07-13 21:01     ` Sean Sieger
2010-07-13 21:14       ` Drew Adams
2010-07-13 21:58         ` Sean Sieger
2010-07-14 10:41     ` Uday S Reddy
2010-07-14 14:03       ` Drew Adams
2010-07-14 18:36         ` David Kastrup
2010-07-12 23:28   ` Alfred M. Szmidt
2010-07-13  0:18     ` Óscar Fuentes
2010-07-13 16:54       ` Uday S Reddy
2010-07-13 23:27       ` Richard Stallman
2010-07-13  7:56   ` christian.lynbech
2010-07-13  8:10     ` David Kastrup
2010-07-13  8:44       ` joakim
2010-07-13  9:09       ` immanuel litzroth
2010-07-13 11:43       ` Eric M. Ludlam
2010-07-13 23:36     ` Óscar Fuentes
2010-07-13  9:23   ` Eli Zaretskii
2010-07-13 22:37     ` Óscar Fuentes
2010-07-14  0:24       ` Juanma Barranquero
2010-07-14  2:32       ` Stephen J. Turnbull
2010-07-14  7:19       ` Eli Zaretskii
2010-07-13  9:49   ` Miles Bader
2010-07-13 23:06     ` Óscar Fuentes
2010-07-13 13:51 ` Richard Stallman
2010-07-13 14:10   ` David Kastrup
2010-07-13 17:03     ` Uday S Reddy
2010-07-13 18:29   ` grischka
2010-07-14 17:16     ` Richard Stallman
2010-07-15 15:36       ` grischka
2010-07-29 20:46       ` Ted Zlatanov
2010-07-31 12:02         ` Sean Sieger
2010-07-31 13:32           ` martin rudalics
2010-07-31 13:44             ` Eli Zaretskii
2010-07-31 15:04               ` martin rudalics
2010-08-02 14:56           ` Ted Zlatanov
2010-08-02 15:43             ` Sean Sieger
2010-07-10 19:27 MON KEY
2010-07-11  2:16 ` Lennart Borgman
2010-07-11  3:39   ` MON KEY
2010-07-11 11:05     ` Lennart Borgman
2010-07-08  7:44 Efforts to attract more users? joakim
2010-07-09  3:05 ` Richard Stallman
2010-07-09  7:33   ` Emacs learning curve (was Re: Efforts to attract more users?) christian.lynbech
2010-07-09  7:43     ` Emacs learning curve Masatake YAMATO

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4C589307.5060106@siege-engine.com \
    --to=eric@siege-engine.com \
    --cc=emacs-devel@gnu.org \
    --cc=joakim@verona.se \
    --cc=lennart.borgman@gmail.com \
    --cc=levelhalom@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).