gbprod/phpactor.nvim

github github
programming-languages-supportphp
stars 59
issues 1
subscribers 3
forks 5
CREATED

2022-06-23

UPDATED

17 days ago


🐘 phpactor.nvim

Lua version of phpactor nvim plugin.

✨ Features

It allows to use phpactor commands using new neovim lua api. It uses vim.ui and vim.notify to provide modern UI using plugins like nvim-notify, notifier.nvim, dressing.nvim or telescope.nvim.

I've only implemented commands that are not available using LSP Code Actions.

It also automaticly install, update and configure phpactor using nvim-lspconfig.

This provides PhpActor command to call phpactor rpc methods:

PhpActor [
  class_inflect
  context_menu
  expand_class
  generate_accessor
  change_visibility
  copy_class
  import_class
  import_missing_classes
  move_class
  navigate
  new_class
  transform
  update
  config
  status
  cache_clear
  copy_fcqn
  lsp/status
  lsp/reindex
  lsp/debug/config
  lsp/debug/config
  blackfire/start
  blackfire/stop
]

You can also use the lua function require('phpactor').rpc(name, options). Eg: :lua require('phpactor').rpc('context_menu', {})

⚡️ Requirements

  • Neovim >= 0.7.0

📦 Installation

Install the plugin with your preferred package manager:

packer

-- Lua
use({
  "gbprod/phpactor.nvim",
  run = require("phpactor.handler.update"), -- To install/update phpactor when installing this plugin
  requires = {
    "nvim-lua/plenary.nvim", -- required to update phpactor
    "neovim/nvim-lspconfig" -- required to automaticly register lsp serveur
  },
  config = function()
    require("phpactor").setup({
      -- your configuration comes here
      -- or leave it empty to use the default settings
      -- refer to the configuration section below
    })
  end
})

⚙️ Configuration

phpactor.nvim comes with the following defaults:

{
  install = {
    path = vim.fn.stdpath("data") .. "/opt/",
    branch = "master",
    bin = vim.fn.stdpath("data") .. "/opt/phpactor/bin/phpactor",
    php_bin = "php",
    composer_bin = "composer",
    git_bin = "git",
    check_on_startup = "none",
  },
  lspconfig = {
    enabled = true,
    options = {},
  },
}

install.path

Default : vim.fn.stdpath("data") .. "/opt/"

Path where phpactor will be installed by the plugin. This could be an existing install of phpactor.

install.branch

Default : master

Branch that will be used for phpactor.

install.bin

Default: vim.fn.stdpath("data") .. "/opt/phpactor/bin/phpactor"

Phpactor binary.

install.php_bin

Default: php

Php binary.

install.composer_bin

Default: composer

Composer binary.

install.git_bin

Default: git

Git binary.

install.check_on_startup

Default: none
Accepted values: none|daily|always

This will check if phpactor install is up-to-date on nvim startup. This could be slow, use wisely.

lspconfig.enabled

Default: true

Does phpactor.nvim should configure lsp server using nvim-lspconfig.

lspconfig.options

Default: {}

This is here where you can define options to pass to nvim-lspconfig. Basicly, you should pass a on_attach function to set your mappings ;)

🤝 Integration

This plugin works out-of-the-box with nvim-neo-tree/neo-tree.nvim. If you execute a PhpActor navigate command on a file/folder in neo-tree, it will use this file as source.

Eg. If you run PhpActor new_class in a neo-tree buffer, this will create a new class inside the folder you are in.

🎉 Credits