From: yyoncho <yyoncho@gmail.com>
To: APEL Martin <Martin.APEL@3ds.com>
Cc: Michael Albinus <michael.albinus@gmx.de>,
"emacs-devel@gnu.org" <emacs-devel@gnu.org>
Subject: Re: Tramp and conversion of \r\n into \n
Date: Sat, 19 Dec 2020 11:18:42 +0200 [thread overview]
Message-ID: <CACCVLQVA12msnx85Woocb4Y_kQmMdWzafN1pvBDqcBCbMtWNdA@mail.gmail.com> (raw)
In-Reply-To: <7135a39a200c4f8397c8bddb9da8d3fc@3ds.com>
[-- Attachment #1: Type: text/plain, Size: 11113 bytes --]
Michael,
About the original issue: is it possible to avoid the issue using emacs
27.1(or older)? Asking the users to move to master branch is not very
desirable since lsp-mode is used also by a lot of complete beginners.
Thanks,
Ivan
On Thu, Dec 17, 2020 at 1:48 PM APEL Martin <Martin.APEL@3ds.com> wrote:
> Hi Michael,
>
> I built an Emacs version from the current master branch and tried it out:
> lsp-mode works well with a remote clangd now. Unfortunately there are some
> other problems, which do not occur with Emacs 27.1 and which might be
> related to TRAMP:
> - my remote compile setup does not work anymore. It seems that the
> arguments to the invoked compile command are lost on the way to the remote
> machine
> - rgrep on a remote machine also does not work. It produces a list of
> files it intends to search instead of the grep output
> - I also encountered an error message from TRAMP once. Unfortunately I
> restarted Emacs afterwards, so I don't have the exact error message. It was
> something about a recursive call detected and a sentinel was mentioned.
>
> Best Regards,
>
> Martin
>
> > -----Original Message-----
> > From: Michael Albinus <michael.albinus@gmx.de>
> > Sent: 16 December 2020 16:35
> > To: APEL Martin <Martin.APEL@3ds.com>
> > Cc: emacs-devel@gnu.org
> > Subject: Re: Tramp and conversion of \r\n into \n
> >
> >
> > APEL Martin <Martin.APEL@3ds.com> writes:
> >
> > > Hi Michael,
> >
> > Hi Martin,
> >
> > > 6. Now try to open the main.cpp file on the remote machine in Emacs on
> > > the local machine. This should trigger the start of clangd via
> > > lsp-mode. If the error occurs, the modeline shows 'clangd starting'
> > > forever.
> >
> > Well, I don't belive it is eol conversion. With some more stderr
> redirection, I
> > could see that the local process sends
> >
> > --8<---------------cut here---------------start------------->8---
> > Content-Length: 2134
> >
> >
> {"jsonrpc":"2.0","method":"initialize","params":{"processId":null,"rootPath":
> > "/home/albinus/tmp/minicpp","clientInfo":{"name":"emacs","version":"GN
> > U Emacs 28.0.50 (build 28, x86_64-pc-linux-gnu, GTK+ Version 3.24.23,
> cairo
> > version 1.16.0)\n of 2020-12-
> >
> 15"},"rootUri":"file:///home/albinus/tmp/minicpp","capabilities":{"workspac
> > e":{"workspaceEdit":{"documentChanges":true,"resourceOperations":["crea
> > te","rename","delete"]},"applyEdit":true,"symbol":{"symbolKind":{"valueSe
> >
> t":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}},"exe
> > cuteCommand":{"dynamicRegistration":false},"didChangeWatchedFiles":{"d
> >
> ynamicRegistration":true},"workspaceFolders":true,"configuration":true},"te
> >
> xtDocument":{"declaration":{"linkSupport":true},"definition":{"linkSupport":
> >
> true},"implementation":{"linkSupport":true},"typeDefinition":{"linkSupport":
> >
> true},"synchronization":{"willSave":true,"didSave":true,"willSaveWaitUntil":t
> >
> rue},"documentSymbol":{"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,1
> >
> 2,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"hierarchicalDocumentSymbolS
> >
> upport":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":
> > {"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"prepar
> > eSupport":true},"codeAction":{"dynamicRegistration":true,"isPreferredSupp
> >
> ort":true,"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","qui
> >
> ckfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","sourc
> > e","source.organizeImports"]}}},"completion":{"completionItem":{"snippetS
> > upport":false,"documentationFormat":["markdown"],"resolveAdditionalTex
> >
> tEditsSupport":true},"contextSupport":true},"signatureHelp":{"signatureInfo
> > rmation":{"parameterInformation":{"labelOffsetSupport":true}}},"document
> >
> Link":{"dynamicRegistration":true,"tooltipSupport":true},"hover":{"contentF
> > ormat":["markdown","plaintext"]},"foldingRange":{"dynamicRegistration":tr
> >
> ue},"callHierarchy":{"dynamicRegistration":false},"publishDiagnostics":{"relat
> >
> edInformation":true,"tagSupport":{"valueSet":[1,2]},"versionSupport":true}}
> > ,"window":{"workDoneProgress":true}},"initializationOptions":null,"workDo
> > neToken":"1"},"id":1}
> > --8<---------------cut here---------------end--------------->8---
> >
> > Both on the remote side, running "clangd --log=verbose", we see only
> >
> > --8<---------------cut here---------------start------------->8---
> > I[16:18:53.667] Ubuntu clangd version 11.0.0-2 I[16:18:53.667] PID:
> 269465
> > I[16:18:53.667] Working directory: /home/albinus/tmp/minicpp
> > I[16:18:53.667] argv[0]: clangd I[16:18:53.667] argv[1]: --log=verbose
> > V[16:18:53.667] User config file is
> /home/albinus/.config/clangd/config.yaml
> > I[16:18:53.667] Starting LSP over stdin/stdout V[16:18:53.668] <<<
> >
> >
> {"jsonrpc":"2.0","method":"initialize","params":{"processId":null,"rootPath":
> > "/home/albinus/tmp/minicpp","clientInfo":{"name":"emacs","version":"GN
> > U Emacs 28.0.50 (build 28, x86_64-pc-linux-gnu, GTK+ Version 3.24.23,
> cairo
> > version 1.16.0)\n of 2020-12-
> >
> 15"},"rootUri":"file:///home/albinus/tmp/minicpp","capabilities":{"workspac
> > e":{"workspaceEdit":{"documentChanges":true,"resourceOperations":["crea
> > te","rename","delete"]},"applyEdit":true,"symbol":{"symbolKind":{"valueSe
> >
> t":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}},"exe
> > cuteCommand":{"dynamicRegistration":false},"didChangeWatchedFiles":{"d
> >
> ynamicRegistration":true},"workspaceFolders":true,"configuration":true},"te
> >
> xtDocument":{"declaration":{"linkSupport":true},"definition":{"linkSupport":
> >
> true},"implementation":{"linkSupport":true},"typeDefinition":{"linkSupport":
> >
> true},"synchronization":{"willSave":true,"didSave":true,"willSaveWaitUntil":t
> >
> rue},"documentSymbol":{"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,1
> >
> 2,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"hierarchicalDocumentSymbolS
> >
> upport":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":
> > {"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"prepar
> > eSupport":true},"codeAction":{"dynamicRegistration":true,"isPreferredSupp
> >
> ort":true,"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","qui
> >
> ckfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","sourc
> > e","source.organizeImports"]}}},"completion":{"completionItem":{"snippetS
> > upport":false,"documentationFormat":["markdown"],"resolveAdditionalTex
> >
> tEditsSupport":true},"contextSupport":true},"signatureHelp":{"signatureInfo
> > rmation":{"parameterInformation":{"labelOffsetSupport":true}}},"document
> >
> Link":{"dynamicRegistration":true,"tooltipSupport":true},"hover":{"contentF
> > ormat":["markdown","plaintext"]},"foldingRange":{"dynamicRegistration":tr
> >
> ue},"callHierarchy":{"dynamicRegistration":false},"publishDiagnostics":{"relat
> >
> edInformation":true,"tagSupport":{"valueSet":[1,2]},"versionSupport":true}}
> > ,"window":{"workDoneProgress":true}},"initializationOptions":null,"workDo
> > neToken":"1"},"id":1
> >
> > E[16:18:53.668] JSON parse error: [3:2132, byte=2134]: Expected , or }
> after
> > object property --8<---------------cut
> here---------------end--------------->8---
> >
> > That is, both the Content-Length header is missing as well as the final
> "}".
> > This is strange. I've tried to debug lsp-mode.el, but it is an 8200+
> lines
> > monster, and not documented well. However, lsp-tramp-connection uses
> > start-file-process-shell-command, which means several shell calls in
> > between. So I have rewritten this to the following code:
> >
> > --8<---------------cut here---------------start------------->8---
> >
> > (defun lsp-tramp-connection (local-command &optional generate-error-file-
> > fn)
> > "Create LSP stdio connection named name.
> > LOCAL-COMMAND is either list of strings, string or function which
> returns the
> > command to execute."
> > ;; Force a direct asynchronous process.
> > (add-to-list 'tramp-connection-properties
> > (list (regexp-quote (file-remote-p default-directory))
> > "direct-async-process" t))
> > (list :connect (lambda (filter sentinel name environment-fn)
> > (let* ((final-command (lsp-resolve-final-function
> local-command))
> > (_stderr (or (when generate-error-file-fn
> > (funcall generate-error-file-fn
> name))
> > (format "/tmp/%s-%s-stderr" name
> > (cl-incf
> lsp--stderr-index))))
> > (process-name (generate-new-buffer-name name))
> > (process-environment
> > (lsp--compute-process-environment
> environment-fn))
> > (proc (make-process
> > :name process-name
> > :buffer (format "*%s*" process-name)
> > :command final-command
> > :connection-type 'pipe
> > :coding 'no-conversion
> > :noquery t
> > :filter filter
> > :sentinel sentinel
> > :file-handler t)))
> > (cons proc proc)))
> > :test? (lambda () (-> local-command lsp-resolve-final-function
> lsp-server-
> > present?)))) --8<---------------cut
> here---------------end--------------->8---
> >
> > With this, your test scenario works fine for me. Could you check how it
> fits in
> > your environment?
> >
> > One disadvantage is, that direct asynch processes work only with the
> > upcoming Tramp 2.5 (that's already in Emacs master), and it works only
> if the
> > asynchronous process does not require password handling. The latter is
> true,
> > if your ssh authentication is based on keys, or if you use Tramp's
> control
> > master arguments (enabled by default).
> >
> > > Hope this helps,
> > >
> > > Martin
> >
> > Best regards, Michael.
> This email and any attachments are intended solely for the use of the
> individual or entity to whom it is addressed and may be confidential and/or
> privileged.
>
> If you are not one of the named recipients or have received this email in
> error,
>
> (i) you should not read, disclose, or copy it,
>
> (ii) please notify sender of your receipt by reply email and delete this
> email and all attachments,
>
> (iii) Dassault Systèmes does not accept or assume any liability or
> responsibility for any use of or reliance on this email.
>
>
> Please be informed that your personal data are processed according to our
> data privacy policy as described on our website. Should you have any
> questions related to personal data protection, please contact 3DS Data
> Protection Officer at 3DS.compliance-privacy@3ds.com<mailto:
> 3DS.compliance-privacy@3ds.com>
>
>
> For other languages, go to https://www.3ds.com/terms/email-disclaimer
>
[-- Attachment #2: Type: text/html, Size: 14988 bytes --]
next prev parent reply other threads:[~2020-12-19 9:18 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-11 7:46 Tramp and conversion of \r\n into \n APEL Martin
2020-12-11 9:15 ` Michael Albinus
2020-12-11 9:59 ` APEL Martin
2020-12-11 10:26 ` Michael Albinus
2020-12-11 11:29 ` APEL Martin
2020-12-11 11:52 ` Michael Albinus
2020-12-13 16:04 ` Michael Albinus
2020-12-15 11:37 ` Michael Albinus
2020-12-15 12:45 ` APEL Martin
2020-12-15 14:37 ` Michael Albinus
2020-12-15 18:45 ` Michael Albinus
2020-12-16 6:44 ` APEL Martin
2020-12-16 15:34 ` Michael Albinus
2020-12-16 15:55 ` APEL Martin
2020-12-17 11:35 ` APEL Martin
2020-12-17 12:50 ` Michael Albinus
2020-12-18 7:48 ` APEL Martin
2020-12-18 12:35 ` Michael Albinus
2020-12-18 12:56 ` APEL Martin
2020-12-18 13:04 ` Michael Albinus
2020-12-18 14:54 ` APEL Martin
2020-12-18 15:00 ` Michael Albinus
2020-12-18 15:10 ` APEL Martin
2020-12-18 15:18 ` Michael Albinus
2020-12-22 14:57 ` Michael Albinus
2021-01-07 11:13 ` APEL Martin
2020-12-19 9:18 ` yyoncho [this message]
2020-12-19 16:48 ` Michael Albinus
2020-12-20 14:03 ` Michael Albinus
2021-08-05 1:46 ` Thomas Ross
2021-08-05 6:16 ` Eli Zaretskii
2021-08-07 2:08 ` Thomas Ross
2021-08-05 14:10 ` Stefan Monnier
2021-08-05 15:40 ` Michael Albinus
2021-08-05 16:25 ` Stefan Monnier
2021-08-06 7:13 ` Michael Albinus
2021-08-06 14:46 ` Stefan Monnier
2021-08-07 13:51 ` Michael Albinus
2021-08-07 22:04 ` Stefan Monnier
2021-08-08 6:13 ` PTYs vs. pipes for subprocesses [was: Tramp and conversion of \r\n into \n] tomas
2021-08-08 14:25 ` Tramp and conversion of \r\n into \n Michael Albinus
2021-08-12 18:47 ` Michael Albinus
2021-08-13 12:16 ` Michael Albinus
2021-08-07 2:07 ` Thomas Ross
2021-08-07 13:54 ` Michael Albinus
2021-08-08 14:29 ` Michael Albinus
-- strict thread matches above, loose matches on Subject: below --
2020-12-09 7:34 yyoncho
2020-12-10 13:44 ` Michael Albinus
2020-12-11 14:11 ` yyoncho
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=CACCVLQVA12msnx85Woocb4Y_kQmMdWzafN1pvBDqcBCbMtWNdA@mail.gmail.com \
--to=yyoncho@gmail.com \
--cc=Martin.APEL@3ds.com \
--cc=emacs-devel@gnu.org \
--cc=michael.albinus@gmx.de \
/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).