laravel-ls

module
v0.0.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 25, 2025 License: GPL-3.0

README

Laravel-ls

Laravel Language Server written in go.
About | Features | Install | Building

About

Laravel-ls is a tool that enhances your text editor or IDE with powerful features specifically designed for Laravel projects.

By implementing the Language Server Protocol (LSP), Laravel-ls seamlessly integrates with any LSP-compatible editor, bringing advanced capabilities such as intelligent auto-completion, navigation to definitions, real-time diagnostics, and more.

Although still in its early development stages, Laravel-ls aims to provide a streamlined and efficient development experience tailored to the Laravel framework.

Features

List of done and planned features of the language server.

Views

view('home')
Route::view('/user/profile', 'user.profile')
  • Hover information shows view template path.
  • Go to definition opens the template
  • Auto-complete existing template names
  • Auto-complete for existing arguments present in the template
  • Diagnostics for template files that do not exists
  • Code action to create view file that do not exists.

Routes

route('dashboard');
redirect()->route('dashboard');
URL::route('dashboard');
  • Hover information shows route definition
  • Go to definition
  • Auto-complete existing route names
  • Auto-complete route arguments
  • Diagnostics for routes that do not exists
  • Code action to create a new route if route do not exists.

Environment

env('APP_NAME');
Env::get('APP_NAME');
  • Hover information shows actual value from .env file
  • Go to .env file and key location
  • Auto-complete for defined keys.
  • Diagnostics for non defined keys.
  • Code action to create missing key

Config

config('app.name')
config()->string('app.name')
config()->getMany(['app.name'])
Config::get('app.name')
Config::getMany(['app.name'])
  • Hover information shows actual value.
  • Auto-complete for defined config keys
  • Go to config file and value location from key
  • Diagnostics for non defined config keys.

Application bindings

app('db.connection')
app()->make('db.connection')
app()->bound('db.connection')
app()->isShared('db.connection')
app()->make('db.connection')
app()->bound('db.connection')
app()->isShared('db.connection')
  • Hover information shows value.
  • Auto-complete for defined bindings
  • Go to location where binding is defined
  • Diagnostics for non defined bindings

Assets

asset('main.css');
  • Auto-completion
  • Go to asset file
  • Diagnostics for non existent assets

Blade components

<x-component.name />
<x-component name="dynamic-component" />
  • Hover information show path to the component
  • Auto-complete existing components
  • Auto-complete arguments defined in the component
  • Diagnostics for components that do not exists.
  • Code action to create missing components

Other features on the horizon

  • Livewire support
  • Inertia support
  • Eloquent support
  • Jump to test file from class.

Install

Download via github

Official binaries for linux are provided on each github release

Just download the program and make sure its located somewhere in your $PATH

Example command to download:

sudo wget -O /usr/local/bin/laravel-ls https://github.com/laravel-ls/laravel-ls/releases/download/<VERSION>/laravel-ls-<VERSION>-linux-amd64 & \
   sudo chmod 755 /usr/local/bin/laravel-ls

Download via go

The program can be installed via go:

go install github.com/laravel-ls/laravel-ls/cmd/laravel-ls@latest

And if you have added GOPATH to your shell's PATH. You should be able to just run the server with:

laravel-ls

See the official documentation of go install

Build

To build the project you need golang version 1.22 or later, make and a c compiler.

When the dependencies are met, running make will compile and produce the binary build/laravel-ls.

Configure

Neovim

nvim-lspconfig
nvim < 0.11
require'lspconfig'.laravel_ls.setup{}

or custom config

require'lspconfig'.laravel_ls.setup{
    -- Server-specific settings. See `:help lspconfig-setup`
    settings = {
        cmd = { …  },
    },
}
nvim => 0.11
vim.lsp.enable('laravel_ls')

or custom config

vim.lsp.config('laravel_ls', {
    cmd = { …  },
})

All settings can be found here

native

The LSP server can be started like any other server via vim.lsp.start and an auto-command.

Just change the path to the correct directory on your filesystem

vim.api.nvim_create_autocmd("FileType", {
    pattern = { "php", "blade" },
    callback = function ()
        vim.lsp.start({
            name = "laravel-ls",

            -- if laravel ls is in your $PATH
            cmd = { 'laravel-ls' },
            
            -- Absolute path
            -- cmd = { '/path/to/laravel-ls/build/laravel-ls' },
            
            -- if you want to recompile everytime
            -- the language server is started.
            -- cmd = { '/path/to/laravel-ls/start.sh' },

            root_dir = vim.fn.getcwd(),
        })
    end
})

Author

Henrik Hautakoski henrik@shufflingpixels.com

Directories

Path Synopsis
cmd
env
laravel
lsp
Package runtime provides functionality for discovering and managing the PHP execution environment required to interact with a Laravel project at runtime.
Package runtime provides functionality for discovering and managing the PHP execution environment required to interact with a Laravel project at runtime.
php

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL