all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Filippo Argiolas <filippo.argiolas@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 64608@debbugs.gnu.org, "João Távora" <joaotavora@gmail.com>
Subject: bug#64608: 29.0.90; Eglot: reuse server when visiting external files
Date: Fri, 14 Jul 2023 15:55:50 +0200	[thread overview]
Message-ID: <CAOdrLGK5HA+H3X-JVhL1FGLGttdiiuMKyDGOP97m-Z-NZ--noQ@mail.gmail.com> (raw)
In-Reply-To: <837cr24w1y.fsf@gnu.org>

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

Il ven 14 lug 2023, 12:38 Eli Zaretskii <eliz@gnu.org> ha scritto:

> > From: Filippo Argiolas <filippo.argiolas@gmail.com>
> > Date: Fri, 14 Jul 2023 07:51:28 +0200
> >
> > Hi,
> >
> > I'm working on a couple of projects each with their main root and all
> > sharing some common code in an external root dir.
> >
> > Each project has a compile_commands.json that knows how to compile the
> > external shared code. External root has no compile db and doesn't know
> > how to compile itself.
> >
> > Eglot currently allows me to jump to external files using xref while
> > keeping the current active running server by setting
> > eglot-extend-to-xref.
> >
> > Project.el allows me to visit external files using project-or-external-
> > functions by defining project-external-roots on my custom backend or
> > project-vc-external-roots-functions with the default backend.
> >
> > It would be great if I configure Eglot to not switch to a new server
> > when visiting an external file in a similar way it does with xref.
> >
> > Any pointer to achieve something like this with current project.el and
> > eglot code would also be great. Maybe with a custom project backend?
>
> Sorry, I don't understand: AFAIU Eglot reuses the same server for all
> the buffers under the same major-mode, so you should already have what
> you want?  Or what am I missing?
>
> Adding João to this discussion.
>

I could be misusing the word server here, what I'm seeing is a clangd
instance for each project. Each with its own hidden stdout/stderr buffer.
Not sure if they're actually different processes, far from the laptop at
the moment and cannot check, but I guess so.

When I visit a file in a new project it starts a new clangd instance
associated to its root dir and its compile db if it exists. All buffers
from the same project share the same instance. Not sure what happens with
different major modes as I'm using c-mode only.

What I'd like is to reuse the same instance and the same compile db if I'm
visiting an external file from project-or-external- functions.

Filippo

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

  reply	other threads:[~2023-07-14 13:55 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-14  5:51 bug#64608: 29.0.90; Eglot: reuse server when visiting external files Filippo Argiolas
2023-07-14 10:38 ` Eli Zaretskii
2023-07-14 13:55   ` Filippo Argiolas [this message]
2023-07-14 14:00   ` João Távora
2023-07-15  7:30     ` Filippo Argiolas
2023-07-15  7:32       ` Filippo Argiolas

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

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

  git send-email \
    --in-reply-to=CAOdrLGK5HA+H3X-JVhL1FGLGttdiiuMKyDGOP97m-Z-NZ--noQ@mail.gmail.com \
    --to=filippo.argiolas@gmail.com \
    --cc=64608@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    --cc=joaotavora@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 external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.