Follow-up: Require Different Reviewers
This plugin previously only supported the Delta reviewer. Thanks to work from @mrparalon it now supports Diffview also. This MR adjusts the requirements to account for this, and the README. It also addresses a small bug in the original implementation regarding an async file opening action, and applies formatting to the diffview file consistent with the rest of the project
This commit is contained in:
10
README.md
10
README.md
@@ -17,11 +17,11 @@ https://github.com/harrisoncramer/gitlab.nvim/assets/32515581/ab5a8597-32fa-4a28
|
||||
|
||||
- <a href="https://go.dev/">Go >= v1.19</a>
|
||||
- <a href="https://www.gnu.org/software/make/manual/make.html">make (for install)</a>
|
||||
- <a href="https://github.com/dandavison/delta">delta</a>
|
||||
|
||||
## Quick Start
|
||||
|
||||
1. Install Go and Delta Dependencies
|
||||
1. Install Go
|
||||
2. Install reviewer: <a href="https://github.com/dandavison/delta">delta</a> or <a href="https://github.com/sindrets/diffview.nvim">diffview</a>
|
||||
2. Add configuration (see Installation section)
|
||||
3. Checkout your feature branch: `git checkout feature-branch`
|
||||
4. Open Neovim
|
||||
@@ -42,7 +42,7 @@ return {
|
||||
},
|
||||
build = function () require("gitlab.server").build(true) end, -- Builds the Go binary
|
||||
config = function()
|
||||
require("gitlab").setup()
|
||||
require("gitlab").setup() -- Uses delta reviewer by default
|
||||
end,
|
||||
}
|
||||
```
|
||||
@@ -87,7 +87,7 @@ Here is the default setup function. All of these values are optional, and if you
|
||||
require("gitlab").setup({
|
||||
port = 21036, -- The port of the Go server, which runs in the background
|
||||
log_path = vim.fn.stdpath("cache") .. "/gitlab.nvim.log", -- Log path for the Go server
|
||||
reviewer = "delta", -- The reviewer type (only delta is currently supported)
|
||||
reviewer = "delta", -- The reviewer type ("delta" or "diffview")
|
||||
popup = { -- The popup for comment creation, editing, and replying
|
||||
exit = "<Esc>",
|
||||
perform_action = "<leader>s", -- Once in normal mode, does action (like saving comment or editing description, etc)
|
||||
@@ -108,7 +108,7 @@ require("gitlab").setup({
|
||||
resolved = '✓', -- Symbol to show next to resolved discussions
|
||||
unresolved = '✖', -- Symbol to show next to unresolved discussions
|
||||
},
|
||||
review_pane = { -- Specific settings for different reviewers, only delta currently supported
|
||||
review_pane = { -- Specific settings for different reviewers
|
||||
delta = {
|
||||
added_file = "", -- The symbol to show next to added files
|
||||
modified_file = "", -- The symbol to show next to modified files
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
local server = require("gitlab.server")
|
||||
local job = require("gitlab.job")
|
||||
local state = require("gitlab.state")
|
||||
local u = require("gitlab.utils")
|
||||
|
||||
local M = {}
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ return {
|
||||
state.setPluginConfiguration() -- Sets configuration from `.gitlab.nvim` file
|
||||
state.merge_settings(args) -- Sets keymaps and other settings from setup function
|
||||
reviewer.init() -- Picks and initializes reviewer (default is Delta)
|
||||
u.has_reviewer(args.reviewer or "delta")
|
||||
end,
|
||||
-- Global Actions 🌎
|
||||
summary = async.sequence({ info }, summary.summary),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
-- This Module contains all of the code specific to the Delta reviewer.
|
||||
-- This Module contains all of the code specific to the Diffview reviewer.
|
||||
local state = require("gitlab.state")
|
||||
local u = require("gitlab.utils")
|
||||
local async_ok, async = pcall(require, "diffview.async")
|
||||
|
||||
local M = {
|
||||
bufnr = nil,
|
||||
@@ -32,7 +32,11 @@ M.jump = function(file_name, new_line, old_line)
|
||||
local layout = view.cur_layout
|
||||
for _, file in ipairs(files) do
|
||||
if file.path == file_name then
|
||||
view:set_file(file)
|
||||
if not async_ok then
|
||||
vim.notify("Could not load Diffview async", vim.log.levels.ERROR)
|
||||
return
|
||||
end
|
||||
async.await(view:set_file(file))
|
||||
if new_line ~= nil then
|
||||
layout.b:focus()
|
||||
vim.api.nvim_win_set_cursor(0, { tonumber(new_line), 0 })
|
||||
@@ -53,6 +57,10 @@ M.get_location = function()
|
||||
if tabnr ~= M.tabnr then return nil, nil, "Line location can only be determined within reviewer window" end
|
||||
-- check if we are in the diffview buffer
|
||||
local view = require("diffview.lib").get_current_view()
|
||||
if view == nil then
|
||||
vim.notify("Could not find Diffview view", vim.log.levels.ERROR)
|
||||
return
|
||||
end
|
||||
local layout = view.cur_layout
|
||||
local file_name = nil
|
||||
local current_line_changes = nil
|
||||
|
||||
@@ -43,11 +43,6 @@ end
|
||||
|
||||
-- Builds the Go binary
|
||||
M.build = function(override)
|
||||
if not u.has_delta() then
|
||||
vim.notify("Please install delta to use gitlab.nvim!", vim.log.levels.ERROR)
|
||||
return
|
||||
end
|
||||
|
||||
local file_path = u.current_file_path()
|
||||
local parent_dir = vim.fn.fnamemodify(file_path, ":h:h:h:h")
|
||||
state.settings.bin_path = parent_dir
|
||||
|
||||
@@ -4,8 +4,19 @@ M.get_current_line_number = function()
|
||||
return vim.api.nvim_call_function('line', { '.' })
|
||||
end
|
||||
|
||||
M.has_delta = function()
|
||||
return vim.fn.executable("delta") == 1
|
||||
M.has_reviewer = function(reviewer)
|
||||
local has_reviewer = false
|
||||
if reviewer == "diffview" then
|
||||
has_reviewer = vim.fn.exists(":DiffviewOpen") ~= 0
|
||||
else
|
||||
has_reviewer = vim.fn.executable("delta") == 1
|
||||
end
|
||||
|
||||
if not has_reviewer then
|
||||
error(string.format("Please install %s or change your reviewer", reviewer))
|
||||
end
|
||||
|
||||
return has_reviewer
|
||||
end
|
||||
|
||||
M.P = function(...)
|
||||
|
||||
Reference in New Issue
Block a user