Skip to content
/ ng.nvim Public

A plugin to bring additional functionality for Angular to neovim.

Notifications You must be signed in to change notification settings

chefe/ng.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ng.nvim

A plugin to bring additional functionality for Angular to neovim.

Features

  • Go to template for component under cursor
  • Go to component(s) for template under cursor
  • Display template type check block
  • Check if a file is part of an angular project
  • Setup tree sitter grammer for angular
  • Support for refactorings
  • Generate the command to start the angular language server

Refactorings

  • Switch component from external template to inline template
  • Switch component from inline template to external template

Installation

Lazy:

return {
  {
    'chefe/ng.nvim',
    dependencies = { 'dlvandenberg/tree-sitter-angular' },
    config = function()
      require('ng').setup()
    end,
  },
}

Usage

local opts = { noremap = true, silent = true }
vim.keymap.set('n', '<leader>at', '<cmd>lua require("ng.lsp").goto_template_of_component(0)<cr>', opts)
vim.keymap.set('n', '<leader>ac', '<cmd>lua require("ng.lsp").goto_components_of_template(0)<cr>', opts)
vim.keymap.set('v', '<leader>ab', '<cmd>lua require("ng.lsp").show_template_tcb(0, "window")<cr>', opts)
vim.keymap.set('v', '<leader>abt', '<cmd>lua require("ng.lsp").show_template_tcb(0, "tab")<cr>', opts)
vim.keymap.set('v', '<leader>abv', '<cmd>lua require("ng.lsp").show_template_tcb(0, "vertical")<cr>', opts)
vim.keymap.set('v', '<leader>abh', '<cmd>lua require("ng.lsp").show_template_tcb(0, "horizontal")<cr>', opts)
vim.keymap.set('n', '<leader>arte', '<cmd>lua require("ng.refactor").switch_component_to_external_template(0)<cr>', opts)
vim.keymap.set('n', '<leader>arti', '<cmd>lua require("ng.refactor").switch_component_to_inline_template(0)<cr>', opts)

require('ng.lsp').is_in_angular_project(0, function (result)
  if result then
    vim.print('Angular project detected')
  else
    vim.print('No angular project detected')
  end
end)

require('lspconfig')['angularls'].setup({
    cmd = require('ng.lsp').get_angular_server_cmd(vim.fn.getcwd()),
    on_new_config = function(new_config, new_root_dir)
        new_config.cmd = require('ng.lsp').get_angular_server_cmd(new_root_dir),
    end,
})

Credits

About

A plugin to bring additional functionality for Angular to neovim.

Topics

Resources

Stars

Watchers

Forks