jwoudenberg / elm-pair

An artificial pair-programmer that helps you write Elm

Home Page:https://elm-pair.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

possibility to enable only some features

mathiajusth opened this issue · comments

Hi, this is a great tool. Would it bee possible to add some options in neovim to enable only some of the features?

Context:
I am having trouble using it in neovim as it regularly stops working and I am not sure why and I would like to just enable import renaming and disable the cross file symbol renamings (which I can do with elm-language-server) as when renaming only imports I have no problems.

If anyone was willing to try whether they experience the same with my config, here it is:

--[[ lua/plug.lua ]]
local fn = vim.fn

-- Automatically install packer
local install_path = fn.stdpath "data" .. "/site/pack/packer/start/packer.nvim"
if fn.empty(fn.glob(install_path)) > 0 then
  PACKER_BOOTSTRAP = fn.system {
    "git",
    "clone",
    "--depth",
    "1",
    "https://github.com/wbthomason/packer.nvim",
    install_path,
  } print("Installing packer. Close and reopen Neovim...") vim.cmd [[packadd packer.nvim]] end
-- Use a protected call so we don't error out on first use
local status_ok, packer = pcall(require, "packer")
if not status_ok then
  print("Couldn't require `packer`")
  return
end

-- Have packer use a popup window
packer.init {
  display = {
    open_fn = function ()
      return require("packer.util").float { border = "rounded" }
    end,
  },
}


-- ====Install your plugins here====
return packer.startup(function(use)
      use "wbthomason/packer.nvim" -- plugin manager

      use "altercation/vim-colors-solarized"

      use 'kana/vim-submode'

      -- use 'preservim/nerdtree'
      use {
        'kyazdani42/nvim-tree.lua',
        requires = 'kyazdani42/nvim-web-devicons'
      }

      use 'mhinz/vim-startify' -- TODO learn to use

      use 'yamatsum/nvim-cursorline'

      use 'preservim/nerdcommenter'

      use "ryanoasis/vim-devicons" -- after plugins that use it (nerdtree)

      -- use {'neoclide/coc.nvim', branch = 'release'}

      use 'nvim-treesitter/nvim-treesitter' -- TODO: Don't forget to run `:TSInstall all` after installation of the plugink

      use { -- TODO check githun and `:checkhealth telescope` for dependencies and install them
        'nvim-telescope/telescope.nvim', tag = '0.1.0',
        requires = { 'nvim-lua/plenary.nvim', 'kyazdani42/nvim-web-devicons'}
      }

      use {'nvim-telescope/telescope-fzf-native.nvim', run = 'make' }

      use 'airblade/vim-gitgutter'

      use {'jwoudenberg/elm-pair', rtp = 'editor-integrations/neovim'}

  -- Automatically set up your configuration after cloning packer.nvim
  -- Put this at the end after all plugins.
  if PACKER_BOOTSTRAP then
    require("packer").sync()
  end
end)
--[[ init.lua ]]

-- LEADER
-- These keybindings need to be defined before the first /
-- is called; otherwise, it will default to "\"
vim.g.mapleader = " "
vim.g.localleader = ","

-- MISC ??
vim.opt.updatetime = 250              -- after X milliseconds of not typing swp file is created

vim.opt.foldmethod = "indent"         
vim.opt.foldenable = false

vim.api.nvim_set_option("clipboard","unnamed") -- copy to system clipboard

vim.api.nvim_set_keymap('n', '<leader>nt', ':NvimTreeToggle<Enter>', {}) -- nvim-tree
-- vim.api.nvim_set_keymap('n', '<leader>nt', ':NERDTree<Enter>', {})    -- nerd-tree

vim.api.nvim_set_keymap('n', '<leader>w', ':w<Enter>', {})    -- nerd-tree

-- CONTEXT
vim.opt.number = true                 -- Show line numbers
vim.opt.scrolloff = 4                 -- Min num lines of before and after cursoe while scrolling
vim.opt.signcolumn = "yes"            
vim.opt.syntax = "ON"                -- str:  Allow syntax highlighting
vim.opt.wrap = false                


