Skip to content

Commit

Permalink
Merge branch 'master' into ldelossa/support-pulls-branch-config-format
Browse files Browse the repository at this point in the history
  • Loading branch information
wd60622 authored Jan 29, 2025
2 parents a56cdef + d66d886 commit 802814e
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 10 deletions.
12 changes: 12 additions & 0 deletions lua/octo/commands.lua
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,15 @@ local config = require "octo.config"
local colors = require "octo.ui.colors"
local vim = vim

-- a global variable where command handlers can access the details of the last
-- command ran.
--
-- this came into existence since some commands like "comment add" need to
-- understand the line range the comment should be created on.
-- this is problematic without the command options as you exit visual mode when
-- enterting the command line.
OctoLastCmdOpts = nil

local M = {}

local get_current_buffer = function()
Expand All @@ -32,7 +41,9 @@ end

function M.setup()
vim.api.nvim_create_user_command("Octo", function(opts)
OctoLastCmdOpts = opts
require("octo.commands").octo(unpack(opts.fargs))
OctoLastCmdOpts = nil
end, { complete = require("octo.completion").octo_command_complete, nargs = "*", range = true })
local conf = config.values

Expand Down Expand Up @@ -536,6 +547,7 @@ function M.octo(object, action, ...)
utils.error(action and "Incorrect action: " .. action or "No action specified")
return
end

res = pcall(a, ...)
if not res then
utils.error(action and "Failed action: " .. action)
Expand Down
16 changes: 14 additions & 2 deletions lua/octo/model/pull-request.lua
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,16 @@ end

M.PullRequest = PullRequest

local function merge_pages(data)
local out = {}
for _, page in ipairs(data) do
for _, item in ipairs(page) do
table.insert(out, item)
end
end
return out
end

--- Fetch the diff of the PR
--- @param pr PullRequest
function PullRequest:get_diff(pr)
Expand All @@ -85,13 +95,14 @@ end
function PullRequest:get_changed_files(callback)
local url = string.format("repos/%s/pulls/%d/files", self.repo, self.number)
gh.run {
args = { "api", "--paginate", url, "--jq", "." },
args = { "api", "--paginate", url, "--slurp" },
cb = function(output, stderr)
if stderr and not utils.is_blank(stderr) then
utils.error(stderr)
elseif output then
local FileEntry = require("octo.reviews.file-entry").FileEntry
local results = vim.fn.json_decode(output)
results = merge_pages(results)
local files = {}
for _, result in ipairs(results) do
local entry = FileEntry:new {
Expand All @@ -118,13 +129,14 @@ end
function PullRequest:get_commit_changed_files(rev, callback)
local url = string.format("repos/%s/commits/%s", self.repo, rev.commit)
gh.run {
args = { "api", "--paginate", url, "--jq", "." },
args = { "api", "--paginate", url, "--slurp" },
cb = function(output, stderr)
if stderr and not utils.is_blank(stderr) then
utils.error(stderr)
elseif output then
local FileEntry = require("octo.reviews.file-entry").FileEntry
local results = vim.fn.json_decode(output)
results = merge_pages(results)
local files = {}
if results.files then
for _, result in ipairs(results.files) do
Expand Down
16 changes: 11 additions & 5 deletions lua/octo/reviews/file-entry.lua
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@ M._null_buffer = {}
---@field right_binary boolean|nil
---@field left_bufid integer
---@field right_bufid integer
--- If this table is empty, the buffer is not ready to be displayed
--- If the file is actually empty for the revision, table will be filled with a single empty line
---@field left_lines string[]
--- If this table is empty, the buffer is not ready to be displayed
--- If the file is actually empty for the revision, table will be filled with a single empty line
---@field right_lines string[]
--- If either left_fetched or right_fetched is false,
--- the buffer is not ready to be displayed.
---@field left_fetched boolean
---@field right_fetched boolean
---@field left_winid number
---@field right_winid number
---@field left_comment_ranges table
Expand Down Expand Up @@ -78,6 +78,8 @@ function FileEntry:new(opt)
right_binary = opt.right_binary,
left_lines = {},
right_lines = {},
left_fetched = false,
right_fetched = false,
diffhunks = diffhunks,
associated_bufs = {},
viewed_state = pr.files[opt.path],
Expand Down Expand Up @@ -205,21 +207,25 @@ function FileEntry:fetch()
if self.pull_request.local_right then
utils.get_file_at_commit(right_path, right_sha, function(lines)
self.right_lines = lines
self.right_fetched = true
end)
else
utils.get_file_contents(self.pull_request.repo, right_abbrev, right_path, function(lines)
self.right_lines = lines
self.right_fetched = true
end)
end

-- fetch left version
if self.pull_request.local_left then
utils.get_file_at_commit(left_path, left_sha, function(lines)
self.left_lines = lines
self.left_fetched = true
end)
else
utils.get_file_contents(self.pull_request.repo, left_abbrev, left_path, function(lines)
self.left_lines = lines
self.left_fetched = true
end)
end

Expand All @@ -232,7 +238,7 @@ end
---Determines whether the file content has been loaded and the file is ready to render
---@return boolean
function FileEntry:is_ready_to_render()
return #self.left_lines > 0 and #self.right_lines > 0
return self.left_fetched and self.right_fetched
end

---Load the buffers.
Expand Down
9 changes: 8 additions & 1 deletion lua/octo/reviews/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -329,8 +329,15 @@ function Review:add_comment(isSuggestion)
return
end

-- get visual selected line range
-- get visual selected line range, used if coming from a keymap where current
-- mode can be evaluated.
local line1, line2 = utils.get_lines_from_context "visual"
-- if we came from the command line the command options will provide line
-- range
if OctoLastCmdOpts ~= nil then
line1 = OctoLastCmdOpts.line1
line2 = OctoLastCmdOpts.line2
end

local comment_ranges, current_bufnr
if split == "RIGHT" then
Expand Down
4 changes: 2 additions & 2 deletions lua/octo/utils.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1651,8 +1651,8 @@ function M.get_lines_from_context(calling_context)
line_number_start = vim.fn.line "."
line_number_end = line_number_start
elseif calling_context == "visual" then
line_number_start = vim.fn.line "'<"
line_number_end = vim.fn.line "'>"
line_number_start = vim.fn.line "v"
line_number_end = vim.fn.line "."
elseif calling_context == "motion" then
line_number_start = vim.fn.getpos("'[")[2]
line_number_end = vim.fn.getpos("']")[2]
Expand Down

0 comments on commit 802814e

Please sign in to comment.