unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: chad <yandros@gmail.com>
To: rms@gnu.org
Cc: Tim Cross <theophilusx@gmail.com>, eliz@gnu.org, emacs-devel@gnu.org
Subject: Re: Renaming eglot -- or at least add an alias?
Date: Sat, 8 Oct 2022 14:18:10 -0400	[thread overview]
Message-ID: <CAO2hHWb2RHm4KRAuuNBQ2E70Y9t0pc36oAcuR55TujOCck-8jA@mail.gmail.com> (raw)
In-Reply-To: <E1ogwAQ-00009n-UW@fencepost.gnu.org>

[-- Attachment #1: Type: text/plain, Size: 3504 bytes --]

On Fri, Oct 7, 2022 at 6:56 PM Richard Stallman <rms@gnu.org> wrote:

> It sounds like the commands for using Semantic on a file may be very
> different from the commands for using Eglot on that same file.
> Is that right?
>

"Commands" is probably the wrong way to think about both Semantic/EDE and
eglot (and lsp-mode, etc). The high-level idea in both cases is to enhance
existing emacs facilities (including those that are enabled by default,
those that are shipped with emacs but must be enabled by the user, and
those that are packaged separately from the emacs core) by adding a more
in-depth comprehension of the code the user is examining, modifying,
writing, etc.

Many of these facilities (absent something like Semantic/EDE/eglot/lsp/etc)
using heuristics, conventions, and regexp-based functionality to try to
"understand" the code, and then use that understanding to help the
programmer, for examples, with fontification, completion, pop-up
documentation, additional navigation, and the like.

I believe that a big part of the difficulty of putting a concrete handle on
"what does eglot (or semantic) do?" comes in here: many of the things that
are enabled/enhanced are already present in emacs. For example, M-. runs
xref-find-definitions to find the definition of the thing at point. Emacs
has had this functionality for a long time, and there are several optional
packages that enhance it, using TAGS, rtags, ag, or gnu global to *find*
the reference, or using helm or ivy to access the references. Semantic and
eglot (among others) add functionality that attempts to understand the code
using the same mechanism that, for example, compilers use. (In
Semantic's case, it implements compiler-like tokenizer/lexer/parser
functionality in elisp; the Language Server Protocol (LSP) approach is
instead to use an external tool, often built from the same parts as the
compiler/interpreter, and communicate the "relevant information" over a
channel to an editor).

In this sense, the "eglot commands" are just the ancillary machinery to
make the enhancements happen "in the background" -- telling emacs to start
using the facility, managing the connection and the external process, and,
importantly, configuring that external machinery. That last is important
because there is no "one true LSP server", even for a given language, so
configuration is required. We can hope that this will settle out over time,
but LSP (the protocol that the external tools use to provide
editor-agnostic* information) is still developing, and people are
discovering new ways to integrate a deeper understanding of code into
editing (and reviewing, debugging, etc.) environments.

About Semantic: as has probably become clear by the time you read this, one
of the particular issues of this precise moment in the conversation is that
Semantic *does* parse the code in question, whereas eglot instead serves as
a bridge between the external tools that parse (and more) the code and
emacs' existing (and upcoming) features for editing (reviewing, etc.) code.

In a rough analogy, Semantic can be thought of as "let's replace rcs.el
with something like CVS implemented mostly in elisp", while eglot (and its
cousin lsp-mode) are much more like VC -- the glue between emacs and a
variety of external tools for grokking C, JavaScript, Python, etc.  VC
abstracts over "version control". Gnus abstracts over "message systems".
Eglot attempts to abstract over "understanding (computer) languages".

Hope that helps,
~Chad

