Skip to content

Commit

Permalink
Merge branch 'main' into highlights
Browse files Browse the repository at this point in the history
  • Loading branch information
aaronik committed Dec 16, 2024
2 parents c4a2312 + dbd4f6b commit 85b1db1
Show file tree
Hide file tree
Showing 10 changed files with 74 additions and 54 deletions.
39 changes: 39 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Run Tests

on:
push:
branches: [ "*" ]
pull_request:
branches: [ main ]

jobs:
test:

runs-on: ubuntu-latest

steps:
- name: Checkout Code
uses: actions/checkout@v3

- name: Install Make Dependencies
run: |
sudo apt-get update
sudo apt-get install libtool-bin autoconf automake cmake g++ pkg-config unzip gettext curl -y
- name: Install Neovim
run: |
sudo snap install nvim --classic
- name: Install Plenary
run: |
git clone https://github.com/nvim-lua/plenary.nvim.git
mkdir -p .local/share/nvim/lazy/
mv plenary.nvim .local/share/nvim/lazy/
- name: Run Tests
env:
XDG_CONFIG_HOME: ${{ github.workspace }}/.config
XDG_DATA_HOME: ${{ github.workspace }}/.local/share
XDG_STATE_HOME: ${{ github.workspace }}/.local/state
XDG_CACHE_HOME: ${{ github.workspace }}/.cache
run: make test
6 changes: 2 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ TESTS_DIR=tests

.PHONY: test

# TODO I want test to contain a lua-language-server pass

test_nvim:
@nvim \
--headless \
Expand All @@ -13,7 +11,7 @@ test_nvim:
-c "PlenaryBustedDirectory ${TESTS_DIR} { minimal_init = '${TESTS_INIT}' }"

test:
-$(MAKE) test_nvim || exit 1
$(MAKE) test_nvim

test-watch:
nodemon -e lua -x "$(MAKE) test"
nodemon -e lua -x "$(MAKE) test || exit 1"
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Moving slowly, showing each command
{
"aaronik/treewalker.nvim",
opts = {
highlight = true -- default is false
highlight = true -- briefly highlight the node after jumping to it
}
}
```
Expand Down
5 changes: 4 additions & 1 deletion lua/treewalker/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ local Treewalker = {}

---@alias Opts { highlight: boolean }

-- Default setup() options
---@type Opts
Treewalker.opts = {}
Treewalker.opts = {
highlight = true
}

---@param opts Opts | nil
function Treewalker.setup(opts)
Expand Down
40 changes: 23 additions & 17 deletions lua/treewalker/nodes.lua
Original file line number Diff line number Diff line change
@@ -1,20 +1,10 @@
local util = require "treewalker.util"
local lines= require "treewalker.lines"

local NON_TARGET_NODE_MATCHERS = {
-- "chunk", -- lua
local TARGET_TYPE_BLACKLIST = {
"^.*comment.*$",
}

local TARGET_DESCENDANT_TYPES = {
"body_statement", -- lua, rb
"block", -- lua
"statement_block", -- lua

-- "then", -- helps rb, hurts lua
"do_block", -- rb
}

local HIGHLIGHT_BLACKLIST_TYPES = {
"body_statement", -- lua, rb
"block", -- lua
Expand All @@ -27,19 +17,14 @@ local M = {}
---@param node TSNode
---@return boolean
function M.is_jump_target(node)
for _, matcher in ipairs(NON_TARGET_NODE_MATCHERS) do
-- If it's a banned type
for _, matcher in ipairs(TARGET_TYPE_BLACKLIST) do
if node:type():match(matcher) then
return false
end
end
return true
end

function M.is_descendant_jump_target(node)
return util.contains(TARGET_DESCENDANT_TYPES, node:type())
end

function M.is_highlight_target(node)
return util.contains(HIGHLIGHT_BLACKLIST_TYPES, node:type())
end
Expand Down Expand Up @@ -113,6 +98,27 @@ function M.get_descendants(node)
return descendants
end

---@param node TSNode
---@return TSNode
function M.get_farthest_ancestor_with_same_srow(node)
local node_row = node:range()
local farthest_ancestor = node
local iter_row = node:range()
local iter = node:parent()


while iter do
iter_row = iter:range()
if iter_row ~= node_row then
break
end
farthest_ancestor = iter
iter = iter:parent()
end

return farthest_ancestor
end

--- Take a list of nodes and unique them based on line start
---@param nodes TSNode[]
---@return TSNode[]
Expand Down
6 changes: 0 additions & 6 deletions lua/treewalker/util.lua
Original file line number Diff line number Diff line change
Expand Up @@ -98,12 +98,6 @@ M.guid = function()
end)
end

---@param env_key string
---@return boolean
M.has_env_var = function(env_key)
return type(os.getenv(env_key)) ~= type(nil)
end

---reverse an array table
---@param t table
M.reverse = function (t)
Expand Down
3 changes: 1 addition & 2 deletions plugin/init.lua
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
local util = require "treewalker.util"

local function tw()
-- local util = require "treewalker.util"
-- return util.R('treewalker')
return require('treewalker')
end
Expand Down
7 changes: 0 additions & 7 deletions tests/minimal_init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,6 @@ local lazypath = vim.fn.stdpath("data") .. "/lazy"
vim.notify = print
vim.opt.rtp:append(".")
vim.opt.rtp:append(lazypath .. "/plenary.nvim")
vim.opt.rtp:append(lazypath .. "/nui.nvim")
vim.opt.rtp:append(lazypath .. "/telescope.nvim")
-- vim.opt.rtp:append(lazypath .. "/nvim-nio")

-- -- Get all our normal plugins into the test env
-- local suite = os.getenv("SUITE")
-- vim.opt.rtp:append(suite .. "nvim")

vim.opt.swapfile = false

Expand Down
7 changes: 4 additions & 3 deletions tests/treewalker/acceptance_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -80,15 +80,15 @@ describe("Treewalker", function()

it("respects highlight config option", function()
local highlight_stub = stub(ops, "highlight")

treewalker.setup()
treewalker.setup() -- highlight defaults to true, doesn't blow up with empty setup
vim.fn.cursor(23, 5)
treewalker.move_out()
treewalker.move_down()
treewalker.move_up()
treewalker.move_in()
assert.equal(0, #highlight_stub.calls)
assert.equal(4, #highlight_stub.calls)

highlight_stub = stub(ops, "highlight")
treewalker.setup({ highlight = false })
vim.fn.cursor(23, 5)
treewalker.move_out()
Expand All @@ -97,6 +97,7 @@ describe("Treewalker", function()
treewalker.move_in()
assert.equal(0, #highlight_stub.calls)

highlight_stub = stub(ops, "highlight")
treewalker.setup({ highlight = true })
vim.fn.cursor(23, 5)
treewalker.move_out()
Expand Down
13 changes: 0 additions & 13 deletions tests/treewalker/util_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -91,19 +91,6 @@ describe("util", function()
end)
end)

describe("ensure_env_var", function()
it("returns true", function()
-- always set
local res = util.has_env_var("SHELL")
assert.is_true(res)
end)

it("returns false", function()
local res = util.has_env_var("IM_SUPER_SURE_THIS_ENV_VAR_WONT_BE_SET_FR_FR")
assert.is_false(res)
end)
end)

describe("reverse", function()
it("reverses an array table", function()
local t = { 1, 2, 3, 4, 5 }
Expand Down

0 comments on commit 85b1db1

Please sign in to comment.