Compare commits

...

9 commits

Author SHA1 Message Date
aed996eb33
ci: use repo name in editorconfig check
Some checks failed
Set up binary cache / cachix (default) (push) Has been cancelled
Set up binary cache / cachix (maximal) (push) Has been cancelled
Set up binary cache / cachix (nix) (push) Has been cancelled
Treewide Checks / Validate flake (push) Has been cancelled
Treewide Checks / Check formatting (push) Has been cancelled
Treewide Checks / Check source tree for typos (push) Has been cancelled
Treewide Checks / Validate documentation builds (push) Has been cancelled
Treewide Checks / Validate hyperlinks in documentation sources (push) Has been cancelled
Treewide Checks / Validate Editorconfig conformance (push) Has been cancelled
Build and deploy documentation / Check latest commit (push) Has been cancelled
Build and deploy documentation / publish (push) Has been cancelled
2025-03-27 14:46:32 +03:00
72c019cc8f
flake: bump inputs 2025-03-27 14:41:04 +03:00
raf
474e8d23e5
Merge pull request #742 from Sc3l3t0n/feature/language-fsharp
languages/fsharp: init
2025-03-27 09:55:05 +00:00
Soliprem
5fac618202
Merge branch 'main' into feature/language-fsharp 2025-03-26 12:56:04 +01:00
Marlon Rosenberg
43843da230 add example to lsp package 2025-03-25 22:28:08 +00:00
Marlon Rosenberg
d92b3f3714 correct ordering 2025-03-25 22:16:20 +00:00
raf
2aa1879996
Update rl-0.8.md 2025-03-25 21:40:13 +00:00
Marlon Rosenberg
d6a310252f languages/fsharp: resolve comments 2025-03-25 19:42:50 +00:00
Marlon Rosenberg
9f8b7edbf6 languages/fsharp: init 2025-03-24 22:25:01 +01:00
7 changed files with 120 additions and 4 deletions

View file

@ -119,7 +119,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: | run: |
gh api \ gh api \
repos/${{ github.repository }}/pulls/${{github.event.number}}/files --paginate \ repos/notashelf/nvf/pulls/${{github.event.number}}/files --paginate \
| jq '.[] | select(.status != "removed") | .filename' \ | jq '.[] | select(.status != "removed") | .filename' \
> "$HOME/changed_files" > "$HOME/changed_files"

View file

@ -82,6 +82,7 @@ isMaximal: {
elixir.enable = false; elixir.enable = false;
haskell.enable = false; haskell.enable = false;
ruby.enable = false; ruby.enable = false;
fsharp.enable = false;
tailwind.enable = false; tailwind.enable = false;
svelte.enable = false; svelte.enable = false;

View file

@ -19,6 +19,7 @@ formatting to diagnostics. The following languages have sections under the
- Go: [vim.languages.go.enable](#opt-vim.languages.go.enable) - Go: [vim.languages.go.enable](#opt-vim.languages.go.enable)
- Lua: [vim.languages.lua.enable](#opt-vim.languages.lua.enable) - Lua: [vim.languages.lua.enable](#opt-vim.languages.lua.enable)
- PHP: [vim.languages.php.enable](#opt-vim.languages.php.enable) - PHP: [vim.languages.php.enable](#opt-vim.languages.php.enable)
- F#: [vim.languages.fsharp.enable](#opt-vim.languages.fsharp.enable)
Adding support for more languages, and improving support for existing ones are Adding support for more languages, and improving support for existing ones are
great places where you can contribute with a PR. great places where you can contribute with a PR.

View file

@ -276,3 +276,7 @@
[rice-cracker-dev](https://github.com/rice-cracker-dev): [rice-cracker-dev](https://github.com/rice-cracker-dev):
- `eslint_d` now checks for configuration files to load. - `eslint_d` now checks for configuration files to load.
[Sc3l3t0n](https://github.com/Sc3l3t0n):
- Add F# support under `vim.languages.fsharp`.

6
flake.lock generated
View file

@ -77,11 +77,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1741865919, "lastModified": 1742923925,
"narHash": "sha256-4thdbnP6dlbdq+qZWTsm4ffAwoS8Tiq1YResB+RP6WE=", "narHash": "sha256-biPjLws6FiBVUUDHEMFq5pUQL84Wf7PntPYdo3oKkFw=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "573c650e8a14b2faa0041645ab18aed7e60f0c9a", "rev": "25d1b84f5c90632a623c48d83a2faf156451e6b1",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -10,6 +10,7 @@ in {
./clang.nix ./clang.nix
./css.nix ./css.nix
./elixir.nix ./elixir.nix
./fsharp.nix
./gleam.nix ./gleam.nix
./go.nix ./go.nix
./hcl.nix ./hcl.nix

View file

@ -0,0 +1,109 @@
{
lib,
pkgs,
config,
...
}: let
inherit (builtins) attrNames;
inherit (lib.options) mkEnableOption mkOption;
inherit (lib.types) either listOf package str enum;
inherit (lib.modules) mkIf mkMerge;
inherit (lib.lists) isList;
inherit (lib.nvim.types) mkGrammarOption;
inherit (lib.nvim.lua) expToLua;
defaultServer = "fsautocomplete";
servers = {
fsautocomplete = {
package = pkgs.fsautocomplete;
internalFormatter = false;
lspConfig = ''
lspconfig.fsautocomplete.setup {
capabilities = capabilities;
on_attach = default_on_attach;
cmd = ${
if isList cfg.lsp.package
then expToLua cfg.lsp.package
else "{'${cfg.lsp.package}/bin/fsautocomplete'}"
},
}
'';
};
};
defaultFormat = "fantomas";
formats = {
fantomas = {
package = pkgs.fantomas;
nullConfig = ''
table.insert(
ls_sources,
null_ls.builtins.formatting.fantomas.with({
command = "${cfg.format.package}/bin/fantomas",
})
)
'';
};
};
cfg = config.vim.languages.fsharp;
in {
options = {
vim.languages.fsharp = {
enable = mkEnableOption "F# language support";
treesitter = {
enable = mkEnableOption "F# treesitter" // {default = config.vim.languages.enableTreesitter;};
package = mkGrammarOption pkgs "fsharp";
};
lsp = {
enable = mkEnableOption "F# LSP support" // {default = config.vim.languages.enableLSP;};
server = mkOption {
type = enum (attrNames servers);
default = defaultServer;
description = "F# LSP server to use";
};
package = mkOption {
type = either package (listOf str);
default = servers.${cfg.lsp.server}.package;
example = ''[lib.getExe pkgs.fsautocomplete "--state-directory" "~/.cache/fsautocomplete"]'';
description = "F# LSP server package, or the command to run as a list of strings";
};
};
format = {
enable = mkEnableOption "F# formatting" // {default = config.vim.languages.enableFormat;};
type = mkOption {
type = enum (attrNames formats);
default = defaultFormat;
description = "F# formatter to use";
};
package = mkOption {
type = package;
default = formats.${cfg.format.type}.package;
description = "F# formatter package";
};
};
};
};
config = mkIf cfg.enable (mkMerge [
(mkIf cfg.treesitter.enable {
vim.treesitter.enable = true;
vim.treesitter.grammars = [cfg.treesitter.package];
})
(mkIf cfg.lsp.enable {
vim.lsp.lspconfig.enable = true;
vim.lsp.lspconfig.sources.fsharp-lsp = servers.${cfg.lsp.server}.lspConfig;
})
(mkIf cfg.format.enable {
vim.lsp.null-ls.enable = true;
vim.lsp.null-ls.sources.fsharp-format = formats.${cfg.format.type}.nullConfig;
})
]);
}