From dda5b44b94f715395798f92f9e17e84bd0666f4a Mon Sep 17 00:00:00 2001 From: Senghan Bright Date: Wed, 6 Jan 2021 14:57:14 +0100 Subject: [PATCH] Spell suggestions (#399) * feat: spell suggest picker * set correct window title * add entry to readme --- README.md | 1 + lua/telescope/builtin/init.lua | 1 + lua/telescope/builtin/internal.lua | 23 +++++++++++++++++++++++ 3 files changed, 25 insertions(+) diff --git a/README.md b/README.md index a605c68..ac74f5b 100644 --- a/README.md +++ b/README.md @@ -398,6 +398,7 @@ Built-in functions. Ready to be bound to any key you like. :smile: | `builtin.vim_options` | Lists vim options and on enter edit the options value. | | `builtin.registers` | Lists vim registers and edit or paste selection. | | `builtin.autocommands` | Lists vim autocommands and go to their declaration. | +| `builtin.spell_suggest` | Lists spelling suggestions for . | `builtin.keymaps` | Lists normal-mode mappings. | | `builtin.filetypes` | Lists all filetypes. | | `builtin.highlights` | Lists all highlights. | diff --git a/lua/telescope/builtin/init.lua b/lua/telescope/builtin/init.lua index 14e99a6..85739e9 100644 --- a/lua/telescope/builtin/init.lua +++ b/lua/telescope/builtin/init.lua @@ -54,6 +54,7 @@ builtin.keymaps = require('telescope.builtin.internal').keymaps builtin.filetypes = require('telescope.builtin.internal').filetypes builtin.highlights = require('telescope.builtin.internal').highlights builtin.autocommands = require('telescope.builtin.internal').autocommands +builtin.spell_suggest = require('telescope.builtin.internal').spell_suggest builtin.lsp_references = require('telescope.builtin.lsp').references builtin.lsp_document_symbols = require('telescope.builtin.lsp').document_symbols diff --git a/lua/telescope/builtin/internal.lua b/lua/telescope/builtin/internal.lua index 48165f9..4a3ed18 100644 --- a/lua/telescope/builtin/internal.lua +++ b/lua/telescope/builtin/internal.lua @@ -771,6 +771,29 @@ internal.autocommands = function(opts) }):find() end +internal.spell_suggest = function(opts) + if not vim.wo.spell then return false end + + local cursor_word = vim.fn.expand("") + local suggestions = vim.fn.spellsuggest(cursor_word) + + pickers.new(opts, { + prompt_title = 'Spelling Suggestions', + finder = finders.new_table { + results = suggestions, + }, + sorter = conf.generic_sorter(opts), + attach_mappings = function(prompt_bufnr) + actions.goto_file_selection_edit:replace(function() + local selection = actions.get_selected_entry() + actions.close(prompt_bufnr) + vim.cmd('normal! "_ciw"' .. selection[1]) + end) + return true + end + }):find() +end + local function apply_checks(mod) for k, v in pairs(mod) do mod[k] = function(opts)