Skip to content

Latest commit

 

History

History
108 lines (81 loc) · 3.41 KB

README.md

File metadata and controls

108 lines (81 loc) · 3.41 KB

Phabricator Plugin for Vim

This Vim plugin provides features for interacting with Phabricator-based repositories. It builds upon the foundational git functionality provided by Fugitive.

  • Syntax highlighting for Arcanist templates and configuration files
  • :Gbrowse support for browsing Phabricator URLs from the current buffer
  • Completion support for users and projects in Arcanist diff templates using <C-X><C-O> (requires curl and a Conduit API token)

Installation

Using lazy-vim

	{
		"lanej/vim-phabricator",
		dependencies = {
			"tpope/vim-fugitive",
		},
		enabled = function()
			return vim.fn.filereadable(vim.fn.expand("~/.arcrc")) == 1
		end,
		config = function()
			-- Read the arcrc file, parse the json into a lua table
			local arcrc = vim.fn.json_decode(vim.fn.readfile(vim.fn.expand("~/.arcrc")))
			-- The base url is the config.default value
			vim.g.phabricator_hosts = { arcrc.config.default }
			-- The Token is is in the hosts table, with a key of the base url + "/api/"
			vim.g.phabricator_api_token = arcrc.hosts[arcrc.config.default .. "/api/"].token
		end,
	},

Using vim-plug

  1. Add Plug 'lanej/vim-phabricator' to ~/.vimrc
  2. vim +PluginInstall +qall

Using Vim Packages

mkdir -p ~/.vim/pack/lanej/start
cd ~/.vim/pack/lanej/start
git clone https://github.com/lanej/vim-phabricator.git phabricator
vim -u NONE -c "helptags phabricator/doc" -c q

Configuration

g:phabricator_hosts

This plugin automatically recognizes Phabricator repositories served from hosts named phabricator (eg. phabricator.example.com).

This variable lists additional hosts that should also be considered Phabricator hosts.

g:phabricator_api_token

Phabricator's Conduit API is used to generate candidates for user and project completion. These API calls require an access token which can be generated in Phabricator's per-user Settings interface. For example:

https://phabricator.example.com/settings/user/USERNAME/page/apitokens/

The plugin will first attempt to read the per-host API token from the user's ~/.arcrc configuration file. For example:

{
  "hosts": {
    "https://secure.phabricator.com/api/": {
      "token": "api-secrettokencharacters"
    }
  }
}

If an API token can not be read from the ~/.arcrc file for the current Phabricator host, the value stored in g:phabricator_api_token will be used.

License

This code is released under the terms of the MIT license. See LICENSE for details.

Similar Projects

  • arcanist.vim provides syntax highlighting for Arcanist templates and configuration files.
  • phabrowser.vim provides a Fugitive browse handler for Phabricator.
  • rhubarb.vim provides similar features for GitHub-based repositories.
  • vscode-phabricator provides similar Phabricator features for Visual Studio Code.