[-- Attachment #2: Type: text/html, Size: 4114 bytes --]

  reply	other threads:[~2022-10-08 18:18 UTC|newest]

Thread overview: 199+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-30  8:04 Renaming eglot -- or at least add an alias? Stefan Kangas
2022-09-30  8:27 ` Philip Kaludercic
2022-09-30  8:59   ` Theodor Thornhill
2022-09-30 12:30     ` Rudolf Adamkovič
2022-09-30 11:33   ` Basil L. Contovounesios
2022-09-30 11:38     ` João Távora
2022-09-30 12:18       ` Basil L. Contovounesios
2022-09-30 12:24         ` João Távora
2022-10-02  1:09         ` Richard Stallman
2022-09-30 13:26     ` Robert Pluim
2022-09-30 16:21       ` Basil L. Contovounesios
2022-09-30 10:30 ` Eli Zaretskii
2022-10-01  9:28   ` Richard Stallman
2022-10-01  9:53     ` Eli Zaretskii
2022-10-01 15:33       ` Philip Kaludercic
2022-10-01 15:39         ` Eli Zaretskii
2022-10-03  1:06           ` Richard Stallman
2022-10-03 16:28             ` Eli Zaretskii
2022-10-01 14:51     ` Stefan Monnier
2022-10-01 18:16       ` Stefan Monnier
2022-10-02  1:11       ` Richard Stallman
2022-10-02  1:31         ` Tim Cross
2022-10-02  2:45           ` Yilkal Argaw
2022-10-02 11:34           ` Philip Kaludercic
2022-10-02 12:44             ` João Távora
2022-10-02 14:05               ` Philip Kaludercic
2022-10-02 14:42                 ` João Távora
2022-10-02 15:03                   ` Manuel Uberti
2022-10-02 15:08                     ` Lars Ingebrigtsen
2022-10-12 11:32                       ` Robert Weiner
2022-10-12 11:55                         ` Po Lu
2022-10-12 13:25                           ` Eli Zaretskii
2022-10-12 13:42                             ` Po Lu
2022-10-12 14:03                               ` Eli Zaretskii
2022-10-02 19:54                     ` Jose A. Ortega Ruiz
2022-10-02 22:17                       ` Tim Cross
2022-10-04  1:00                       ` Richard Stallman
2022-10-02 15:52                   ` Philip Kaludercic
2022-10-02 20:07                     ` João Távora
2022-10-03 11:21                       ` Philip Kaludercic
2022-10-02 21:30                 ` Tim Cross
2022-10-03 11:06                   ` Philip Kaludercic
2022-10-03 12:34                     ` João Távora
2022-10-03 13:18                       ` Stefan Monnier
2022-10-03 16:35                         ` João Távora
2022-10-03 17:06                           ` Stefan Monnier
2022-10-04  1:01             ` Richard Stallman
2022-10-04  7:02               ` Philip Kaludercic
2022-10-04 11:27                 ` Tim Cross
2022-10-06 10:24             ` Philip Kaludercic
2022-10-06 14:11               ` [External] : " Drew Adams
2022-10-06 22:09               ` Dmitry Gutov
2022-10-01 21:57     ` Tim Cross
2022-10-03  1:07       ` Richard Stallman
2022-10-03  1:13         ` Tim Cross
2022-10-04  1:01           ` Richard Stallman
2022-10-04  1:01           ` Richard Stallman
2022-10-04  2:43             ` Po Lu
2022-10-04  7:06             ` Eli Zaretskii
2022-10-04 17:39               ` Richard Stallman
2022-10-04 18:12                 ` Eli Zaretskii
2022-10-05 21:35                   ` Richard Stallman
2022-10-05 23:21                     ` Dmitry Gutov
2022-10-07 22:49                       ` Richard Stallman
2022-10-06  0:13                     ` Tim Cross
2022-10-06  0:38                       ` Po Lu
2022-10-06  1:18                         ` Tim Cross
2022-10-06  6:17                       ` Eli Zaretskii
2022-10-07 22:50                       ` Richard Stallman
2022-10-08 18:18                         ` chad [this message]
2022-10-09  0:35                           ` Po Lu
2022-10-09 14:21                             ` chad
2022-10-07 22:50                       ` Richard Stallman
2022-10-06  0:13                     ` Tim Cross
2022-10-06  0:36                     ` Po Lu
2022-10-06  5:57                     ` Eli Zaretskii
2022-10-07 22:49                   ` Richard Stallman
2022-10-07 23:20                     ` Dmitry Gutov
2022-10-04 22:01                 ` Tim Cross
2022-10-05 10:57                   ` Alfred M. Szmidt
2022-10-05 13:17                     ` Eli Zaretskii
2022-10-05 14:46                       ` Alfred M. Szmidt
2022-10-05 15:55                         ` Alexander Adolf
2022-10-06 22:06                         ` Richard Stallman
2022-10-06 22:08                       ` Richard Stallman
2022-10-06 22:30                         ` Tim Cross
2022-10-06 23:42                           ` Jose A. Ortega Ruiz
2022-10-07 22:49                   ` Richard Stallman
2022-10-05  3:01                 ` Po Lu
2022-10-07 22:48                   ` Richard Stallman
2022-10-05 10:43             ` Alfred M. Szmidt
2022-10-06 22:09               ` Richard Stallman
2022-10-07  6:34                 ` Eli Zaretskii
2022-10-07 10:12                   ` Dmitry Gutov
2022-10-07 11:27                     ` Eli Zaretskii
2022-10-07 11:38                       ` Dmitry Gutov
2022-10-07 11:48                         ` Eli Zaretskii
2022-10-07 12:03                           ` Dmitry Gutov
2022-10-07 12:09                             ` Eli Zaretskii
2022-10-07 12:34                               ` Dmitry Gutov
2022-10-07 15:03                                 ` Emanuel Berg
2022-10-07 22:03                                   ` Tim Cross
2022-10-08  5:32                                     ` tomas
2022-10-08  6:52                                       ` Eli Zaretskii
2022-10-08  7:20                                         ` tomas
2022-10-08 16:10                                       ` [External] : " Drew Adams
2022-10-08 22:17                                 ` Alexander Adolf
2022-10-09  3:32                                   ` Stefan Monnier
2022-10-11 21:15                                     ` Richard Stallman
2022-10-11 21:54                                       ` Stefan Monnier
2022-10-12 13:21                                         ` Alexander Adolf
2022-10-12 22:02                                         ` Richard Stallman
2022-10-08 22:34                               ` Richard Stallman
2022-10-09  4:38                                 ` Eli Zaretskii
2022-10-09  4:57                                   ` Eli Zaretskii
2022-10-09  6:07                                     ` Theodor Thornhill
2022-10-09  7:56                                     ` Tim Cross
2022-10-10 22:03                                       ` Richard Stallman
2022-10-09 12:44                                     ` Dmitry Gutov
2022-10-09 13:30                                       ` Eli Zaretskii
2022-10-09 14:09                                       ` Felician Nemeth
2022-10-09 14:15                                         ` Dmitry Gutov
2022-10-09 14:45                                           ` Felician Nemeth
2022-10-09 15:25                                             ` Dmitry Gutov
2022-10-14  9:55                                               ` João Távora
2022-10-11 21:15                                     ` Richard Stallman
2022-10-12  6:04                                       ` Eli Zaretskii
2022-10-12  6:37                                         ` Yuan Fu
2022-10-12  7:15                                           ` Eli Zaretskii
2022-10-12  9:24                                             ` Tim Cross
2022-10-12 23:19                                               ` Yuan Fu
2022-10-13  0:17                                                 ` Tim Cross
2022-10-13  0:26                                                 ` Stephen Leake
2022-10-12 23:05                                             ` Yuan Fu
2022-10-12 10:50                                           ` Dmitry Gutov
2022-10-12 22:58                                             ` Yuan Fu
2022-10-14  9:59                                             ` João Távora
2022-10-13  0:41                                           ` Stephen Leake
2022-10-13  6:03                                             ` Stephen Leake
2022-10-12 13:34                                       ` Michael Albinus
2022-10-10 22:05                                   ` Richard Stallman
2022-10-11  9:24                                     ` Eli Zaretskii
2022-10-11  9:44                                       ` Theodor Thornhill
2022-10-11 17:19                                         ` Dmitry Gutov
2022-10-12 22:01                                           ` Richard Stallman
2022-10-13  0:47                                             ` Stephen Leake
2022-10-13  6:59                                               ` Theodor Thornhill
2022-10-13  8:59                                                 ` Philip Kaludercic
2022-10-13 10:37                                                   ` Eli Zaretskii
2022-10-13 10:20                                                 ` Stephen Leake
2022-10-13 10:35                                                   ` Dmitry Gutov
2022-10-13 16:11                                                   ` Theodor Thornhill
2022-10-14  3:56                                                     ` Akib Azmain Turja
2022-10-13 22:25                                                   ` Tim Cross
2022-10-03  1:55         ` Po Lu
2022-10-03  3:28           ` Tim Cross
2022-10-03 16:30         ` Eli Zaretskii
2022-10-04  1:02           ` Richard Stallman
2022-10-04  7:00             ` Eli Zaretskii
2022-10-04 17:39               ` Richard Stallman
2022-10-04 18:05                 ` Eli Zaretskii
2022-10-07 22:50                   ` Richard Stallman
2022-10-08  6:42                     ` Eli Zaretskii
2022-10-14  9:45                       ` João Távora
2022-10-03 19:57         ` Rudolf Adamkovič
2022-10-04  1:03           ` Richard Stallman
2022-10-04  1:40             ` Yuri Khan
2022-09-30 10:31 ` Po Lu
2022-09-30 10:52   ` Eglot manual (Was: Renaming eglot -- or at least add an alias?) João Távora
2022-09-30 10:32 ` Renaming eglot -- or at least add an alias? João Távora
2022-09-30 10:46 ` Daniel Martín
2022-09-30 10:50   ` Daniel Martín
2022-09-30 13:19     ` Po Lu
2022-09-30 13:18   ` Po Lu
2022-09-30 13:15 ` Lars Ingebrigtsen
2022-09-30 14:48   ` [External] : " Drew Adams
2022-10-02  7:21 ` Christopher M. Miles
     [not found] ` <m28rlywurw.fsf@numbchild>
2022-10-04  2:08   ` Christopher M. Miles
     [not found]   ` <m28rlwjpx3.fsf@numbchild@gmail.com>
2022-10-04  5:25     ` Akib Azmain Turja
2022-10-04 17:39       ` Richard Stallman
2022-10-04 21:30         ` Tim Cross
2022-10-04 22:06           ` Philip Kaludercic
2022-10-04 22:31             ` Tim Cross
2022-10-05 23:25               ` Dmitry Gutov
2022-10-07 22:47             ` Richard Stallman
2022-10-05  2:59           ` Po Lu
2022-10-05  8:41         ` Simon Leinen
2022-10-05 13:21           ` Gerd Möllmann
2022-10-05 10:09         ` Akib Azmain Turja
2022-10-04  5:25 ` Gerd Möllmann
2022-10-04  7:43   ` Eli Zaretskii
2022-10-04  8:54     ` Gerd Möllmann
2022-10-04  9:57     ` João Távora
2022-10-04 11:15       ` Gerd Möllmann
2022-10-04 15:19   ` [External] : " Drew Adams
2022-10-06 23:29 ` Stefan Kangas
  -- strict thread matches above, loose matches on Subject: below --
2022-09-30  8:54 Payas Relekar
2022-10-04 10:10 xenodasein--- via Emacs development discussions.
2022-10-08  9:33 xenodasein--- via Emacs development discussions.

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=CAO2hHWb2RHm4KRAuuNBQ2E70Y9t0pc36oAcuR55TujOCck-8jA@mail.gmail.com \
    --to=yandros@gmail.com \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=rms@gnu.org \
    --cc=theophilusx@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).