diff --git a/README.md b/README.md index c8919c1..2df8045 100644 --- a/README.md +++ b/README.md @@ -104,23 +104,14 @@ If you want to use a key that's already used for completion purposes, take a loo local cmp = require('cmp') local neogen = require('neogen') -local t = function(str) - return vim.api.nvim_replace_termcodes(str, true, true, true) -end - -local check_back_space = function() - local col = vim.fn.col '.' - 1 - return col == 0 or vim.fn.getline('.'):sub(col, col):match '%s' ~= nil -end - cmp.setup { ... -- You must set mapping if you want. mapping = { [""] = cmp.mapping(function(fallback) - if neogen.jumpable() then - vim.fn.feedkeys(t("lua require('neogen').jump_next()"), "") + if require('neogen').jumpable() then + require('neogen').jump_next() else fallback() end @@ -129,8 +120,8 @@ cmp.setup { "s", }), [""] = cmp.mapping(function(fallback) - if neogen.jumpable(-1) then - vim.fn.feedkeys(t("lua require('neogen').jump_prev()"), "") + if require('neogen').jumpable(true) then + require('neogen').jump_prev() else fallback() end diff --git a/lua/neogen/mark.lua b/lua/neogen/mark.lua index 45d9a07..3a5f7d2 100644 --- a/lua/neogen/mark.lua +++ b/lua/neogen/mark.lua @@ -34,11 +34,14 @@ mark.mark_len = function(self) end mark.jumpable = function(self, reverse) + if not self.started then + return false + end local ret = true if reverse then - ret = self.index ~= 1 + ret = self.index > 0 else - ret = #self.ids ~= self.index + ret = #self.ids >= self.index end if ret then ret = self.bufnr == api.nvim_get_current_buf() and self.winid == api.nvim_get_current_win() @@ -47,10 +50,14 @@ mark.jumpable = function(self, reverse) end mark.jump = function(self, reverse) - if self.index == 0 or mark:jumpable(reverse) then + if mark:jumpable(reverse) then self.index = reverse and self.index - 1 or self.index + 1 - local line, row = unpack(self:get_mark(self.index)) - api.nvim_win_set_cursor(self.winid, {line + 1, row}) + if self.index > 0 and self.index <= #self.ids then + local line, row = unpack(self:get_mark(self.index)) + api.nvim_win_set_cursor(self.winid, {line + 1, row}) + else + self:stop(true) + end else self:stop(true) end