init
This commit is contained in:
commit
4f8e0d9da9
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
dist-newstyle
|
||||||
5
CHANGELOG.md
Normal file
5
CHANGELOG.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Revision history for geolog-lsp
|
||||||
|
|
||||||
|
## 0.1.0.0 -- YYYY-mm-dd
|
||||||
|
|
||||||
|
* First version. Released on an unsuspecting world.
|
||||||
29
LICENSE
Normal file
29
LICENSE
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
Copyright (c) 2026, Patrick Aldis
|
||||||
|
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
* Redistributions in binary form must reproduce the above
|
||||||
|
copyright notice, this list of conditions and the following
|
||||||
|
disclaimer in the documentation and/or other materials provided
|
||||||
|
with the distribution.
|
||||||
|
|
||||||
|
* Neither the name of the copyright holder nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived
|
||||||
|
from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
8
README.md
Normal file
8
README.md
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# `geolog-lsp`
|
||||||
|
`geolog` Language Server Protocol implemenation.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
To run the lsp, build the project with `nix build`. Then depending on your editor:
|
||||||
|
|
||||||
|
### `nvim`
|
||||||
|
On nvim run `nvim-setup.lua`
|
||||||
668
flake.lock
generated
Normal file
668
flake.lock
generated
Normal file
@ -0,0 +1,668 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"HTTP": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1451647621,
|
||||||
|
"narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=",
|
||||||
|
"owner": "phadej",
|
||||||
|
"repo": "HTTP",
|
||||||
|
"rev": "9bc0996d412fef1787449d841277ef663ad9a915",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "phadej",
|
||||||
|
"repo": "HTTP",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cabal-32": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1603716527,
|
||||||
|
"narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=",
|
||||||
|
"owner": "haskell",
|
||||||
|
"repo": "cabal",
|
||||||
|
"rev": "48bf10787e27364730dd37a42b603cee8d6af7ee",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "haskell",
|
||||||
|
"ref": "3.2",
|
||||||
|
"repo": "cabal",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cabal-34": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1645834128,
|
||||||
|
"narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=",
|
||||||
|
"owner": "haskell",
|
||||||
|
"repo": "cabal",
|
||||||
|
"rev": "5ff598c67f53f7c4f48e31d722ba37172230c462",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "haskell",
|
||||||
|
"ref": "3.4",
|
||||||
|
"repo": "cabal",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cabal-36": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1669081697,
|
||||||
|
"narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=",
|
||||||
|
"owner": "haskell",
|
||||||
|
"repo": "cabal",
|
||||||
|
"rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "haskell",
|
||||||
|
"ref": "3.6",
|
||||||
|
"repo": "cabal",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cardano-shell": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1608537748,
|
||||||
|
"narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=",
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "cardano-shell",
|
||||||
|
"rev": "9392c75087cb9a3d453998f4230930dea3a95725",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "cardano-shell",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1672831974,
|
||||||
|
"narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=",
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "45f2638735f8cdc40fe302742b79f248d23eb368",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"ref": "hkm/gitlab-fix",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hackage": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771289625,
|
||||||
|
"narHash": "sha256-ySABvJf2NaxGc1mPSkwKjC8So9S906UgOYZVzX35Ng8=",
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "hackage.nix",
|
||||||
|
"rev": "808af568b7e14e1eced115e65825d2f50a608008",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "hackage.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hackage-for-stackage": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771288450,
|
||||||
|
"narHash": "sha256-2tCS6CXMHPo4Jsh4JopbYBoQXnTTp8MdZVAqPVmOIq4=",
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "hackage.nix",
|
||||||
|
"rev": "3049efd880816a3bb98b7b5fb4062045fcddd474",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"ref": "for-stackage",
|
||||||
|
"repo": "hackage.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hackage-internal": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1750307553,
|
||||||
|
"narHash": "sha256-iiafNoeLHwlSLQTyvy8nPe2t6g5AV4PPcpMeH/2/DLs=",
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "hackage.nix",
|
||||||
|
"rev": "f7867baa8817fab296528f4a4ec39d1c7c4da4f3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "hackage.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"haskellNix": {
|
||||||
|
"inputs": {
|
||||||
|
"HTTP": "HTTP",
|
||||||
|
"cabal-32": "cabal-32",
|
||||||
|
"cabal-34": "cabal-34",
|
||||||
|
"cabal-36": "cabal-36",
|
||||||
|
"cardano-shell": "cardano-shell",
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"hackage": "hackage",
|
||||||
|
"hackage-for-stackage": "hackage-for-stackage",
|
||||||
|
"hackage-internal": "hackage-internal",
|
||||||
|
"hls": "hls",
|
||||||
|
"hls-1.10": "hls-1.10",
|
||||||
|
"hls-2.0": "hls-2.0",
|
||||||
|
"hls-2.10": "hls-2.10",
|
||||||
|
"hls-2.11": "hls-2.11",
|
||||||
|
"hls-2.12": "hls-2.12",
|
||||||
|
"hls-2.2": "hls-2.2",
|
||||||
|
"hls-2.3": "hls-2.3",
|
||||||
|
"hls-2.4": "hls-2.4",
|
||||||
|
"hls-2.5": "hls-2.5",
|
||||||
|
"hls-2.6": "hls-2.6",
|
||||||
|
"hls-2.7": "hls-2.7",
|
||||||
|
"hls-2.8": "hls-2.8",
|
||||||
|
"hls-2.9": "hls-2.9",
|
||||||
|
"hpc-coveralls": "hpc-coveralls",
|
||||||
|
"iserv-proxy": "iserv-proxy",
|
||||||
|
"nixpkgs": [
|
||||||
|
"haskellNix",
|
||||||
|
"nixpkgs-unstable"
|
||||||
|
],
|
||||||
|
"nixpkgs-2305": "nixpkgs-2305",
|
||||||
|
"nixpkgs-2311": "nixpkgs-2311",
|
||||||
|
"nixpkgs-2405": "nixpkgs-2405",
|
||||||
|
"nixpkgs-2411": "nixpkgs-2411",
|
||||||
|
"nixpkgs-2505": "nixpkgs-2505",
|
||||||
|
"nixpkgs-2511": "nixpkgs-2511",
|
||||||
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
|
"old-ghc-nix": "old-ghc-nix",
|
||||||
|
"stackage": "stackage"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771289806,
|
||||||
|
"narHash": "sha256-s60Kb3cYr0t6LDQ/LmJr5vQN8Z4IY1Vfwq2keZW0VOM=",
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "haskell.nix",
|
||||||
|
"rev": "3331ba591ae02a41c638aeb6bea91d268b34cf8e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "haskell.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hls": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1741604408,
|
||||||
|
"narHash": "sha256-tuq3+Ip70yu89GswZ7DSINBpwRprnWnl6xDYnS4GOsc=",
|
||||||
|
"owner": "haskell",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"rev": "682d6894c94087da5e566771f25311c47e145359",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "haskell",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hls-1.10": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1680000865,
|
||||||
|
"narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=",
|
||||||
|
"owner": "haskell",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "haskell",
|
||||||
|
"ref": "1.10.0.0",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hls-2.0": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1687698105,
|
||||||
|
"narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=",
|
||||||
|
"owner": "haskell",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"rev": "783905f211ac63edf982dd1889c671653327e441",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "haskell",
|
||||||
|
"ref": "2.0.0.1",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hls-2.10": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1743069404,
|
||||||
|
"narHash": "sha256-q4kDFyJDDeoGqfEtrZRx4iqMVEC2MOzCToWsFY+TOzY=",
|
||||||
|
"owner": "haskell",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"rev": "2318c61db3a01e03700bd4b05665662929b7fe8b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "haskell",
|
||||||
|
"ref": "2.10.0.0",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hls-2.11": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1747306193,
|
||||||
|
"narHash": "sha256-/MmtpF8+FyQlwfKHqHK05BdsxC9LHV70d/FiMM7pzBM=",
|
||||||
|
"owner": "haskell",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"rev": "46ef4523ea4949f47f6d2752476239f1c6d806fe",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "haskell",
|
||||||
|
"ref": "2.11.0.0",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hls-2.12": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1758709460,
|
||||||
|
"narHash": "sha256-xkI8MIIVEVARskfWbGAgP5sHG/lyeKnkm0LIOJ19X5w=",
|
||||||
|
"owner": "haskell",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"rev": "7d983de4fa7ff54369f6dd31444bdb9869aec83e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "haskell",
|
||||||
|
"ref": "2.12.0.0",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hls-2.2": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1693064058,
|
||||||
|
"narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=",
|
||||||
|
"owner": "haskell",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "haskell",
|
||||||
|
"ref": "2.2.0.0",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hls-2.3": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1695910642,
|
||||||
|
"narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=",
|
||||||
|
"owner": "haskell",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "haskell",
|
||||||
|
"ref": "2.3.0.0",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hls-2.4": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1699862708,
|
||||||
|
"narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=",
|
||||||
|
"owner": "haskell",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "haskell",
|
||||||
|
"ref": "2.4.0.1",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hls-2.5": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1701080174,
|
||||||
|
"narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=",
|
||||||
|
"owner": "haskell",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"rev": "27f8c3d3892e38edaef5bea3870161815c4d014c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "haskell",
|
||||||
|
"ref": "2.5.0.0",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hls-2.6": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1705325287,
|
||||||
|
"narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=",
|
||||||
|
"owner": "haskell",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "haskell",
|
||||||
|
"ref": "2.6.0.0",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hls-2.7": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1708965829,
|
||||||
|
"narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=",
|
||||||
|
"owner": "haskell",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "haskell",
|
||||||
|
"ref": "2.7.0.0",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hls-2.8": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1715153580,
|
||||||
|
"narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=",
|
||||||
|
"owner": "haskell",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"rev": "dd1be1beb16700de59e0d6801957290bcf956a0a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "haskell",
|
||||||
|
"ref": "2.8.0.0",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hls-2.9": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1719993701,
|
||||||
|
"narHash": "sha256-wy348++MiMm/xwtI9M3vVpqj2qfGgnDcZIGXw8sF1sA=",
|
||||||
|
"owner": "haskell",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"rev": "90319a7e62ab93ab65a95f8f2bcf537e34dae76a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "haskell",
|
||||||
|
"ref": "2.9.0.1",
|
||||||
|
"repo": "haskell-language-server",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hpc-coveralls": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1607498076,
|
||||||
|
"narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=",
|
||||||
|
"owner": "sevanspowell",
|
||||||
|
"repo": "hpc-coveralls",
|
||||||
|
"rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "sevanspowell",
|
||||||
|
"repo": "hpc-coveralls",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"iserv-proxy": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1770174258,
|
||||||
|
"narHash": "sha256-x6QYupvHZM7rRpVO4AIC5gUWFprFQ59A95FPC7/Owjg=",
|
||||||
|
"owner": "stable-haskell",
|
||||||
|
"repo": "iserv-proxy",
|
||||||
|
"rev": "91ef7ffdeedfb141a4d69dcf9e550abe3e1160c6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "stable-haskell",
|
||||||
|
"ref": "iserv-syms",
|
||||||
|
"repo": "iserv-proxy",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-2305": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1705033721,
|
||||||
|
"narHash": "sha256-K5eJHmL1/kev6WuqyqqbS1cdNnSidIZ3jeqJ7GbrYnQ=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "a1982c92d8980a0114372973cbdfe0a307f1bdea",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-23.05-darwin",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-2311": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1719957072,
|
||||||
|
"narHash": "sha256-gvFhEf5nszouwLAkT9nWsDzocUTqLWHuL++dvNjMp9I=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "7144d6241f02d171d25fba3edeaf15e0f2592105",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-23.11-darwin",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-2405": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1735564410,
|
||||||
|
"narHash": "sha256-HB/FA0+1gpSs8+/boEavrGJH+Eq08/R2wWNph1sM1Dg=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "1e7a8f391f1a490460760065fa0630b5520f9cf8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-24.05-darwin",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-2411": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1751290243,
|
||||||
|
"narHash": "sha256-kNf+obkpJZWar7HZymXZbW+Rlk3HTEIMlpc6FCNz0Ds=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "5ab036a8d97cb9476fbe81b09076e6e91d15e1b6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-24.11-darwin",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-2505": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1764560356,
|
||||||
|
"narHash": "sha256-M5aFEFPppI4UhdOxwdmceJ9bDJC4T6C6CzCK1E2FZyo=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "6c8f0cca84510cc79e09ea99a299c9bc17d03cb6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-25.05-darwin",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-2511": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1764572236,
|
||||||
|
"narHash": "sha256-hLp6T/vKdrBQolpbN3EhJOKTXZYxJZPzpnoZz+fEGlE=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "b0924ea1889b366de6bb0018a9db70b2c43a15f8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-25.11-darwin",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-unstable": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1764587062,
|
||||||
|
"narHash": "sha256-hdFa0TAVQAQLDF31cEW3enWmBP+b592OvHs6WVe3D8k=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "c1cb7d097cb250f6e1904aacd5f2ba5ffd8a49ce",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"old-ghc-nix": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1631092763,
|
||||||
|
"narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=",
|
||||||
|
"owner": "angerman",
|
||||||
|
"repo": "old-ghc-nix",
|
||||||
|
"rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "angerman",
|
||||||
|
"ref": "master",
|
||||||
|
"repo": "old-ghc-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"haskellNix": "haskellNix",
|
||||||
|
"nixpkgs": [
|
||||||
|
"haskellNix",
|
||||||
|
"nixpkgs-2511"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"stackage": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771287554,
|
||||||
|
"narHash": "sha256-76Kd5c2D4O8yL48eAejlGZlpQ/Exxnsz3V7qW+RkFzE=",
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "stackage.nix",
|
||||||
|
"rev": "e62b9d6269c6abfd8b976826da0dcc37f0a57010",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "stackage.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
49
flake.nix
Normal file
49
flake.nix
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
haskellNix.url = "github:input-output-hk/haskell.nix";
|
||||||
|
nixpkgs.follows = "haskellNix/nixpkgs-2511";
|
||||||
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
};
|
||||||
|
outputs =
|
||||||
|
{
|
||||||
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
flake-utils,
|
||||||
|
haskellNix,
|
||||||
|
}:
|
||||||
|
flake-utils.lib.eachSystem [ "x86_64-linux" ] (
|
||||||
|
system:
|
||||||
|
let
|
||||||
|
overlays = [
|
||||||
|
haskellNix.overlay
|
||||||
|
(final: _prev: {
|
||||||
|
hixProject = final.haskell-nix.hix.project {
|
||||||
|
src = ./.;
|
||||||
|
evalSystem = "x86_64-linux";
|
||||||
|
name = "geolog-lsp";
|
||||||
|
compiler-nix-name = "ghc9122";
|
||||||
|
shell.tools.cabal = "latest";
|
||||||
|
shell.withHoogle = false;
|
||||||
|
shell.tools.haskell-language-server = "latest";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
inherit system overlays;
|
||||||
|
inherit (haskellNix) config;
|
||||||
|
};
|
||||||
|
haskell = pkgs.hixProject.flake { };
|
||||||
|
in
|
||||||
|
{
|
||||||
|
devShells.default = pkgs.mkShell {
|
||||||
|
inputsFrom = [
|
||||||
|
haskell.devShells.default
|
||||||
|
];
|
||||||
|
packages = with pkgs; [
|
||||||
|
ghcid
|
||||||
|
];
|
||||||
|
};
|
||||||
|
packages.default = haskell.packages."geolog-lsp:exe:geolog-lsp";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
27
geolog-lsp.cabal
Normal file
27
geolog-lsp.cabal
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
cabal-version: 3.0
|
||||||
|
name: geolog-lsp
|
||||||
|
version: 0.1.0.0
|
||||||
|
-- synopsis:
|
||||||
|
-- description:
|
||||||
|
license: BSD-3-Clause
|
||||||
|
license-file: LICENSE
|
||||||
|
author: Patrick Aldis
|
||||||
|
maintainer: patricktaldis@gmail.com
|
||||||
|
-- copyright:
|
||||||
|
build-type: Simple
|
||||||
|
extra-doc-files: CHANGELOG.md
|
||||||
|
-- extra-source-files:
|
||||||
|
|
||||||
|
common warnings
|
||||||
|
ghc-options: -Wall
|
||||||
|
|
||||||
|
executable geolog-lsp
|
||||||
|
import: warnings
|
||||||
|
main-is: Main.hs
|
||||||
|
-- other-modules:
|
||||||
|
-- other-extensions:
|
||||||
|
build-depends: base,
|
||||||
|
lsp,
|
||||||
|
text
|
||||||
|
hs-source-dirs: src
|
||||||
|
default-language: GHC2024
|
||||||
2
nvim-setup.lua
Normal file
2
nvim-setup.lua
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
vim.lsp.config('geolog', { cmd = { './result/bin/geolog-lsp' } })
|
||||||
|
vim.lsp.enable('geolog')
|
||||||
55
src/Main.hs
Normal file
55
src/Main.hs
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
|
{-# LANGUAGE LambdaCase #-}
|
||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
|
||||||
|
import Control.Monad.IO.Class
|
||||||
|
import Data.Text qualified as T
|
||||||
|
import Language.LSP.Protocol.Message
|
||||||
|
import Language.LSP.Protocol.Types
|
||||||
|
import Language.LSP.Server
|
||||||
|
|
||||||
|
handlers :: Handlers (LspM ())
|
||||||
|
handlers =
|
||||||
|
mconcat
|
||||||
|
[ notificationHandler SMethod_Initialized $ \_not -> do
|
||||||
|
let params =
|
||||||
|
ShowMessageRequestParams
|
||||||
|
MessageType_Info
|
||||||
|
"Turn on code lenses?"
|
||||||
|
(Just [MessageActionItem "Turn on", MessageActionItem "Don't"])
|
||||||
|
_ <- sendRequest SMethod_WindowShowMessageRequest params $ \case
|
||||||
|
Right (InL (MessageActionItem "Turn on")) -> do
|
||||||
|
let regOpts = CodeLensRegistrationOptions (InR Null) Nothing (Just False)
|
||||||
|
|
||||||
|
_ <- registerCapability mempty SMethod_TextDocumentCodeLens regOpts $ \_req responder -> do
|
||||||
|
let cmd = Command "Say hello" "lsp-hello-command" Nothing
|
||||||
|
rsp = [CodeLens (mkRange 0 0 0 100) (Just cmd) Nothing]
|
||||||
|
responder $ Right $ InL rsp
|
||||||
|
pure ()
|
||||||
|
Right _ ->
|
||||||
|
sendNotification SMethod_WindowShowMessage (ShowMessageParams MessageType_Info "Not turning on code lenses")
|
||||||
|
Left err ->
|
||||||
|
sendNotification SMethod_WindowShowMessage (ShowMessageParams MessageType_Error $ "Something went wrong!\n" <> T.pack (show err))
|
||||||
|
pure ()
|
||||||
|
, requestHandler SMethod_TextDocumentHover $ \req responder -> do
|
||||||
|
let TRequestMessage _ _ _ (HoverParams _doc pos _workDone) = req
|
||||||
|
Position _l _c' = pos
|
||||||
|
rsp = Hover (InL ms) (Just range)
|
||||||
|
ms = mkMarkdown "Hello world"
|
||||||
|
range = Range pos pos
|
||||||
|
responder (Right $ InL rsp)
|
||||||
|
]
|
||||||
|
|
||||||
|
main :: IO Int
|
||||||
|
main =
|
||||||
|
runServer $
|
||||||
|
ServerDefinition
|
||||||
|
{ parseConfig = const $ const $ Right ()
|
||||||
|
, onConfigChange = const $ pure ()
|
||||||
|
, defaultConfig = ()
|
||||||
|
, configSection = "demo"
|
||||||
|
, doInitialize = \env _req -> pure $ Right env
|
||||||
|
, staticHandlers = \_caps -> handlers
|
||||||
|
, interpretHandler = \env -> Iso (runLspT env) liftIO
|
||||||
|
, options = defaultOptions
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user