on master help sign in
Fix progress reporting (#153)

* Fix progress reporting * Bump haskell-lsp and lsp-test revisions * Change client name * Fix typo * Bump revisions

commit5febbcbc48c7d7d4fdc8902718cecf0a2c49cc8e authorMoritz Kiefer <moritz.kiefer@purelyfunctional.org> dateThu 17 Oct 2019, 11:11 (7 years ago) parent3d34065
16 files changed+197−131
exe/Main.hs+4−3 extension/package-lock.json+86−64 extension/package.json+21−19 extension/src/extension.ts+4−3 ghcide.cabal+3−1 src/Development/IDE/Core/Service.hs+4−1 src/Development/IDE/Core/Shake.hs+34−21 src/Development/IDE/LSP/Definition.hs+1−1 src/Development/IDE/LSP/Hover.hs+1−1 src/Development/IDE/LSP/LanguageServer.hs+3−2 src/Development/IDE/Types/Options.hs+1−1 stack-ghc-lib.yaml+7−3 stack.yaml+7−3 stack84.yaml+7−3 stack88.yaml+9−2 test/exe/Main.hs+5−3
exe/Main.hs+4−3
@@ -29,6 +29,7 @@ import Development.IDE.GHC.Util
2929import qualified Data.Text as T
3030import qualified Data.Text.IO as T
3131import Language.Haskell.LSP.Messages
32+import Language.Haskell.LSP.Types (LspId(IdInt))
3233import Linker
3334import Data.Version
3435import Development.IDE.LSP.LanguageServer
@@ -76,14 +77,14 @@ main = do
7677 t <- offsetTime
7778 hPutStrLn stderr "Starting LSP server..."
7879 hPutStrLn stderr "If you are seeing this in a terminal, you probably should have run ghcidie WITHOUT the --lsp option!"
79− runLanguageServer def def $ \event vfs caps -> do
80+ runLanguageServer def def $ \getLspId event vfs caps -> do
8081 t <- t
8182 hPutStrLn stderr $ "Started LSP server in " ++ showDuration t
8283 -- very important we only call loadSession once, and it's fast, so just do it before starting
8384 session <- loadSession dir
8485 let options = (defaultIdeOptions $ return session)
8586 { optReportProgress = clientSupportsProgress caps }
86− initialise (mainRule >> action kick) event (logger minBound) options vfs
87+ initialise (mainRule >> action kick) getLspId event (logger minBound) options vfs
8788 else do
8889 putStrLn $ "Ghcide setup tester in " ++ dir ++ "."
8990 putStrLn "Report bugs at https://github.com/digital-asset/ghcide/issues"
@@ -112,7 +113,7 @@ main = do
112113 let grab file = fromMaybe (head sessions) $ do
113114 cradle <- Map.lookup file filesToCradles
114115 Map.lookup cradle cradlesToSessions
115− ide <- initialise mainRule (showEvent lock) (logger Info) (defaultIdeOptions $ return $ return . grab) vfs
116+ ide <- initialise mainRule (pure $ IdInt 0) (showEvent lock) (logger Info) (defaultIdeOptions $ return $ return . grab) vfs
116117
117118 putStrLn "\nStep 6/6: Type checking the files"
118119 setFilesOfInterest ide $ Set.fromList $ map toNormalizedFilePath files
extension/package-lock.json+86−64
@@ -5,18 +5,18 @@
55 "requires": true,
66 "dependencies": {
77 "@babel/code-frame": {
8− "version": "7.0.0",
9− "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
10− "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
8+ "version": "7.5.5",
9+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
10+ "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
1111 "dev": true,
1212 "requires": {
1313 "@babel/highlight": "^7.0.0"
1414 }
1515 },
1616 "@babel/highlight": {
17− "version": "7.0.0",
18− "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz",
19− "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
17+ "version": "7.5.0",
18+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
19+ "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
2020 "dev": true,
2121 "requires": {
2222 "chalk": "^2.0.0",
@@ -25,15 +25,15 @@
2525 }
2626 },
2727 "@types/mocha": {
28− "version": "2.2.48",
29− "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.48.tgz",
30− "integrity": "sha512-nlK/iyETgafGli8Zh9zJVCTicvU3iajSkRwOh3Hhiva598CMqNJ4NcVCGMTGKpGpTYj/9R8RLzS9NAykSSCqGw==",
28+ "version": "5.2.7",
29+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz",
30+ "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==",
3131 "dev": true
3232 },
3333 "@types/node": {
34− "version": "10.14.6",
35− "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.6.tgz",
36− "integrity": "sha512-Fvm24+u85lGmV4hT5G++aht2C5I4Z4dYlWZIh62FAfFO/TfzXtPpoLI6I7AuBWkIFqZCnhFOoTT7RjjaIL5Fjg==",
34+ "version": "12.7.11",
35+ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.11.tgz",
36+ "integrity": "sha512-Otxmr2rrZLKRYIybtdG/sgeO+tHY20GxeDjcGmUnmmlCWyEnv2a2x1ZXBo3BTec4OiTXMQCiazB8NMBf0iRlFw==",
3737 "dev": true
3838 },
3939 "@types/vscode": {
@@ -147,9 +147,9 @@
147147 "dev": true
148148 },
149149 "commander": {
150− "version": "2.20.0",
151− "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
152− "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
150+ "version": "2.20.1",
151+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.1.tgz",
152+ "integrity": "sha512-cCuLsMhJeWQ/ZpsFTbE765kvVfoeSddc4nU3up4fV+fDBcfUXnbITJ+JzhkdjzOqhURjZgujxaioam4RM9yGUg==",
153153 "dev": true
154154 },
155155 "concat-map": {
@@ -189,9 +189,9 @@
189189 "dev": true
190190 },
191191 "diff": {
192− "version": "3.5.0",
193− "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
194− "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
192+ "version": "4.0.1",
193+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz",
194+ "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==",
195195 "dev": true
196196 },
197197 "dom-serializer": {
@@ -248,9 +248,9 @@
248248 "dev": true
249249 },
250250 "esutils": {
251− "version": "2.0.2",
252− "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
253− "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
251+ "version": "2.0.3",
252+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
253+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
254254 "dev": true
255255 },
256256 "fd-slicer": {
@@ -313,9 +313,9 @@
313313 }
314314 },
315315 "inherits": {
316− "version": "2.0.3",
317− "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
318− "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
316+ "version": "2.0.4",
317+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
318+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
319319 "dev": true
320320 },
321321 "js-tokens": {
@@ -457,6 +457,14 @@
457457 "dev": true,
458458 "requires": {
459459 "semver": "^5.1.0"
460+ },
461+ "dependencies": {
462+ "semver": {
463+ "version": "5.7.1",
464+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
465+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
466+ "dev": true
467+ }
460468 }
461469 },
462470 "parse5": {
@@ -507,20 +515,25 @@
507515 }
508516 },
509517 "resolve": {
510− "version": "1.11.0",
511− "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz",
512− "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==",
518+ "version": "1.12.0",
519+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
520+ "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
513521 "dev": true,
514522 "requires": {
515523 "path-parse": "^1.0.6"
516524 }
517525 },
518− "semver": {
519− "version": "5.7.0",
520− "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
521− "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
526+ "safe-buffer": {
527+ "version": "5.2.0",
528+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
529+ "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==",
522530 "dev": true
523531 },
532+ "semver": {
533+ "version": "6.3.0",
534+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
535+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
536+ },
524537 "sprintf-js": {
525538 "version": "1.0.3",
526539 "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
@@ -534,14 +547,6 @@
534547 "dev": true,
535548 "requires": {
536549 "safe-buffer": "~5.2.0"
537− },
538− "dependencies": {
539− "safe-buffer": {
540− "version": "5.2.0",
541− "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
542− "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==",
543− "dev": true
544− }
545550 }
546551 },
547552 "supports-color": {
@@ -569,16 +574,16 @@
569574 "dev": true
570575 },
571576 "tslint": {
572− "version": "5.17.0",
573− "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.17.0.tgz",
574− "integrity": "sha512-pflx87WfVoYepTet3xLfDOLDm9Jqi61UXIKePOuca0qoAZyrGWonDG9VTbji58Fy+8gciUn8Bt7y69+KEVjc/w==",
577+ "version": "5.20.0",
578+ "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.0.tgz",
579+ "integrity": "sha512-2vqIvkMHbnx8acMogAERQ/IuINOq6DFqgF8/VDvhEkBqQh/x6SP0Y+OHnKth9/ZcHQSroOZwUQSN18v8KKF0/g==",
575580 "dev": true,
576581 "requires": {
577582 "@babel/code-frame": "^7.0.0",
578583 "builtin-modules": "^1.1.1",
579584 "chalk": "^2.3.0",
580585 "commander": "^2.12.1",
581− "diff": "^3.2.0",
586+ "diff": "^4.0.1",
582587 "glob": "^7.1.1",
583588 "js-yaml": "^3.13.1",
584589 "minimatch": "^3.0.4",
@@ -587,6 +592,14 @@
587592 "semver": "^5.3.0",
588593 "tslib": "^1.8.0",
589594 "tsutils": "^2.29.0"
595+ },
596+ "dependencies": {
597+ "semver": {
598+ "version": "5.7.1",
599+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
600+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
601+ "dev": true
602+ }
590603 }
591604 },
592605 "tsutils": {
@@ -615,9 +628,9 @@
615628 }
616629 },
617630 "typescript": {
618− "version": "3.4.5",
619− "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz",
620− "integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw==",
631+ "version": "3.6.3",
632+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.3.tgz",
633+ "integrity": "sha512-N7bceJL1CtRQ2RiG0AQME13ksR7DiuQh/QehubYcghzv20tnh+MQnQIuJddTmsbqYj+dztchykemz0zFzlvdQw==",
621634 "dev": true
622635 },
623636 "uc.micro": {
@@ -645,9 +658,9 @@
645658 "dev": true
646659 },
647660 "vsce": {
648− "version": "1.66.0",
649− "resolved": "https://registry.npmjs.org/vsce/-/vsce-1.66.0.tgz",
650− "integrity": "sha512-Zf4+WD4PhEcOr7jkU08SI9lwFqDhmhk73YOCGQ/tNLaBy+PnnX4eSdqj9LdzDLuI2dsyomJLXzDSNgxuaInxCQ==",
661+ "version": "1.67.1",
662+ "resolved": "https://registry.npmjs.org/vsce/-/vsce-1.67.1.tgz",
663+ "integrity": "sha512-Y/0fnfaLs2cCfytTGmy4Cp1bf9BaxHO7020YePdUwxjAlPlZ9+lm74M9yEFEWXTIug0L0sMax1WMz0TnozIqxg==",
651664 "dev": true,
652665 "requires": {
653666 "azure-devops-node-api": "^7.2.0",
@@ -670,34 +683,43 @@
670683 "url-join": "^1.1.0",
671684 "yauzl": "^2.3.1",
672685 "yazl": "^2.2.2"
686+ },
687+ "dependencies": {
688+ "semver": {
689+ "version": "5.7.1",
690+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
691+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
692+ "dev": true
693+ }
673694 }
674695 },
675696 "vscode-jsonrpc": {
676− "version": "4.0.0",
677− "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz",
678− "integrity": "sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg=="
697+ "version": "5.0.0-next.2",
698+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-5.0.0-next.2.tgz",
699+ "integrity": "sha512-Q3/jabZUNviCG9hhF6hHWjhrABevPF9mv0aiE2j8BYCAP2k+aHTpjMyk+04MzaAqWYwXdQuZkLSbcYCCqbzJLg=="
679700 },
680701 "vscode-languageclient": {
681− "version": "4.4.2",
682− "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-4.4.2.tgz",
683− "integrity": "sha512-9TUzsg1UM6n1UEyPlWbDf7tK1wJAK7UGFRmGDN8sz4KmbbDiVRh6YicaB/5oRSVTpuV47PdJpYlOl3SJ0RiK1Q==",
702+ "version": "6.0.0-next.1",
703+ "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-6.0.0-next.1.tgz",
704+ "integrity": "sha512-eJ9VjLFNINArgRzLbQ11YlWry7dM93GEODkQBXTRfrSypksiO9qSGr4SHhWgxxP26p4FRSpzc/17+N+Egnnchg==",
684705 "requires": {
685− "vscode-languageserver-protocol": "^3.10.3"
706+ "semver": "^6.3.0",
707+ "vscode-languageserver-protocol": "^3.15.0-next.9"
686708 }
687709 },
688710 "vscode-languageserver-protocol": {
689− "version": "3.14.1",
690− "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.14.1.tgz",
691− "integrity": "sha512-IL66BLb2g20uIKog5Y2dQ0IiigW0XKrvmWiOvc0yXw80z3tMEzEnHjaGAb3ENuU7MnQqgnYJ1Cl2l9RvNgDi4g==",
711+ "version": "3.15.0-next.9",
712+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.0-next.9.tgz",
713+ "integrity": "sha512-b9PAxouMmtsLEe8ZjbIMPb7wRWPhckGfgjwZLmp/dWnaAuRPYtY3lGO0/rNbLc3jKIqCVlnEyYVFKalzDAzj0g==",
692714 "requires": {
693− "vscode-jsonrpc": "^4.0.0",
694− "vscode-languageserver-types": "3.14.0"
715+ "vscode-jsonrpc": "^5.0.0-next.2",
716+ "vscode-languageserver-types": "^3.15.0-next.5"
695717 }
696718 },
697719 "vscode-languageserver-types": {
698− "version": "3.14.0",
699− "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz",
700− "integrity": "sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A=="
720+ "version": "3.15.0-next.5",
721+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.0-next.5.tgz",
722+ "integrity": "sha512-7hrELhTeWieUgex3+6692KjCkcmO/+V/bFItM5MHGcBotzwmjEuXjapLLYTYhIspuJ1ibRSik5MhX5YwLpsPiw=="
701723 },
702724 "wrappy": {
703725 "version": "1.0.2",
extension/package.json+21−19
@@ -3,12 +3,12 @@
33 "displayName": "ghcide",
44 "publisher": "DigitalAssetHoldingsLLC",
55 "repository": {
6− "type" : "git",
7− "url" : "https://github.com/digitalasset/daml.git"
6+ "type": "git",
7+ "url": "https://github.com/digitalasset/daml.git"
88 },
99 "description": "A simple extension to test out haskell ide core",
1010 "version": "0.0.1",
11− "license": "Apache-2.0",
11+ "license": "Apache-2.0",
1212 "engines": {
1313 "vscode": "^1.35.0"
1414 },
@@ -16,19 +16,21 @@
1616 "Other"
1717 ],
1818 "activationEvents": [
19− "onLanguage:haskell"
19+ "onLanguage:haskell"
2020 ],
2121 "main": "./out/extension.js",
2222 "contributes": {
23− "languages": [{
24− "id": "haskell",
25− "extensions": [
26− "hs",
27− "hs-boot",
28− "lhs-boot",
29− "lhs"
30− ]
31− }],
23+ "languages": [
24+ {
25+ "id": "haskell",
26+ "extensions": [
27+ "hs",
28+ "hs-boot",
29+ "lhs-boot",
30+ "lhs"
31+ ]
32+ }
33+ ],
3234 "configuration": {
3335 "type": "object",
3436 "title": "Haskell IDE Core Configuration",
@@ -53,18 +55,18 @@
5355 "test": "npm run compile && node ./node_modules/vscode/bin/test",
5456 "vscepackage": "vsce package"
5557 },
56− "extensionDependencies": [
57− "justusadam.language-haskell"
58+ "extensionDependencies": [
59+ "justusadam.language-haskell"
5860 ],
5961 "dependencies": {
60− "vscode-languageclient": "^4.1.4"
62+ "vscode-languageclient": "^6.0.0-next.1"
6163 },
6264 "devDependencies": {
63− "@types/mocha": "^2.2.42",
64− "@types/node": "^10.12.21",
65+ "@types/mocha": "^5.2.7",
66+ "@types/node": "^12.7.11",
6567 "@types/vscode": "1.35.0",
6668 "tslint": "^5.12.1",
67− "typescript": "^3.3.1",
69+ "typescript": "^3.6.3",
6870 "vsce": "^1.66.0"
6971 }
7072}
extension/src/extension.ts+4−3
@@ -28,12 +28,13 @@ export function activate(context: ExtensionContext) {
2828 // Register the server for plain text documents
2929 documentSelector: ["haskell"]
3030 };
31− let client2 = new LanguageClient(
31+ client = new LanguageClient(
3232 'haskell',
33− 'Haskell IDE Core',
33+ 'ghcide',
3434 { args: args, command: cPath, options: {cwd: workspace.rootPath }}, clientOptions, true);
35+ client.registerProposedFeatures();
3536
36− client2.start();
37+ client.start();
3738}
3839
3940export function deactivate(): Thenable<void> | undefined {
ghcide.cabal+3−1
@@ -57,7 +57,8 @@ library
5757 time,
5858 transformers,
5959 unordered-containers,
60− utf8-string
60+ utf8-string,
61+ hslogger
6162 if flag(ghc-lib)
6263 build-depends:
6364 ghc-lib >= 8.8,
@@ -138,6 +139,7 @@ executable ghcide
138139 ghc-options: -threaded -Wall -Wno-name-shadowing
139140 main-is: Main.hs
140141 build-depends:
142+ hslogger,
141143 base == 4.*,
142144 containers,
143145 data-default,
src/Development/IDE/Core/Service.hs+4−1
@@ -28,6 +28,7 @@ import Development.IDE.Types.Logger
2828import Development.Shake
2929import Data.Either.Extra
3030import qualified Language.Haskell.LSP.Messages as LSP
31+import qualified Language.Haskell.LSP.Types as LSP
3132
3233import Development.IDE.Core.Shake
3334
@@ -41,13 +42,15 @@ instance IsIdeGlobal GlobalIdeOptions
4142
4243-- | Initialise the Compiler Service.
4344initialise :: Rules ()
45+ -> IO LSP.LspId
4446 -> (LSP.FromServerMessage -> IO ())
4547 -> Logger
4648 -> IdeOptions
4749 -> VFSHandle
4850 -> IO IdeState
49−initialise mainRule toDiags logger options vfs =
51+initialise mainRule getLspId toDiags logger options vfs =
5052 shakeOpen
53+ getLspId
5154 toDiags
5255 logger
5356 (optShakeProfiling options)
src/Development/IDE/Core/Shake.hs+34−21
@@ -275,14 +275,15 @@ seqValue v b = case v of
275275 Failed -> b
276276
277277-- | Open a 'IdeState', should be shut using 'shakeShut'.
278−shakeOpen :: (LSP.FromServerMessage -> IO ()) -- ^ diagnostic handler
278+shakeOpen :: IO LSP.LspId
279+ -> (LSP.FromServerMessage -> IO ()) -- ^ diagnostic handler
279280 -> Logger
280281 -> Maybe FilePath
281282 -> IdeReportProgress
282283 -> ShakeOptions
283284 -> Rules ()
284285 -> IO IdeState
285−shakeOpen eventer logger shakeProfileDir (IdeReportProgress reportProgress) opts rules = do
286+shakeOpen getLspId eventer logger shakeProfileDir (IdeReportProgress reportProgress) opts rules = do
286287 shakeExtras <- do
287288 globals <- newVar HMap.empty
288289 state <- newVar HMap.empty
@@ -295,29 +296,38 @@ shakeOpen eventer logger shakeProfileDir (IdeReportProgress reportProgress) opts
295296 shakeOpenDatabase
296297 opts
297298 { shakeExtra = addShakeExtra shakeExtras $ shakeExtra opts
298− , shakeProgress = if reportProgress then lspShakeProgress eventer else const (pure ())
299+ , shakeProgress = if reportProgress then lspShakeProgress getLspId eventer else const (pure ())
299300 }
300301 rules
301302 shakeAbort <- newMVar $ return ()
302303 shakeDb <- shakeDb
303304 return IdeState{..}
304305
305−lspShakeProgress :: (LSP.FromServerMessage -> IO ()) -> IO Progress -> IO ()
306−lspShakeProgress sendMsg prog = do
307− u <- T.pack . show . hashUnique <$> newUnique
306+lspShakeProgress :: IO LSP.LspId -> (LSP.FromServerMessage -> IO ()) -> IO Progress -> IO ()
307+lspShakeProgress getLspId sendMsg prog = do
308+ lspId <- getLspId
309+ u <- ProgressTextToken . T.pack . show . hashUnique <$> newUnique
310+ sendMsg $ LSP.ReqWorkDoneProgressCreate $ LSP.fmServerWorkDoneProgressCreateRequest
311+ lspId $ LSP.WorkDoneProgressCreateParams
312+ { _token = u }
308313 bracket_ (start u) (stop u) (loop u)
309314 where
310− start id = sendMsg $ LSP.NotProgressStart $ LSP.fmServerProgressStartNotification
311− ProgressStartParams
312− { _id = id
313− , _title = "Processing"
314− , _cancellable = Nothing
315− , _message = Nothing
316− , _percentage = Nothing
315+ start id = sendMsg $ LSP.NotWorkDoneProgressBegin $ LSP.fmServerWorkDoneProgressBeginNotification
316+ LSP.ProgressParams
317+ { _token = id
318+ , _value = WorkDoneProgressBeginParams
319+ { _title = "Processing"
320+ , _cancellable = Nothing
321+ , _message = Nothing
322+ , _percentage = Nothing
323+ }
317324 }
318− stop id = sendMsg $ LSP.NotProgressDone $ LSP.fmServerProgressDoneNotification
319− ProgressDoneParams
320− { _id = id
325+ stop id = sendMsg $ LSP.NotWorkDoneProgressEnd $ LSP.fmServerWorkDoneProgressEndNotification
326+ LSP.ProgressParams
327+ { _token = id
328+ , _value = WorkDoneProgressEndParams
329+ { _message = Nothing
330+ }
321331 }
322332 sample = 0.1
323333 loop id = forever $ do
@@ -325,11 +335,14 @@ lspShakeProgress sendMsg prog = do
325335 p <- prog
326336 let done = countSkipped p + countBuilt p
327337 let todo = done + countUnknown p + countTodo p
328− sendMsg $ LSP.NotProgressReport $ LSP.fmServerProgressReportNotification
329− ProgressReportParams
330− { _id = id
331− , _message = Just $ T.pack $ show done <> "/" <> show todo
332− , _percentage = Nothing
338+ sendMsg $ LSP.NotWorkDoneProgressReport $ LSP.fmServerWorkDoneProgressReportNotification
339+ LSP.ProgressParams
340+ { _token = id
341+ , _value = LSP.WorkDoneProgressReportParams
342+ { _cancellable = Nothing
343+ , _message = Just $ T.pack $ show done <> "/" <> show todo
344+ , _percentage = Nothing
345+ }
333346 }
334347
335348shakeProfile :: IdeState -> FilePath -> IO ()
src/Development/IDE/LSP/Definition.hs+1−1
@@ -24,7 +24,7 @@ gotoDefinition
2424 :: IdeState
2525 -> TextDocumentPositionParams
2626 -> IO LocationResponseParams
27−gotoDefinition ide (TextDocumentPositionParams (TextDocumentIdentifier uri) pos) = do
27+gotoDefinition ide (TextDocumentPositionParams (TextDocumentIdentifier uri) pos _) = do
2828 mbResult <- case uriToFilePath' uri of
2929 Just path -> do
3030 logInfo (ideLogger ide) $
src/Development/IDE/LSP/Hover.hs+1−1
@@ -24,7 +24,7 @@ onHover
2424 :: IdeState
2525 -> TextDocumentPositionParams
2626 -> IO (Maybe Hover)
27−onHover ide (TextDocumentPositionParams (TextDocumentIdentifier uri) pos) = do
27+onHover ide (TextDocumentPositionParams (TextDocumentIdentifier uri) pos _) = do
2828 mbResult <- case uriToFilePath' uri of
2929 Just (toNormalizedFilePath -> filePath) -> do
3030 logInfo (ideLogger ide) $
src/Development/IDE/LSP/LanguageServer.hs+3−2
@@ -41,7 +41,7 @@ import Language.Haskell.LSP.Messages
4141runLanguageServer
4242 :: LSP.Options
4343 -> PartialHandlers
44− -> ((FromServerMessage -> IO ()) -> VFSHandle -> ClientCapabilities -> IO IdeState)
44+ -> (IO LspId -> (FromServerMessage -> IO ()) -> VFSHandle -> ClientCapabilities -> IO IdeState)
4545 -> IO ()
4646runLanguageServer options userHandlers getIdeState = do
4747 -- Move stdout to another file descriptor and duplicate stderr
@@ -120,7 +120,7 @@ runLanguageServer options userHandlers getIdeState = do
120120 where
121121 handleInit :: IO () -> (LspId -> IO ()) -> (LspId -> IO ()) -> Chan Message -> LSP.LspFuncs () -> IO (Maybe err)
122122 handleInit exitClientMsg clearReqId waitForCancel clientMsgChan lspFuncs@LSP.LspFuncs{..} = do
123− ide <- getIdeState sendFunc (makeLSPVFSHandle lspFuncs) clientCapabilities
123+ ide <- getIdeState getNextReqId sendFunc (makeLSPVFSHandle lspFuncs) clientCapabilities
124124 _ <- flip forkFinally (const exitClientMsg) $ forever $ do
125125 msg <- readChan clientMsgChan
126126 case msg of
@@ -161,6 +161,7 @@ runLanguageServer options userHandlers getIdeState = do
161161setHandlersIgnore :: PartialHandlers
162162setHandlersIgnore = PartialHandlers $ \_ x -> return x
163163 {LSP.initializedHandler = none
164+ ,LSP.responseHandler = none
164165 }
165166 where none = Just $ const $ return ()
166167
src/Development/IDE/Types/Options.hs+1−1
@@ -58,7 +58,7 @@ newtype IdeDefer = IdeDefer Bool
5858
5959clientSupportsProgress :: LSP.ClientCapabilities -> IdeReportProgress
6060clientSupportsProgress caps = IdeReportProgress $ fromMaybe False $
61− LSP._progress =<< LSP._window (caps :: LSP.ClientCapabilities)
61+ LSP._workDoneProgress =<< LSP._window (caps :: LSP.ClientCapabilities)
6262
6363defaultIdeOptions :: IO (FilePath -> Action HscEnvEq) -> IdeOptions
6464defaultIdeOptions session = IdeOptions
stack-ghc-lib.yaml+7−3
@@ -2,9 +2,13 @@ resolver: nightly-2019-09-16
22packages:
33- .
44extra-deps:
5−- haskell-lsp-0.16.0.0
6−- haskell-lsp-types-0.16.0.0
7−- lsp-test-0.7.0.0
5+- github: alanz/haskell-lsp
6+ commit: fefcae8b44aaf7658e0f90d5530832efe0b32053
7+ subdirs:
8+ - .
9+ - haskell-lsp-types
10+- github: cocreature/lsp-test
11+ commit: 40da0529edb687864acf2716dff310d38b0641c6
812- hie-bios-0.2.0
913- ghc-lib-parser-8.8.1
1014- ghc-lib-8.8.1
stack.yaml+7−3
@@ -2,9 +2,13 @@ resolver: nightly-2019-09-16
22packages:
33- .
44extra-deps:
5−- haskell-lsp-0.16.0.0
6−- haskell-lsp-types-0.16.0.0
7−- lsp-test-0.7.0.0
5+- github: alanz/haskell-lsp
6+ commit: fefcae8b44aaf7658e0f90d5530832efe0b32053
7+ subdirs:
8+ - .
9+ - haskell-lsp-types
10+- github: cocreature/lsp-test
11+ commit: 40da0529edb687864acf2716dff310d38b0641c6
812- hie-bios-0.2.1
913nix:
1014 packages: [zlib]
stack84.yaml+7−3
@@ -3,13 +3,17 @@ packages:
33- .
44
55extra-deps:
6+- github: alanz/haskell-lsp
7+ commit: fefcae8b44aaf7658e0f90d5530832efe0b32053
8+ subdirs:
9+ - .
10+ - haskell-lsp-types
11+- github: cocreature/lsp-test
12+ commit: 40da0529edb687864acf2716dff310d38b0641c6
613- rope-utf16-splay-0.3.1.0
714- shake-0.18.3
815- filepattern-0.1.1
916- js-dgtable-0.5.2
10−- haskell-lsp-0.16.0.0
11−- haskell-lsp-types-0.16.0.0
12−- lsp-test-0.7.0.0
1317- hie-bios-0.2.1
1418nix:
1519 packages: [zlib]
stack88.yaml+9−2
@@ -2,9 +2,16 @@ resolver: nightly-2019-10-10
22packages:
33- .
44extra-deps:
5−- haskell-lsp-0.16.0.0
5+- github: alanz/haskell-lsp
6+ commit: fefcae8b44aaf7658e0f90d5530832efe0b32053
7+ subdirs:
8+ - .
9+ - haskell-lsp-types
10+- github: cocreature/lsp-test
11+ commit: 40da0529edb687864acf2716dff310d38b0641c6
12+- prettyprinter-1.3.0
13+- prettyprinter-ansi-terminal-1.1.1.2
614- hslogger-1.3.0.0
7−- lsp-test-0.7.0.0
815- network-bsd-2.8.1.0
916allow-newer: true
1017nix:
test/exe/Main.hs+5−3
@@ -31,9 +31,10 @@ main :: IO ()
3131main = defaultMain $ testGroup "HIE"
3232 [ testSession "open close" $ do
3333 doc <- openDoc' "Testing.hs" "haskell" ""
34− void (message :: Session ProgressStartNotification)
34+ void (message :: Session WorkDoneProgressCreateRequest)
35+ void (message :: Session WorkDoneProgressBeginNotification)
3536 closeDoc doc
36− void (message :: Session ProgressDoneNotification)
37+ void (message :: Session WorkDoneProgressEndNotification)
3738 , initializeResponseTests
3839 , diagnosticTests
3940 , codeActionTests
@@ -118,7 +119,8 @@ diagnosticTests = testGroup "diagnostics"
118119 , testSessionWait "introduce syntax error" $ do
119120 let content = T.unlines [ "module Testing where" ]
120121 doc <- openDoc' "Testing.hs" "haskell" content
121− void (message :: Session ProgressStartNotification)
122+ void (message :: Session WorkDoneProgressCreateRequest)
123+ void (message :: Session WorkDoneProgressBeginNotification)
122124 let change = TextDocumentContentChangeEvent
123125 { _range = Just (Range (Position 0 15) (Position 0 18))
124126 , _rangeLength = Nothing