Skip to content

Ekopalypse/NppLspClient

Repository files navigation

NppLSPClient

A LSP client plugin for Notepad++.

Npp 8.6.3/8.6.4 have introduced changes that disable notifications that this plugin relies on, and is therefore not compatible with these versions. Sorry for the inconvenience.

NOTE: The latest builds assume that the Folder as Workspace (faw) dialog is used.
This means that the rootUri component of the initialize request sent from the client to the server
is set to the directory of the root item that contains the current buffer. If no faw dialog is used or the file is not part of one of the root elements, the directory of the file is used.

Installation

  • Download and unpack the NppLspClient zip-archive (the NppLspClient_x86 or 64.zip) from https://github.com/Ekopalypse/NppLspClient/releases to the folder "Notepad++\plugins".
  • Install a language server of your choice
  • Configure it by calling "Open configuration" from the NppLspClient plugin menu. (You will find a more detailed description in the configuration file.)

Usage example

  • Start Notepad++
  • Open a source file
  • Run "Start server for current language"

See tips for more information about usage and language server setup.

Building manually

This plugin is written in the programming language V and must therefore be available to build this plugin.
Furthermore, a current version of the gcc compiler, >= version 10 recommended, must be installed.
An example for the use with NppExec:

cd $(CURRENT_DIRECTORY)

set PROJECT=NppLspClient
set VEXE=d:\programdata\compiler\v\v.exe

set ARCH=x64
set CC=gcc

// build resources
set local RC = $(CURRENT_DIRECTORY)\$(NAME_PART).rc
cmd /c if not exist $(RC) exit -1
if $(EXITCODE) == -1 then
  set local RES_OBJ=
else
  set local RES_OBJ=-cflags $(CURRENT_DIRECTORY)\$(NAME_PART).res
endif

set NPPPATH=D:\Tests\npp\812\$(ARCH)
set PLUGIN_DIR=$(NPPPATH)\plugins\$(PROJECT)

cmd /c if not exist $(PLUGIN_DIR) exit -1

if $(EXITCODE) == -1 then
  cmd /c mkdir $(PLUGIN_DIR)
endif

set PLUGIN_PATH=$(PLUGIN_DIR)\$(PROJECT).dll

set COMPILER_FLAGS= -g -d static_boehm -gc boehm -keepc -enable-globals -shared -d no_backtrace

if $(ARCH)==x64 then
  if $(CC)==gcc then
    windres "$(RC)" -O coff -o "$(CURRENT_DIRECTORY)\$(NAME_PART).res"
    echo $(VEXE) -cc $(CC) $(COMPILER_FLAGS) -cflags -static-libgcc -cflags -I$(CURRENT_DIRECTORY) $(RES_OBJ) -o $(PLUGIN_PATH) .
    $(VEXE) -cc $(CC) $(COMPILER_FLAGS) -cflags -static-libgcc -cflags -I$(CURRENT_DIRECTORY) $(RES_OBJ) -o $(PLUGIN_PATH) .
  endif  
else
  if $(CC)==gcc then
    ENV_SET PATH=D:\ProgramData\Compiler\mingw32\bin
    windres "$(RC)" -O coff -o "$(CURRENT_DIRECTORY)\$(NAME_PART).res"
    $(VEXE) -cc $(CC) -m32 -g $(COMPILER_FLAGS) -cflags -static-libgcc -cflags -I$(CURRENT_DIRECTORY) $(RES_OBJ) -o $(PLUGIN_PATH) .
    ENV_UNSET PATH
  endif
endif

Release History

  • 0.0.13
    • Work in progress

Meta

Distributed under the MIT license. See LICENSE for more information.