close
The Wayback Machine - https://web.archive.org/web/20201111173241/https://github.com/TysonAndre/lsp-phan
Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 

README.md

lsp-phan (wip)

THIS IS EXPERIMENTAL, the configuration will change

PHP (Phan) support for lsp-mode using phan/phan.

This is forked from emacs-lsp/lsp-php. (The way to determine the root Phan namespace is different)

Features

  1. Enhanced error detection from Phan
  2. "Go To Definition" support.

Installation

Emacs

Clone this repository, emacs-lsp/lsp-mode, and emacs-lsp/lsp-ui to suitable paths. Then add the following settings to your Emacs configuration. (TODO: If you also wish to install lsp-php for other features such as autocomplete, are multiple language servers for the same language supported?)

(add-to-list 'load-path "/path/to/lsp-phan/")
;*******************************************************************************
; NOTE: This is incompatible with lsp-php
; lsp-mode does not support multiple clients per major mode, yet
; See https://github.com/emacs-lsp/lsp-mode/issues/105
;*******************************************************************************

; TODO: Make this more convenient. The below command should be fine
; "php" may need be replaced with a php 7.0 installation, preferably with php-ast installed.
; TODO: Document the individual settings that were added to lsp-phan with M-x customize
(defvar lsp-phan-language-server-command
  (list
	"php"
	"/path/to/phan_stable/phan"
	"--language-server-allow-missing-pcntl"
	"--allow-polyfill-parser"
	"--use-fallback-parser"
	"--memory-limit" "1G"
	"--language-server-enable-go-to-definition"
	"--project-root-directory" "/path/to/analyzed_project"
	"--language-server-on-stdin"))

; For php-language-server
(require 'flycheck)

; Can't be used at the same time as (require 'lsp-php), see above
(require 'lsp-phan)

(require 'php-mode)
(require 'lsp-mode)

(require 'lsp-ui)
(add-hook 'lsp-mode-hook 'lsp-ui-mode)
(add-hook 'php-mode-hook 'flycheck-mode)
(add-hook 'php-mode-hook 'lsp-mode)

(add-hook 'php-mode-hook #'lsp-phan-enable)

phan installation

You will need to install phan/phan.

You will also need to set up the project with a .phan/config.php if you have not done so already.

Global installation

Before installing php-language-server, make sure your ~/.config/composer/composer.json includes the lines below. The settings apply to all globally installed Composer packages, so proceed with caution. If you do not want to edit your global Composer configuration, see the section for local installation below.

{
    "minimum-stability": "dev",
    "prefer-stable": true
}

After editing your composer.json, you can install phan/phan.

composer global require phan/phan

Keyboard shortcuts

Configuration

TODO: Make the configuration easier to work with and understand. See the VS Code extension's configuration settings.

License

This package is licensed under the GPLv3 license. For more information, see LICENSE.

About

WIP to run Phan in LSP for emacs.

Topics

Resources

License

Releases

No releases published

Packages

No packages published
You can’t perform that action at this time.