Skip to content

A simple language server to just insert snippets into Helix (and other text editor, IDE)

License

Notifications You must be signed in to change notification settings

quantonganh/snippets-ls

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

snippets-ls

A simple language server to just insert snippets into Helix (and other text editor, IDE)

https://quantonganh.com/2023/07/31/create-snippets-in-helix

Installation

You can download the latest binary from the release page.

Install via homebrew

brew install quantonganh/tap/snippets-ls

Install via go

$ go install github.com/quantonganh/snippets-ls@latest

Don't forget to append ~/go/bin to your $PATH.

Install via nix flake with home-manager

Include the following in the inputs of flake.nix for home-manager:

inputs = {
  # load compatible nixpkgs and home-mananger repos; they need not be 23.05
  nixpkgs = { url = "github:nixos/nixpkgs/nixos-23.05"; };
  home-manager = {
    url = "github:nix-community/home-manager/release-23.05";
    inputs.nixpkgs.follows = "nixpkgs";
  };
  # ...
  snippets-ls = {
    url = "github:quantonganh/snippets-ls";
    inputs.nixpkgs.follows = "nixpkgs";
  };
};

There are in turn many suitable ways to configure the outputs of flake.nix. One option is to use an overlay with something like

outputs = inputs:
  with inputs;
  let
    system = "x86_64-linux"; # or other system as applicable (such as "x86_64-darwin")
    pkgs = import nixpkgs {
      inherit system;
      overlays = [ pkgs_overlay ];
    };
    # ...
    pkgs_overlay = final: prev: {
      # ...
      external.snippets-ls = snippets-ls.packages.${prev.system}.snippets-ls;
    };
  in {
    homeConfigurations.YOUR-USER-NAME-HERE = home-manager.lib.homeManagerConfiguration {
      inherit pkgs;
      modules = [ ./home.nix ];
    };
  };
};

The use of this overlay allows you to call this packages with pkgs.external.snippets-ls, such the list of packages in home.nix can look something like

home.packages = with pkgs; [
  # ...
  external.snippets-ls
];

Usage

Create your own snippets follow VSCode syntax. Alternatively, you can make use of pre-existing sample for various programming languages.

Update your configuration file located at ~/.config/helix/languages.toml:

[[language]]
name = "go"
formatter = { command = "goimports"}
language-servers = ["gopls", "snippets-ls"]

[language-server.snippets-ls]
command = "snippets-ls"
args = ["-config", "/Users/quantong/.config/helix/go-snippets.json"]

Subsequently, as you start working on your file, input a snippet prefix to observe the suggestion. If it does not work, take a look at ~/.cache/helix/helix.log for additional insights.

About

A simple language server to just insert snippets into Helix (and other text editor, IDE)

Resources

License

Stars

Watchers

Forks

Packages

No packages published