-- ENCODINGs
vim.opt.encoding = 'utf8'            -- str:  String encoding to use
vim.opt.fileencoding = 'utf8'        -- str:  File encoding to use


-- SEARCH
vim.opt.ignorecase = true        -- Ignore case in search patterns
vim.opt.smartcase = true         -- Override ignorecase if search contains capitals
vim.opt.incsearch = true         -- searchs while typing (before hitting <Enter>)
vim.opt.hlsearch = true          -- Highlight search matches
vim.api.nvim_set_keymap('n','<CR>',':noh<CR>',{noremap = true})

-- WHITESPACE
vim.opt.expandtab = true
vim.opt.shiftwidth = 2
vim.opt.tabstop = 2
vim.opt.softtabstop = 2

-- COLORSCHEME
vim.cmd("colorscheme solarized")
vim.g.lightline = { colorscheme = "solarized", }
-- vim.opt.background = "light"

-- VIEW ORGANIZATION
vim.opt.laststatus = 2

---- tab Switching
vim.api.nvim_set_keymap('n',',','<C-w><C-w>',{noremap = true})
vim.cmd("call submode#enter_with('tab-switching', 'n', '', '<Leader><Tab>', 'gt')")
vim.cmd("call submode#map('tab-switching', 'n', '', '<Tab>', 'gt')")

---- windows spliting
vim.api.nvim_set_keymap('n','<Leader>hs',':sp<Enter><C-w><C-w>',{noremap = true})
vim.api.nvim_set_keymap('n','<Leader>vs',':vsp<Enter><C-w><C-w>',{noremap = true})
vim.cmd("call submode#enter_with('resize', 'n', '', '<Leader>b')")
vim.cmd("call submode#map('resize', 'n', '', 'j', ':res +3<CR>')")
vim.cmd("call submode#map('resize', 'n', '', 'k', ':res -3<CR>')")
vim.cmd("call submode#map('resize', 'n', '', 'h', ':vertical resize -3<CR>')")
vim.cmd("call submode#map('resize', 'n', '', 'l', ':vertical resize +3<CR>')")

-- NERDCommenter
vim.api.nvim_set_keymap('n','<Leader>\'','<Leader>c<Space>',{})
vim.api.nvim_set_keymap('v','<Leader>\'','<Leader>c<Space>',{})
vim.cmd('let g:NERDSpaceDelims = 1')
          

-- COC
vim.api.nvim_set_keymap('n','[e','<Plug>(coc-diagnostic-prev)',{})
vim.api.nvim_set_keymap('n',']e','<Plug>(coc-diagnostic-next)',{})
vim.api.nvim_set_keymap('n','rn','<Plug>(coc-rename)',{})
vim.api.nvim_set_keymap('n','gd','<Plug>(coc-definition)',{})
vim.api.nvim_set_keymap('n','gr','<Plug>(coc-references)',{})
vim.api.nvim_set_keymap('n','gi','<Plug>(coc-implementation)',{})
vim.api.nvim_set_keymap('n','gy','<Plug>(coc-type-definition)',{})
vim.api.nvim_set_keymap('n','<leader>k',':call CocActionAsync(\'doHover\')<Enter>',{})
vim.cmd( -- use <tab> for trigger completion and navigate to the next complete item
  [[
    function! s:check_back_space() abort
      let col = col('.') - 1
      return !col || getline('.')[col - 1]  =~ '\s'
    endfunction

    inoremap <silent><expr> <Tab>
          \ pumvisible() ? "\<C-n>" :
          \ <SID>check_back_space() ? "\<Tab>" :
          \ coc#refresh()
  ]]
)
vim.api.nvim_set_keymap('n','<leader>qf','<Plug>(coc-fix-current)',{})
-- TELESCOPE
vim.api.nvim_set_keymap('n','<leader>s','<cmd>Telescope find_files<cr>',{noremap = true})
vim.api.nvim_set_keymap('n','<leader>g','<cmd>Telescope live_grep<cr>',{noremap = true})
vim.api.nvim_set_keymap('n','<leader>fb','<cmd>Telescope buffers<cr>',{noremap = true})
vim.api.nvim_set_keymap('n','<leader>fh','<cmd>Telescope help_tags<cr>',{noremap = true})

