Skip to content

Commit

Permalink
add lsp
Browse files Browse the repository at this point in the history
Change phan executable

specialize PHP LSP Command

fix spelling mistakes

specify binaries for php lsps

Clean UP PHP part

Remove test file

Un-hardcode php LSPs

I also separated phan and PHPactor because apparently they do kind of the same thing.

Add capabilities and on_attach thingamabob

Couldnt they be added automatically if they're needed everywhere?

typo: remove capital C

Add php to documentation

Add php lsp's phan and phpactor

doc: release-note

Add php lsp's phan and phpactor
  • Loading branch information
Vagahbond committed Oct 10, 2023
1 parent fc651e6 commit 5f6bc4e
Show file tree
Hide file tree
Showing 4 changed files with 107 additions and 0 deletions.
1 change: 1 addition & 0 deletions docs/manual/languages.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ Language specific support means there is a combination of language specific plug
* Dart: <<opt-vim.languages.dart.enable>>
* Go: <<opt-vim.languages.go.enable>>
* Lua: <<opt-vim.languages.lua.enable>>
* PHP: <<opt-vim.languages.php.enable>>

Adding support for more languages, and improving support for existing ones are great places
where you can contribute with a PR.
Expand Down
5 changes: 5 additions & 0 deletions docs/release-notes/rl-0.5.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@
[[sec-release-0.5-changelog]]
=== Changelog

https://github.com/vagahbond[vagahbond]:
* Added phan language server for PHP.

* Added phpactor language server for PHP.

https://github.com/horriblename[horriblename]:

* Added transparency support for tokyonight theme.
Expand Down
1 change: 1 addition & 0 deletions modules/languages/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ in {
./svelte.nix
./java.nix
./lua.nix
./php.nix
];

options.vim.languages = {
Expand Down
100 changes: 100 additions & 0 deletions modules/languages/php.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
{
pkgs,
config,
lib,
...
}:
with lib;
with builtins; let
cfg = config.vim.languages.php;

defaultServer = "phpactor";
servers = {
phpactor = {
package = pkgs.phpactor;
lspConfig = ''
lspconfig.phpactor.setup{
capabilities = capabilities,
on_attach = default_on_attach,
cmd = ${
if isList cfg.lsp.package
then nvim.lua.expToLua cfg.lsp.package
else ''
{
"${getExe cfg.lsp.package}",
"language-server"
},
''
}
}
'';
};

phan = {
package = pkgs.php81Packages.phan;
lspConfig = ''
lspconfig.phan.setup{
capabilities = capabilities,
on_attach = default_on_attach,
cmd = ${
if isList cfg.lsp.package
then nvim.lua.expToLua cfg.lsp.package
else ''
{
"${getExe cfg.lsp.package}
"-m",
"json",
"--no-color",
"--no-progress-bar",
"-x",
"-u",
"-S",
"--language-server-on-stdin",
"--allow-polyfill-parser"
},
''
}
}
'';
};
};
in {
options.vim.languages.php = {
enable = mkEnableOption "PHP language support";

treesitter = {
enable = mkEnableOption "Enable PHP treesitter" // {default = config.vim.languages.enableTreesitter;};
package = nvim.types.mkGrammarOption pkgs "php";
};

lsp = {
enable = mkEnableOption "PHP LSP support" // {default = config.vim.languages.enableLSP;};

server = mkOption {
description = "PHP LSP server to use";
type = with types; enum (attrNames servers);
default = defaultServer;
};

package = mkOption {
description = "PHP LSP server package, or the command to run as a list of strings";
example = ''[lib.getExe pkgs.jdt-language-server " - data " " ~/.cache/jdtls/workspace "]'';
type = with types; either package (listOf str);
default = servers.${cfg.lsp.server}.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;
sources.php-lsp = servers.${cfg.lsp.server}.lspConfig;
};
})
]);
}

0 comments on commit 5f6bc4e

Please sign in to comment.