lsp-mode
lsp-mode copied to clipboard
Add new Roslyn server support for C#
It seems like there is a byte compile error, see https://github.com/emacs-lsp/lsp-mode/actions/runs/7344249257/job/19995837985?pr=4279#step:12:730. 🤔
Thanks, it should be fixed now. Is it normal for the other tests to fail?
I think the piping script may need improvements also. If too many messages overflow the 512 byte buffer they get interspersed and corrupted. It happens when I try to autocomplete something with a lot of candidates.
Thanks, it should be fixed now. Is it normal for the other tests to fail?
It's normal! Don't have to worry about it!
This is great, by my limited test, it is much faster than omnisharp.
One problem I encountered is when saving files it will throw this error
Debugger entered--Lisp error: (wrong-type-argument stringp #<hash-table equal 2/2 0x479659b>) string-trim-right(#<hash-table equal 2/2 0x479659b> nil) string-trim(#<hash-table equal 2/2 0x479659b>) (let* ((trimmed-pattern (string-trim glob-pattern)) (top-level-unbraced-patterns (lsp-glob-unbrace-at-top-level trimmed-pattern))) (seq-map #'lsp-glob-convert-to-wrapped-regexp top-level-unbraced-patterns)) lsp-glob-to-regexps(#<hash-table equal 2/2 0x479659b>) (let ((regexp (lsp-glob-to-regexps glob-pattern))) (lsp-put fs-watcher :_cachedRegexp regexp) regexp) (or cached-regexp (let ((regexp (lsp-glob-to-regexps glob-pattern))) (lsp-put fs-watcher :_cachedRegexp regexp) regexp)) (let* ((regexes (or cached-regexp (let ((regexp (lsp-glob-to-regexps glob-pattern))) (lsp-put fs-watcher :_cachedRegexp regexp) regexp)))) (-any? #'(lambda (re) (or (string-match re changed-file) (string-match re rel-changed-file))) regexes)) (progn (let* ((regexes (or cached-regexp (let ((regexp ...)) (lsp-put fs-watcher :_cachedRegexp regexp) regexp)))) (-any? #'(lambda (re) (or (string-match re changed-file) (string-match re rel-changed-file))) regexes))) (if (or (null kind?) (> (logand kind? watch-bit) 0)) (progn (let* ((regexes (or cached-regexp (let (...) (lsp-put fs-watcher :_cachedRegexp regexp) regexp)))) (-any? #'(lambda (re) (or (string-match re changed-file) (string-match re rel-changed-file))) regexes)))) (let* ((fs-watcher input0) (glob-pattern (gethash "globPattern" fs-watcher)) (kind? (gethash "kind" fs-watcher)) (cached-regexp (gethash "_cachedRegexp" fs-watcher))) (if (or (null kind?) (> (logand kind? watch-bit) 0)) (progn (let* ((regexes (or cached-regexp (let ... ... regexp)))) (-any? #'(lambda (re) (or ... ...)) regexes))))) (closure ((watch-bit . 2) (rel-changed-file . "Program.cs") (changed-file . "/home/void/Projects/Moments-Dev/Moments/Program.cs")) (input0) (let* ((fs-watcher input0) (glob-pattern (gethash "globPattern" fs-watcher)) (kind? (gethash "kind" fs-watcher)) (cached-regexp (gethash "_cachedRegexp" fs-watcher))) (if (or (null kind?) (> (logand kind? watch-bit) 0)) (progn (let* ((regexes ...)) (-any? #'... regexes))))))(#<hash-table equal 1/1 0x4796569>) #f(compiled-function (elt) #<bytecode -0x9859887b04c71da>)(#<hash-table equal 1/1 0x4796569>) mapc(#f(compiled-function (elt) #<bytecode -0x9859887b04c71da>) [#<hash-table equal 1/1 0x4796569> #<hash-table equal 1/1 0x2a6a829> #<hash-table equal 1/1 0x2a6a89b> #<hash-table equal 1/1 0x2a6a91b>]) seq-do(#f(compiled-function (elt) #<bytecode -0x9859887b04c71da>) [#<hash-table equal 1/1 0x4796569> #<hash-table equal 1/1 0x2a6a829> #<hash-table equal 1/1 0x2a6a89b> #<hash-table equal 1/1 0x2a6a91b>]) seq-find((closure ((watch-bit . 2) (rel-changed-file . "Program.cs") (changed-file . "/home/void/Projects/Moments-Dev/Moments/Program.cs")) (input0) (let* ((fs-watcher input0) (glob-pattern (gethash "globPattern" fs-watcher)) (kind? (gethash "kind" fs-watcher)) (cached-regexp (gethash "_cachedRegexp" fs-watcher))) (if (or (null kind?) (> (logand kind? watch-bit) 0)) (progn (let* ((regexes ...)) (-any? #'... regexes)))))) [#<hash-table equal 1/1 0x4796569> #<hash-table equal 1/1 0x2a6a829> #<hash-table equal 1/1 0x2a6a89b> #<hash-table equal 1/1 0x2a6a91b>]) (and (equal (progn (or (progn (and (memq (type-of capability) cl-struct-lsp--registered-capability-tags) t)) (signal 'wrong-type-argument (list 'lsp--registered-capability capability))) (aref capability 2)) "workspace/didChangeWatchedFiles") (seq-find #'(lambda (input0) (let* ((fs-watcher input0) (glob-pattern (gethash "globPattern" fs-watcher)) (kind? (gethash "kind" fs-watcher)) (cached-regexp (gethash "cachedRegexp" fs-watcher))) (if (or (null kind?) (> ... 0)) (progn (let* ... ...))))) (lsp:did-change-watched-files-registration-options-watchers (progn (or (progn (and (memq ... cl-struct-lsp--registered-capability-tags) t)) (signal 'wrong-type-argument (list 'lsp--registered-capability capability))) (aref capability 3))))) (closure ((watch-bit . 2) (rel-changed-file . "Program.cs") (changed-file . "/home/void/Projects/Moments-Dev/Moments/Program.cs")) (capability) (and (equal (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... capability))) (aref capability 2)) "workspace/didChangeWatchedFiles") (seq-find #'(lambda (input0) (let* (... ... ... ...) (if ... ...))) (lsp:did-change-watched-files-registration-options-watchers (progn (or (progn ...) (signal ... ...)) (aref capability 3))))))(#s(lsp--registered-capability :id "4f6876e4-b718-4ad7-99c8-5246fc751149" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x479652d>)) funcall((closure ((watch-bit . 2) (rel-changed-file . "Program.cs") (changed-file . "/home/void/Projects/Moments-Dev/Moments/Program.cs")) (capability) (and (equal (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... capability))) (aref capability 2)) "workspace/didChangeWatchedFiles") (seq-find #'(lambda (input0) (let* (... ... ... ...) (if ... ...))) (lsp:did-change-watched-files-registration-options-watchers (progn (or (progn ...) (signal ... ...)) (aref capability 3)))))) #s(lsp--registered-capability :id "4f6876e4-b718-4ad7-99c8-5246fc751149" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x479652d>)) (setq needle (funcall pred it)) (not (setq needle (funcall pred it))) (let ((it elt) (it-index i)) (ignore it it-index) (not (setq needle (funcall pred it)))) (progn (setq elt (car-safe list)) (let ((it elt) (it-index i)) (ignore it it-index) (not (setq needle (funcall pred it))))) (if list (progn (setq elt (car-safe list)) (let ((it elt) (it-index i)) (ignore it it-index) (not (setq needle (funcall pred it)))))) (while (if list (progn (setq elt (car-safe list)) (let ((it elt) (it-index i)) (ignore it it-index) (not (setq needle (funcall pred it)))))) (let ((it elt) (it-index i)) (ignore it it-index)) (progn (setq i (1+ i)) (setq list (cdr list)))) (let ((list list) (i 0) elt) (while (if list (progn (setq elt (car-safe list)) (let ((it elt) (it-index i)) (ignore it it-index) (not (setq needle (funcall pred it)))))) (let ((it elt) (it-index i)) (ignore it it-index)) (progn (setq i (1+ i)) (setq list (cdr list))))) (let (needle) (let ((list list) (i 0) elt) (while (if list (progn (setq elt (car-safe list)) (let ((it elt) (it-index i)) (ignore it it-index) (not (setq needle ...))))) (let ((it elt) (it-index i)) (ignore it it-index)) (progn (setq i (1+ i)) (setq list (cdr list))))) needle) (and (let (needle) (let ((list list) (i 0) elt) (while (if list (progn (setq elt (car-safe list)) (let (... ...) (ignore it it-index) (not ...)))) (let ((it elt) (it-index i)) (ignore it it-index)) (progn (setq i (1+ i)) (setq list (cdr list))))) needle) t) -any?((closure ((watch-bit . 2) (rel-changed-file . "Program.cs") (changed-file . "/home/void/Projects/Moments-Dev/Moments/Program.cs")) (capability) (and (equal (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... capability))) (aref capability 2)) "workspace/didChangeWatchedFiles") (seq-find #'(lambda (input0) (let* (... ... ... ...) (if ... ...))) (lsp:did-change-watched-files-registration-options-watchers (progn (or (progn ...) (signal ... ...)) (aref capability 3)))))) (#s(lsp--registered-capability :id "4f6876e4-b718-4ad7-99c8-5246fc751149" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x479652d>) #s(lsp--registered-capability :id "5beaccfd-25f3-4ef0-a1f4-12f51cfa3f44" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x79155f>) #s(lsp--registered-capability :id "26606318-5e0d-4848-9d99-39ffb5a6700c" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x791455>) #s(lsp--registered-capability :id "cbdfccb1-f0d8-494e-be2d-38221e686b13" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x14e921f>) #s(lsp--registered-capability :id "6186128e-581d-44cb-a92b-9cd7617e345e" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x125afab>) #s(lsp--registered-capability :id "df46cab7-6bf8-4f4e-a577-80b862fbdd87" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0xecff19>) #s(lsp--registered-capability :id "0fb8a143-917b-4cde-84ee-2ddaaab6372e" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x24ee501>) #s(lsp--registered-capability :id "b8608351-fb1a-4a49-982e-7beb2ff50a7b" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x3a855a1>) #s(lsp--registered-capability :id "a7396b83-4fa3-4cb7-9d28-34c11276318e" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x365ba73>) #s(lsp--registered-capability :id "0b5d90cb-6495-43e9-ab6d-2c1477e05366" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x174ec23>) #s(lsp--registered-capability :id "244bba62-23b8-48c8-8664-2d1e05ff24c3" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x3d07b09>) #s(lsp--registered-capability :id "94fcc8d8-6b77-4313-b103-e90fa5234df7" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x125a837>) #s(lsp--registered-capability :id "6d84077e-4391-4f2f-9353-cba39a1a51ca" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x125a729>) #s(lsp--registered-capability :id "d46c0abf-becc-4220-aa6f-04f9a9c9ed72" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x7a000b>) #s(lsp--registered-capability :id "6e9f838a-fc87-48f2-8889-eecb3a914609" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x12f77d1>) #s(lsp--registered-capability :id "540da52a-cb19-44a8-badd-b245718b1e77" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x1f8806b>) #s(lsp--registered-capability :id "9a0f1d70-df9f-4a26-a67d-2208ba417f1e" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x3ccf689>) #s(lsp--registered-capability :id "900f8696-7bef-432e-89b7-9f40153386b6" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x38b3715>) #s(lsp--registered-capability :id "a07b766c-404c-4de3-b931-31a50ae4eac0" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x125d4f7>) #s(lsp--registered-capability :id "8192c590-e989-4ec1-9baa-ebf6258716f8" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x2faa903>) #s(lsp--registered-capability :id "d91d3b25-2814-4d3c-be59-43af2e60ea68" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x12c0537>) #s(lsp--registered-capability :id "016e77be-f437-40f6-852b-4a4d7b216cdb" :method "workspace/didChangeWatchedFiles" :options #<hash-table equal 1/1 0x1bbc8f9>))) (if (-any? #'(lambda (capability) (and (equal (progn (or ... ...) (aref capability 2)) "workspace/didChangeWatchedFiles") (seq-find #'(lambda ... ...) (lsp:did-change-watched-files-registration-options-watchers (progn ... ...))))) (progn (or (progn (and (memq (type-of workspace) cl-struct-lsp--workspace-tags) t)) (signal 'wrong-type-argument (list 'lsp--workspace workspace))) (aref workspace 3))) (progn (let ((lsp--cur-workspace workspace)) (lsp-notify "workspace/didChangeWatchedFiles" (list (cons 'changes (vector (list ... ...)))))))) (closure ((watch-bit . 2) (event-numeric-kind . 2) (rel-changed-file . "Program.cs") (changed-file . "/home/void/Projects/Moments-Dev/Moments/Program.cs")) (workspace) (if (-any? #'(lambda (capability) (and (equal ... "workspace/didChangeWatchedFiles") (seq-find ... ...))) (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... workspace))) (aref workspace 3))) (progn (let ((lsp--cur-workspace workspace)) (lsp-notify "workspace/didChangeWatchedFiles" (list (cons ... ...)))))))(#s(lsp--workspace :ewoc nil :server-capabilities #<hash-table equal 22/22 0x1ab7cb9> :registered-server-capabilities (... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...) :root "/home/void/Projects/..." :client #s(lsp--client :language-id nil :add-on? nil :new-connection ... :ignore-regexps nil :ignore-messages nil :notification-handlers #<hash-table equal 2/65 0x374d96b> :request-handlers #<hash-table equal 0/65 0x374dc41> :response-handlers #<hash-table eql 1/65 0x3750e57> :prefix-function nil :uri-handlers #<hash-table equal 0/65 0x3751165> :action-handlers #<hash-table equal 0/65 0x3751393> :major-modes nil :activation-fn ... :priority 0 :server-id csharp-roslyn :multi-root nil :initialization-options nil :semantic-tokens-faces-overrides nil :custom-capabilities nil :library-folders-fn nil ...) :host-root nil :proc #
:cmd-proc # [^/\\]+\'" "[/\\]\.#[^/\\]+\'" "[/\\][^/\\]+~\'") ("[/\\]\.git\'" "[/\\]\.github\'" "[/\\]\.gitlab\'" "[/\\]\.circleci\'" "[/\\]\.hg\'" "[/\\]\.bzr\'" "[/\\]_darcs\'" "[/\\]\.svn\'" "[/\\]FOSSIL\'" "[/\\]\.idea\'" "[/\\]\.ensime_cache\'" "[/\\]\.eunit\'" "[/\\]node_modules" "[/\\]\.yarn\'" "[/\\]\.fslckout\'" "[/\\]\.tox\'" "[/\\]\.nox\'" "[/\\]dist\'" "[/\\]dist-newstyle\'" "[/\\]\.stack-work\'" "[/\\]\.bloop\'" "[/\\]\.metals\'" "[/\\]target\'" "[/\\]\.ccls-cache\'" "[/\\]\.vscode\'" "[/\\]\.venv\'" "[/\\]\.mypy_cache\'" "[/\\]\.pytest_cache\'" "[/\\]\.build\'" "[/\\]pycache\'" "[/\\]\.deps\'" "[/\\]build-aux\'" "[/\\]autom4te.cache\'" "[/\\]\.reference\'" "[/\\]bazel-[^/\\]+\'" "[/\\]\.meta\'" "[/\\]Library\'" "[/\\]\.lsp\'" "[/\\]\.clj-kondo\'" "[/\\]\.shadow-cljs\'" "[/\\]\.babel_cache\'" "[/\\]\.cpcache\'" "[/\\]\checkouts\'" "[/\\]\.gradle\'" "[/\\]\.m2\'" "[/\\]bin/Debug\'" "[/\\]obj\'" "[/\\]_opam\'" "[/\\]_build\'" "[/\\]\.elixir_ls\'" ...)) (closure ((watch . #s(lsp-watch :descriptors #<hash-table equal 12/65 0x1bbb069> :root-directory "/home/void/Projects/Moments-Dev/Moments")) (ignored-directories "[/\\]\.git\'" "[/\\]\.github\'" "[/\\]\.gitlab\'" "[/\\]\.circleci\'" "[/\\]\.hg\'" "[/\\]\.bzr\'" "[/\\]_darcs\'" "[/\\]\.svn\'" "[/\\]FOSSIL\'" "[/\\]\.idea\'" "[/\\]\.ensime_cache\'" "[/\\]\.eunit\'" "[/\\]node_modules" "[/\\]\.yarn\'" "[/\\]\.fslckout\'" "[/\\]\.tox\'" "[/\\]\.nox\'" "[/\\]dist\'" "[/\\]dist-newstyle\'" "[/\\]\.stack-work\'" "[/\\]\.bloop\'" "[/\\]\.metals\'" "[/\\]target\'" "[/\\]\.ccls-cache\'" "[/\\]\.vscode\'" "[/\\]\.venv\'" "[/\\]\.mypy_cache\'" "[/\\]\.pytest_cache\'" "[/\\]\.build\'" "[/\\]pycache\'" "[/\\]\.deps\'" "[/\\]build-aux\'" "[/\\]autom4te.cache\'" "[/\\]\.reference\'" "[/\\]bazel-[^/\\]+\'" "[/\\]\.meta\'" "[/\\]Library\'" "[/\\]\.lsp\'" "[/\\]\.clj-kondo\'" "[/\\]\.shadow-cljs\'" "[/\\]\.babel_cache\'" "[/\\]\.cpcache\'" "[/\\]\checkouts\'" "[/\\]\.gradle\'" "[/\\]\.m2\'" "[/\\]bin/Debug\'" "[/\\]obj\'" "[/\\]_opam\'" "[/\\]build\'" ...) (ignored-files "[/\\]flycheck[^/\\]+\'" "[/\\]\.#[^/\\]+\'" "[/\\][^/\\]+~\'") (callback . #f(compiled-function (&rest args2) #<bytecode 0x1f5be9a4ce611751>))) (event) (lsp--folder-watch-callback event callback watch ignored-files ignored-directories))(((1 . 0) changed "/home/void/Projects/Moments-Dev/Moments/Program.cs")) file-notify--call-handler(#s(file-notify--watch :directory "/home/void/Projects/Moments-Dev/Moments" :filename nil :callback (closure ((watch . #s(lsp-watch :descriptors #<hash-table equal 12/65 0x1bbb069> :root-directory "/home/void/Projects/Moments-Dev/Moments")) (ignored-directories "[/\\]\.git\'" "[/\\]\.github\'" "[/\\]\.gitlab\'" "[/\\]\.circleci\'" "[/\\]\.hg\'" "[/\\]\.bzr\'" "[/\\]_darcs\'" "[/\\]\.svn\'" "[/\\]FOSSIL\'" "[/\\]\.idea\'" "[/\\]\.ensime_cache\'" "[/\\]\.eunit\'" "[/\\]node_modules" "[/\\]\.yarn\'" "[/\\]\.fslckout\'" "[/\\]\.tox\'" "[/\\]\.nox\'" "[/\\]dist\'" "[/\\]dist-newstyle\'" "[/\\]\.stack-work\'" "[/\\]\.bloop\'" "[/\\]\.metals\'" "[/\\]target\'" "[/\\]\.ccls-cache\'" "[/\\]\.vscode\'" "[/\\]\.venv\'" "[/\\]\.mypy_cache\'" "[/\\]\.pytest_cache\'" "[/\\]\.build\'" "[/\\]pycache\'" "[/\\]\.deps\'" "[/\\]build-aux\'" "[/\\]autom4te.cache\'" "[/\\]\.reference\'" "[/\\]bazel-[^/\\]+\'" "[/\\]\.meta\'" "[/\\]Library\'" "[/\\]\.lsp\'" "[/\\]\.clj-kondo\'" "[/\\]\.shadow-cljs\'" "[/\\]\.babel_cache\'" "[/\\]\.cpcache\'" "[/\\]\checkouts\'" "[/\\]\.gradle\'" "[/\\]\.m2\'" "[/\\]bin/Debug\'" "[/\\]obj\'" "[/\\]_opam\'" "[/\\]build\'" ...) (ignored-files "[/\\]flycheck[^/\\]+\'" "[/\\]\.#[^/\\]+\'" "[/\\][^/\\]+~\'") (callback . #f(compiled-function (&rest args2) #<bytecode 0x1f5be9a4ce611751>))) (event) (lsp--folder-watch-callback event callback watch ignored-files ignored-directories))) (1 . 0) changed "/home/void/Projects/Moments-Dev/Moments/Program.cs" nil) file-notify--handle-event((1 . 0) (changed) "Program.cs" 0) file-notify--callback-inotify(((1 . 0) (modify) "Program.cs" 0)) file-notify-handle-event((file-notify ((1 . 0) (modify) "Program.cs" 0) file-notify--callback-inotify)) funcall-interactively(file-notify-handle-event (file-notify ((1 . 0) (modify) "Program.cs" 0) file-notify--callback-inotify)) command-execute(file-notify-handle-event nil [(file-notify ((1 . 0) (modify) "Program.cs" 0) file-notify--callback-inotify)] t):buffers (#<buffer Program.cs>) :semantic-tokens-faces nil :semantic-tokens-modifier-faces nil :extra-client-capabilities nil :status initialized :metadata #<hash-table equal 0/65 0x1aa05c9> :watches #<hash-table equal 0/65 0x1aa2279> :workspace-folders nil :last-id 0 :status-string nil :shutdown-action nil :diagnostics #<hash-table equal 0/65 0x1aa2299> ...)) mapc((closure ((watch-bit . 2) (event-numeric-kind . 2) (rel-changed-file . "Program.cs") (changed-file . "/home/void/Projects/Moment...")) (workspace) (if (-any? ... ...) (progn ...))) (#s(lsp--workspace :ewoc nil :server-capabilities #<hash-table equal 22/22 0x1ab7cb9> :registered-server-capabilities (... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...) :root "/home/void/Projects/Moment..." :client #s(lsp--client :language-id nil :add-on? nil :new-connection ... :ignore-regexps nil :ignore-messages nil :notification-handlers #<hash-table equal 2/65 0x374d96b> :request-handlers #<hash-table equal 0/65 0x374dc41> :response-handlers #<hash-table eql 1/65 0x3750e57> :prefix-function nil :uri-handlers #<hash-table equal 0/65 0x3751165> :action-handlers #<hash-table equal 0/65 0x3751393> :major-modes nil :activation-fn ... :priority 0 :server-id csharp-roslyn :multi-root nil :initialization-options nil :semantic-tokens-faces-overrides nil :custom-capabilities nil :library-folders-fn nil :before-file-open-fn nil :initialized-fn lsp-roslyn--on-initialized :remote? nil :completion-in-comments? nil :path->uri-fn lsp-roslyn--path-to-uri :uri->path-fn lsp-roslyn--uri-to-path ...) :host-root nil :proc # :cmd-proc # :buffers (#<buffer Program.cs>) :semantic-tokens-faces nil :semantic-tokens-modifier-faces nil :extra-client-capabilities nil :status initialized :metadata #<hash-table equal 0/65 0x1aa05c9> :watches #<hash-table equal 0/65 0x1aa2279> :workspace-folders nil :last-id 0 :status-string nil :shutdown-action nil :diagnostics #<hash-table equal 0/65 0x1aa2299> :work-done-tokens #<hash-table equal 0/65 0x1aa5b91>))) seq-do((closure ((watch-bit . 2) (event-numeric-kind . 2) (rel-changed-file . "Program.cs") (changed-file . "/home/void/Projects/Moment...")) (workspace) (if (-any? ... ...) (progn ...))) (#s(lsp--workspace :ewoc nil :server-capabilities #<hash-table equal 22/22 0x1ab7cb9> :registered-server-capabilities (... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...) :root "/home/void/Projects/Moment..." :client #s(lsp--client :language-id nil :add-on? nil :new-connection ... :ignore-regexps nil :ignore-messages nil :notification-handlers #<hash-table equal 2/65 0x374d96b> :request-handlers #<hash-table equal 0/65 0x374dc41> :response-handlers #<hash-table eql 1/65 0x3750e57> :prefix-function nil :uri-handlers #<hash-table equal 0/65 0x3751165> :action-handlers #<hash-table equal 0/65 0x3751393> :major-modes nil :activation-fn ... :priority 0 :server-id csharp-roslyn :multi-root nil :initialization-options nil :semantic-tokens-faces-overrides nil :custom-capabilities nil :library-folders-fn nil :before-file-open-fn nil :initialized-fn lsp-roslyn--on-initialized :remote? nil :completion-in-comments? nil :path->uri-fn lsp-roslyn--path-to-uri :uri->path-fn lsp-roslyn--uri-to-path ...) :host-root nil :proc # :cmd-proc # :buffers (#<buffer Program.cs>) :semantic-tokens-faces nil :semantic-tokens-modifier-faces nil :extra-client-capabilities nil :status initialized :metadata #<hash-table equal 0/65 0x1aa05c9> :watches #<hash-table equal 0/65 0x1aa2279> :workspace-folders nil :last-id 0 :status-string nil :shutdown-action nil :diagnostics #<hash-table equal 0/65 0x1aa2299> :work-done-tokens #<hash-table equal 0/65 0x1aa5b91>))) (let* ((changed-file (car (cdr (cdr event)))) (rel-changed-file (f-relative changed-file root-folder)) (event-numeric-kind (alist-get (car (cdr event)) lsp--file-change-type)) (bit-position (1- event-numeric-kind)) (watch-bit (ash 1 bit-position))) (seq-do #'(lambda (workspace) (if (-any? #'(lambda ... ...) (progn (or ... ...) (aref workspace 3))) (progn (let (...) (lsp-notify "workspace/didChangeWatchedFiles" ...))))) (gethash root-folder (progn (or (progn (and (memq ... cl-struct-lsp-session-tags) t)) (signal 'wrong-type-argument (list 'lsp-session session))) (aref session 4))))) lsp--file-process-event(#s(lsp-session :folders ("/home/void/Projects/Moments-Dev/Moments") :folders-blocklist nil :server-id->folders #<hash-table equal 3/65 0x30c609f> :folder->servers #<hash-table equal 1/65 0x30c60bf> :metadata #<hash-table equal 2/65 0x30c60df>) "/home/void/Projects/Moments-Dev/Moments" ((1 . 0) changed "/home/void/Projects/Moments-Dev/Moments/Program.cs")) apply(lsp--file-process-event (#s(lsp-session :folders ("/home/void/Projects/Moments-Dev/Moments") :folders-blocklist nil :server-id->folders #<hash-table equal 3/65 0x30c609f> :folder->servers #<hash-table equal 1/65 0x30c60bf> :metadata #<hash-table equal 2/65 0x30c60df>) "/home/void/Projects/Moments-Dev/Moments" ((1 . 0) changed "/home/void/Projects/Moments-Dev/Moments/Program.cs"))) #f(compiled-function (&rest args2) #<bytecode 0x1f5be9a4ce611751>)(((1 . 0) changed "/home/void/Projects/Moments-Dev/Moments/Program.cs")) funcall(#f(compiled-function (&rest args2) #<bytecode 0x1f5be9a4ce611751>) ((1 . 0) changed "/home/void/Projects/Moments-Dev/Moments/Program.cs")) (cond ((and (file-directory-p file-name) (equal 'created event-type) (not (lsp--string-match-any ignored-directories file-name))) (lsp-watch-root-folder (file-truename file-name) callback ignored-files ignored-directories watch) (seq-do #'(lambda (f) (if (file-directory-p f) nil (funcall callback (list nil ... f)))) (directory-files-recursively file-name "." t))) ((and (memq event-type '(created deleted changed)) (not (file-directory-p file-name)) (not (lsp--string-match-any ignored-files file-name))) (funcall callback event)) ((and (memq event-type '(renamed)) (not (file-directory-p file-name)) (not (lsp--string-match-any ignored-files file-name))) (funcall callback (list (cl-first event) 'deleted (car (cdr (cdr event))))) (funcall callback (list (cl-first event) 'created (car (cdr (cdr (cdr event)))))))) (let ((file-name (car (cdr (cdr event)))) (event-type (car (cdr event)))) (cond ((and (file-directory-p file-name) (equal 'created event-type) (not (lsp--string-match-any ignored-directories file-name))) (lsp-watch-root-folder (file-truename file-name) callback ignored-files ignored-directories watch) (seq-do #'(lambda (f) (if (file-directory-p f) nil (funcall callback ...))) (directory-files-recursively file-name "." t))) ((and (memq event-type '(created deleted changed)) (not (file-directory-p file-name)) (not (lsp--string-match-any ignored-files file-name))) (funcall callback event)) ((and (memq event-type '(renamed)) (not (file-directory-p file-name)) (not (lsp--string-match-any ignored-files file-name))) (funcall callback (list (cl-first event) 'deleted (car (cdr (cdr event))))) (funcall callback (list (cl-first event) 'created (car (cdr (cdr ...)))))))) lsp--folder-watch-callback(((1 . 0) changed "/home/void/Projects/Moments-Dev/Moments/Program.cs") #f(compiled-function (&rest args2) #<bytecode 0x1f5be9a4ce611751>) #s(lsp-watch :descriptors #<hash-table equal 12/65 0x1bbb069> :root-directory "/home/void/Projects/Moments-Dev/Moments") ("[/\\]flycheck
By the way, I can't get the automatic download working, it says 401 Unauthorized, so I manually downloaded it from Download and Release Roslyn.
It seems in LSP 3.17 it changed that GlobPattern could either be a string or an object with two attributes (baseUri and pattern)
This is great, by my limited test, it is much faster than omnisharp
Does it support the same capabilities?
This is great, by my limited test, it is much faster than omnisharp
Does it support the same capabilities?
Sorry I haven't used it much, but it is the one powering vscode-csharp So I assume it could be quite competent.
CC: @razzmatazz (the C#/F# maintainer here)
@Ruin0x11 Idk what are the lsp-mode
rules though, but usually commits that fix previous commits within a single pull-request/merge-request/patchset are frowned upon. If your older commit has a bug, fix it in that commit. In your case though I presume you might want to squash everything.
Can you resolve conflicts and rebase this? Thanks!
Hey all, thanks so much for working on this. Any updates as to what's the status of the PR?
Can you resolve conflicts and rebase this? Thanks!
I'm not sure how I would push commits to someone else's fork and branch. If you know how that can be done, I'd be happy to try and resolve the conflicts.
Oops, sorry. I thought you were the author. Feel free to open another same PR with the fixes since we haven't heard back from the author for a while. 🤔
we haven't heard back from the author for a while. 🤔
This isn't entirely true. You asked the author to rebase 2 months ago which they did. There wasn't anything to do on their side 😊 2 months later you ask them to rebase again, and it happened just 9 hours ago so they may not even seen the comment.
This isn't entirely true. You asked the author to rebase 2 months ago which they did. There wasn't anything to do on their side 😊 2 months later you ask them to rebase again, and it happened just 9 hours ago so they may not even seen the comment.
Oh, you are right. Sorry, I apologize. I thought this was another similar PR: https://github.com/emacs-lsp/lsp-mode/pull/4441 (both on C#). 😓
LGTM. Thanks!