Package: emacs;
Reported by: Pengji Zhang <kunhtkun <at> gmail.com>
Date: Sun, 26 Nov 2023 21:17:02 UTC
Severity: normal
Found in version 30.0.50
Done: Stefan Monnier <monnier <at> iro.umontreal.ca>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: help-debbugs <at> gnu.org (GNU bug Tracking System) To: Pengji Zhang <kunhtkun <at> gmail.com> Subject: bug#67463: closed (Re: bug#67463: 30.0.50; Eglot may manage js-json-mode buffers with wrong server) Date: Mon, 15 Jan 2024 03:19:02 +0000
[Message part 1 (text/plain, inline)]
Your bug report #67463: 30.0.50; Eglot may manage js-json-mode buffers with wrong server which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 67463 <at> debbugs.gnu.org. -- 67463: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=67463 GNU Bug Tracking System Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Stefan Monnier <monnier <at> iro.umontreal.ca> To: João Távora <joaotavora <at> gmail.com> Cc: Dmitry Gutov <dmitry <at> gutov.dev>, Eli Zaretskii <eliz <at> gnu.org>, 67463-done <at> debbugs.gnu.org, Pengji Zhang <kunhtkun <at> gmail.com> Subject: Re: bug#67463: 30.0.50; Eglot may manage js-json-mode buffers with wrong server Date: Sun, 14 Jan 2024 22:17:56 -0500>>> I suggest the patch below instead, which also "quick" but much less dirty. >> I didn't see it, did you attach it? > See second try below. Pushed to `master`. Stefan
[Message part 3 (message/rfc822, inline)]
From: Pengji Zhang <kunhtkun <at> gmail.com> To: bug-gnu-emacs <at> gnu.org Subject: 30.0.50; Eglot may manage js-json-mode buffers with wrong server Date: Sun, 26 Nov 2023 16:15:54 -0500It seems that buffers in `js-json-mode', the default mode for JSON files, could be wrongly managed by JavaScript language servers of Eglot, perhaps because: - `js-json-mode' is derived from `js-mode'; - Eglot uses `provided-mode-derived-p' to determine whether a buffer should be managed by a server. Here is a recipe to reproduce the problem I encountered: 1. Install Node.js[0] and NPM[1]. (Sorry, but I could not find an easier way to set up the environment. They may be installable with your system's package manager.) 2. mkdir /tmp/repro && cd /tmp/repro 3. npm install typescript typescript-language-server (This will install the language server locally in the directory.) 4. emacs -Q 5. C-x C-f main.js RET 6. C-u M-x eglot; enter "npx typescript-language-server --stdio" 7. C-x C-f package.json RET (This file is automatically created by `npm install'.) I expect that the 'package.json' buffer is not managed by Eglot, but it is actually managed by typescript-language-server, which does not really understand JSON and is reporting some invalid errors. Thanks! [0] https://nodejs.org/en [1] https://docs.npmjs.com/downloading-and-installing-node-js-and-npm ----- Auxiliary information: - Emacs version: 30.0.50 (commit ea4c5fcd77257d7a7c050714b809b1507d93a6ef) - Eglot version: 1.15 (comes with the Emacs repository of the commit above) - Contents of `eglot-events-buffer': [internal] Sun Nov 26 15:24:00 2023: (:message "Running language server: npx typescript-language-server --stdio") [client-request] (id:1) Sun Nov 26 15:24:00 2023: (:jsonrpc "2.0" :id 1 :method "initialize" :params (:processId 26705 :clientInfo (:name "Eglot" :version "1.15") :rootPath "/tmp/eglot-bug/" :rootUri "file:///tmp/eglot-bug" :initializationOptions #s(hash-table size 1 test eql rehash-size 1.5 rehash-threshold 0.8125 data ()) :capabilities (:workspace (:applyEdit t :executeCommand (:dynamicRegistration :json-false) :workspaceEdit (:documentChanges t) :didChangeWatchedFiles (:dynamicRegistration t) :symbol (:dynamicRegistration :json-false) :configuration t :workspaceFolders t) :textDocument (:synchronization (:dynamicRegistration :json-false :willSave t :willSaveWaitUntil t :didSave t) :completion (:dynamicRegistration :json-false :completionItem (:snippetSupport :json-false :deprecatedSupport t :resolveSupport (:properties ["documentation" "details" "additionalTextEdits"]) :tagSupport (:valueSet [1])) :contextSupport t) :hover (:dynamicRegistration :json-false :contentFormat ["plaintext"]) :signatureHelp (:dynamicRegistration :json-false :signatureInformation (:parameterInformation (:labelOffsetSupport t) :documentationFormat ["plaintext"] :activeParameterSupport t)) :references (:dynamicRegistration :json-false) :definition (:dynamicRegistration :json-false :linkSupport t) :declaration (:dynamicRegistration :json-false :linkSupport t) :implementation (:dynamicRegistration :json-false :linkSupport t) :typeDefinition (:dynamicRegistration :json-false :linkSupport t) :documentSymbol (:dynamicRegistration :json-false :hierarchicalDocumentSymbolSupport t :symbolKind (:valueSet [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])) :documentHighlight (:dynamicRegistration :json-false) :codeAction (:dynamicRegistration :json-false :resolveSupport (:properties ["edit" "command"]) :dataSupport t :codeActionLiteralSupport (:codeActionKind (:valueSet ["quickfix" "refactor" "refactor.extract" "refactor.inline" "refactor.rewrite" "source" "source.organizeImports"])) :isPreferredSupport t) :formatting (:dynamicRegistration :json-false) :rangeFormatting (:dynamicRegistration :json-false) :rename (:dynamicRegistration :json-false) :inlayHint (:dynamicRegistration :json-false) :publishDiagnostics (:relatedInformation :json-false :codeDescriptionSupport :json-false :tagSupport (:valueSet [1 2]))) :window (:showDocument (:support t) :workDoneProgress t) :general (:positionEncodings ["utf-32" "utf-8" "utf-16"]) :experimental #s(hash-table size 1 test eql rehash-size 1.5 rehash-threshold 0.8125 data ())) :workspaceFolders [(:uri "file:///tmp/eglot-bug" :name "/tmp/eglot-bug/")])) [server-notification] Sun Nov 26 15:24:01 2023: (:jsonrpc "2.0" :method "window/logMessage" :params (:type 3 :message "Using Typescript version (workspace) 5.3.2 from path \"/tmp/eglot-bug/node_modules/typescript/lib/tsserver.js\"")) [server-request] (id:0) Sun Nov 26 15:24:01 2023: (:jsonrpc "2.0" :id 0 :method "window/workDoneProgress/create" :params (:token "3a0c42cc-0696-45e3-b763-564b150099bb")) [client-reply] (id:0) Sun Nov 26 15:24:01 2023: (:jsonrpc "2.0" :id 0 :result nil) [server-reply] (id:1) Sun Nov 26 15:24:01 2023: (:jsonrpc "2.0" :id 1 :result (:capabilities (:textDocumentSync 2 :completionProvider (:triggerCharacters ["." "\"" "'" "/" "@" "<"] :resolveProvider t) :codeActionProvider (:codeActionKinds ["source.fixAll.ts" "source.removeUnused.ts" "source.addMissingImports.ts" "source.organizeImports.ts" "source.removeUnusedImports.ts" "source.sortImports.ts" "quickfix" "refactor"]) :codeLensProvider (:resolveProvider t) :definitionProvider t :documentFormattingProvider t :documentRangeFormattingProvider t :documentHighlightProvider t :documentSymbolProvider t :executeCommandProvider (:commands ["_typescript.applyWorkspaceEdit" "_typescript.applyCodeAction" "_typescript.applyRefactoring" "_typescript.configurePlugin" "_typescript.organizeImports" "_typescript.applyRenameFile" "_typescript.goToSourceDefinition"]) :hoverProvider t :inlayHintProvider t :linkedEditingRangeProvider :json-false :renameProvider t :referencesProvider t :selectionRangeProvider t :signatureHelpProvider (:triggerCharacters ["(" "," "<"] :retriggerCharacters [")"]) :workspaceSymbolProvider t :implementationProvider t :typeDefinitionProvider t :foldingRangeProvider t :semanticTokensProvider (:documentSelector nil :legend (:tokenTypes ["class" "enum" "interface" "namespace" "typeParameter" "type" "parameter" "variable" "enumMember" "property" "function" "member"] :tokenModifiers ["declaration" "static" "async" "readonly" "defaultLibrary" "local"]) :full t :range t) :workspace (:fileOperations (:willRename (:filters [(:scheme "file" :pattern (:glob "**/*.{ts,js,jsx,tsx,mjs,mts,cjs,cts}" :matches "file"))])))))) [client-notification] Sun Nov 26 15:24:01 2023: (:jsonrpc "2.0" :method "initialized" :params #s(hash-table size 1 test eql rehash-size 1.5 rehash-threshold 0.8125 data ())) [client-notification] Sun Nov 26 15:24:01 2023: (:jsonrpc "2.0" :method "textDocument/didOpen" :params (:textDocument (:uri "file:///tmp/eglot-bug/main.js" :version 0 :languageId "javascript" :text ""))) [client-notification] Sun Nov 26 15:24:01 2023: (:jsonrpc "2.0" :method "workspace/didChangeConfiguration" :params (:settings #s(hash-table size 1 test eql rehash-size 1.5 rehash-threshold 0.8125 data ()))) [server-notification] Sun Nov 26 15:24:01 2023: (:jsonrpc "2.0" :method "$/progress" :params (:token "3a0c42cc-0696-45e3-b763-564b150099bb" :value (:kind "begin" :title "Initializing JS/TS language features…"))) [server-notification] Sun Nov 26 15:24:01 2023: (:jsonrpc "2.0" :method "$/typescriptVersion" :params (:version "5.3.2" :source "workspace")) [client-request] (id:2) Sun Nov 26 15:24:01 2023: (:jsonrpc "2.0" :id 2 :method "textDocument/hover" :params (:textDocument (:uri "file:///tmp/eglot-bug/main.js") :position (:line 0 :character 0))) [client-request] (id:3) Sun Nov 26 15:24:01 2023: (:jsonrpc "2.0" :id 3 :method "textDocument/documentHighlight" :params (:textDocument (:uri "file:///tmp/eglot-bug/main.js") :position (:line 0 :character 0))) [client-request] (id:4) Sun Nov 26 15:24:01 2023: (:jsonrpc "2.0" :id 4 :method "textDocument/signatureHelp" :params (:textDocument (:uri "file:///tmp/eglot-bug/main.js") :position (:line 0 :character 0))) [server-reply] (id:3) Sun Nov 26 15:24:02 2023: (:jsonrpc "2.0" :id 3 :result []) [server-reply] (id:4) Sun Nov 26 15:24:02 2023: (:jsonrpc "2.0" :id 4 :result nil) [server-reply] (id:2) Sun Nov 26 15:24:02 2023: (:jsonrpc "2.0" :id 2 :result nil) [server-notification] Sun Nov 26 15:24:02 2023: (:jsonrpc "2.0" :method "$/progress" :params (:token "3a0c42cc-0696-45e3-b763-564b150099bb" :value (:kind "end"))) [server-notification] Sun Nov 26 15:24:02 2023: (:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params (:uri "file:///tmp/eglot-bug/main.js" :diagnostics [])) [server-notification] Sun Nov 26 15:24:05 2023: (:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params (:uri "file:///tmp/eglot-bug/main.js" :diagnostics [])) [server-notification] Sun Nov 26 15:24:05 2023: (:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params (:uri "file:///tmp/eglot-bug/main.js" :diagnostics [])) [client-notification] Sun Nov 26 15:24:19 2023: (:jsonrpc "2.0" :method "textDocument/didOpen" :params (:textDocument (:uri "file:///tmp/eglot-bug/package.json" :version 0 :languageId "javascript" :text "{\n \"dependencies\": {\n \"typescript\": \"^5.3.2\",\n \"typescript-language-server\": \"^4.1.2\"\n }\n}\n"))) [client-request] (id:5) Sun Nov 26 15:24:19 2023: (:jsonrpc "2.0" :id 5 :method "textDocument/inlayHint" :params (:textDocument (:uri "file:///tmp/eglot-bug/package.json") :range (:start (:line 0 :character 0) :end (:line 6 :character 0)))) [server-reply] (id:5) Sun Nov 26 15:24:19 2023: (:jsonrpc "2.0" :id 5 :result []) [server-notification] Sun Nov 26 15:24:19 2023: (:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params (:uri "file:///tmp/eglot-bug/package.json" :diagnostics [(:range (:start (:line 1 :character 16) :end (:line 1 :character 17)) :message "';' expected." :severity 1 :code 1005 :source "typescript" :tags []) (:range (:start (:line 2 :character 16) :end (:line 2 :character 17)) :message "';' expected." :severity 1 :code 1005 :source "typescript" :tags []) (:range (:start (:line 3 :character 32) :end (:line 3 :character 33)) :message "';' expected." :severity 1 :code 1005 :source "typescript" :tags [])])) In GNU Emacs 30.0.50 (build 11, x86_64-pc-linux-gnu) Repository revision: ea4c5fcd77257d7a7c050714b809b1507d93a6ef Repository branch: master Configured using: 'configure --prefix=/home/pengji/.local --without-x --program-transform-name=s/^ctags/ctags.emacs/ --disable-build-details PKG_CONFIG_PATH=/home/pengji/.local/share/pkgconfig:/home/pengji/.local/lib/pkgconfig:/home/pengji/.local/share/pkgconfig:/home/pengji/.local/lib/pkgconfig:' Configured features: GNUTLS LIBXML2 MODULES NOTIFY INOTIFY PDUMPER SOUND SQLITE3 THREADS TREE_SITTER ZLIB Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Info Minor modes in effect: mouse-wheel-mode: t tooltip-mode: t global-eldoc-mode: t show-paren-mode: t electric-indent-mode: t menu-bar-mode: t file-name-shadow-mode: t isearch-fold-quotes-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t minibuffer-regexp-mode: t buffer-read-only: t line-number-mode: t indent-tabs-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: None found. Features: (shadow sort mail-extr emacsbug message mailcap yank-media puny dired dnd dired-loaddefs rfc822 mml mml-sec epa derived epg rfc6068 epg-config gnus-util mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils mule-util info time-date cl-extra eglot external-completion jsonrpc xref flymake mwheel thingatpt project diff diff-mode easy-mmode ert pp ewoc debug backtrace help-mode find-func filenotify warnings icons compile text-property-search tool-bar pcase url-util url-parse auth-source cl-seq eieio eieio-core cl-macs password-cache url-vars sh-script rx smie executable files-x shell pcomplete comint ansi-osc ansi-color ring js c-ts-common treesit json subr-x map imenu cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs regexp-opt cl-loaddefs cl-lib term/tmux term/xterm xterm byte-opt gv bytecomp byte-compile rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode touch-screen tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads inotify multi-tty make-network-process emacs) Memory information: ((conses 16 134366 14563) (symbols 48 13684 0) (strings 32 42470 2356) (string-bytes 1 1456015) (vectors 16 24965) (vector-slots 8 306626 12688) (floats 8 58 9041) (intervals 56 548 1368) (buffers 992 20) (heap 1024 7552 769))
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.