-- GitGutter
vim.api.nvim_set_keymap('n','<leader>gs',':GitGutterStageHunk<Enter>',{noremap = true})
vim.api.nvim_set_keymap('n','<leader>gu',':GitGutterUnstageHunk<Enter>',{noremap = true})
vim.api.nvim_set_keymap('n','<leader>gp',':GitGutterPreviewHunk<Enter>',{noremap = true})

-- PLUGINS
require('plug')
require('nvim-tree').setup({
  filters = {
    dotfiles = true,
  },
  hijack_cursor = true,
})
require('nvim-cursorline').setup {
  cursorline = {
    enable = true,
    timeout = 0,
    number = false,
  },
  cursorword = {
    enable = false,
    min_length = 3,
    hl = { underline = true },
  }
}
require('telescope').load_extension('fzf')

Hi @mathiajusth! Thank you for the nice words. Sorry to hear you're running into problems, thank you for reporting them!

I understand why you ask for the possibility to disable broken features, but I'd prefer to fix the errors you're running into instead! Thank you for sharing your configuration, that looks great to me and I don't think the problem is related to anything you're doing in the configuration or elsewhere.

Could you try running elm-pair again, and then when it stops working share the logs it has produced? That might give some insight into what's happening. You should be able to find elm-pair's log file here:

Linux: ~/.cache/elm-pair/log
MacOS: ~/Library/Caches/elm-pair/log

@jwoudenberg here are the last few lines of the log which contain an error. thank you for looking into this

[info] new buffer opened: Buffer { editor_id: Id(6), buffer_id: 25 }
[info] new buffer opened: Buffer { editor_id: Id(6), buffer_id: 26 }
[info] new buffer opened: Buffer { editor_id: Id(6), buffer_id: 27 }
[info] new buffer opened: Buffer { editor_id: Id(6), buffer_id: 28 }
[info] new buffer opened: Buffer { editor_id: Id(6), buffer_id: 29 }
[info] new buffer opened: Buffer { editor_id: Id(6), buffer_id: 30 }
[info] open 0 files in preparation of refactor: changed name of value
[info] running compilation for revision 0 of buffer Buffer { editor_id: Id(6), buffer_id: 30 }
[info] new buffer opened: Buffer { editor_id: Id(6), buffer_id: 31 }
[info] new buffer opened: Buffer { editor_id: Id(6), buffer_id: 32 }
[info] new buffer opened: Buffer { editor_id: Id(6), buffer_id: 33 }
[info] new buffer opened: Buffer { editor_id: Id(6), buffer_id: 34 }
[info] diffing revision 72 against 70 for buffer Buffer { editor_id: Id(6), buffer_id: 2 }
[info] new buffer opened: Buffer { editor_id: Id(6), buffer_id: 35 }
[info] new buffer opened: Buffer { editor_id: Id(6), buffer_id: 36 }
[info] open 0 files in preparation of refactor: changed name of value
[info] diffing revision 72 against 70 for buffer Buffer { editor_id: Id(6), buffer_id: 2 }
[info] running compilation for revision 0 of buffer Buffer { editor_id: Id(6), buffer_id: 36 }
[error] thread for editor Id(6) failed with error: [src/editors/neovim.rs:176] received error from neovim: 0 Vim(call):E903: Process failed to start: too many open files: "/bin/sh"
[info] edit 2 buffers to refactor: changed name of value

Thank you for the info, and sorry for the slow response! I'm moving house at the moment and starting a new job next week so it's a bit of a busy time for me, but I haven't forgotten about this and hope to take a look soon. Will update here!