Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dan7h3x/signup.nvim
A little (smart maybe) lsp signature helper for neovim.
https://github.com/dan7h3x/signup.nvim
lsp neovim neovim-plugin
Last synced: 22 days ago
JSON representation
A little (smart maybe) lsp signature helper for neovim.
- Host: GitHub
- URL: https://github.com/dan7h3x/signup.nvim
- Owner: Dan7h3x
- License: gpl-3.0
- Created: 2024-10-03T09:50:30.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2024-10-24T16:31:01.000Z (25 days ago)
- Last Synced: 2024-10-25T22:39:32.236Z (24 days ago)
- Topics: lsp, neovim, neovim-plugin
- Language: Lua
- Homepage:
- Size: 27.3 KB
- Stars: 10
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# signup.nvim
A little (smart maybe) lsp signature helper for neovim.
---
# Neovim Signature Help Plugin
This Neovim plugin provides a signature help feature for LSP (Language Server Protocol) clients. It displays function signatures and parameter information in a floating window as you type in insert mode or move the cursor in normal mode. The plugin also includes a notification system to display messages with different levels of severity (info, warning, error).
# ScreenShots (WIP)
![Screenshot1](https://github.com/user-attachments/assets/973d739a-3c01-4061-8888-29818d986fe8)
![Screenshot2](https://github.com/user-attachments/assets/97f3fe5b-3656-456d-8df2-4cb3ffd798ad)
![Screenshot3](https://github.com/user-attachments/assets/39595367-4f5c-4a3b-bf4e-fca0c2a24903)## Features
- **Signature Help**: Displays function signatures and parameter information in a floating window.
- **Toggle Mode**: Toggle signature help in normal mode.
- **Customizable**: Highly customizable with options for icons, colors, and more.
- **Integration**: Integrates with nvim-treesitter for syntax highlighting.
- **Notifications**: Displays notifications for errors, warnings, and info messages.## Installation
### Using [lazy.nvim](https://github.com/folke/lazy.nvim)
Add the following to your `init.lua`:
```lua
require("lazy").setup({
{
"Dan7h3x/signup.nvim",
config = function()
require("signup").setup({
-- Your configuration options here
})
end
}
})
```### Using Vim-Plug
Add the following to your `init.vim`:
```vim
Plug "Dan7h3x/signup.nvim"
```Then, in your `init.lua`:
```lua
lua << EOF
require('signup').setup({
-- Your configuration options here
})
EOF
```## Configuration
The plugin comes with a default configuration, but you can customize it according to your preferences. Here are the available options:
```lua
require('signup').setup({
silent = false,
number = true,
icons = {
parameter = " ",
method = " ",
documentation = " ",
},
colors = {
parameter = "#86e1fc",
method = "#c099ff",
documentation = "#4fd6be",
},
border = "rounded",
winblend = 10,
override = true, -- Override default LSP handler for signatureHelp
})
```### Options
- **silent**: If `true`, suppresses notifications. Default is `false`.
- **number**: If `true`, displays the signature index. Default is `true`.
- **icons**: Custom icons for method, parameter, and documentation.
- **colors**: Custom colors for method, parameter, and documentation.
- **border**: Border style for the floating window. Default is `"rounded"`.
- **winblend**: Transparency level for the floating window. Default is `10`.
- **override**: If `true`, overrides the default LSP handler for `textDocument/signatureHelp`. Default is `true`.## Usage
### Toggle Signature Help in Normal Mode
You can toggle the signature help in normal mode using the default keybinding ``. You can customize this keybinding in the setup function:
```lua
require('signup').setup({
toggle_key = "", -- Customize the toggle key here
})
```### Trigger Signature Help in Insert Mode
The signature help is automatically triggered when you move the cursor or change text in insert mode.
### Notifications
The plugin includes a notification system to display messages with different levels of severity (info, warning, error). These notifications are displayed in a floating window and automatically disappear after a few seconds.
## Highlight Groups
The plugin defines the following highlight groups:
- **LspSignatureActiveParameter**: Highlight for the active parameter.
- **SignatureHelpMethod**: Highlight for method icons.
- **SignatureHelpParameter**: Highlight for parameter icons.
- **SignatureHelpDocumentation**: Highlight for documentation icons.
- **NotificationInfo**: Highlight for info notifications.
- **NotificationWarn**: Highlight for warning notifications.
- **NotificationError**: Highlight for error notifications.## Examples
### Customizing Icons and Colors
```lua
require('signup').setup({
icons = {
parameter = " ",
method = " ",
documentation = " ",
},
colors = {
parameter = "#ffa500",
method = "#8a2be2",
documentation = "#008000",
},
})
```### Disabling Notifications
```lua
require('signup').setup({
silent = true,
})
```## Contributing
Contributions are welcome! Please feel free to submit a pull request or open an issue if you encounter any problems or have suggestions for improvements.
## License
This plugin is licensed under the MIT License. See the [LICENSE](LICENSE) file for more details.
---
## Good Color Schemes
To make your signature help window look even better, you can use the following color schemes:
### Gruvbox
```lua
vim.cmd([[
colorscheme gruvbox
highlight NormalFloat guibg=#3c3836 guifg=#ebdbb2
highlight FloatBorder guifg=#8ec07c
highlight LspSignatureActiveParameter guifg=#fabd2f guibg=#3c3836 gui=bold
highlight SignatureHelpMethod guifg=#83a598
highlight SignatureHelpParameter guifg=#b8bb26
highlight SignatureHelpDocumentation guifg=#d3869b
highlight NotificationInfo guifg=#8ec07c guibg=#3c3836
highlight NotificationWarn guifg=#fabd2f guibg=#3c3836
highlight NotificationError guifg=#fb4934 guibg=#3c3836
]])
```### Nord
```lua
vim.cmd([[
colorscheme nord
highlight NormalFloat guibg=#3b4252 guifg=#e5e9f0
highlight FloatBorder guifg=#81a1c1
highlight LspSignatureActiveParameter guifg=#88c0d0 guibg=#3b4252 gui=bold
highlight SignatureHelpMethod guifg=#81a1c1
highlight SignatureHelpParameter guifg=#a3be8c
highlight SignatureHelpDocumentation guifg=#b48ead
highlight NotificationInfo guifg=#81a1c1 guibg=#3b4252
highlight NotificationWarn guifg=#ebcb8b guibg=#3b4252
highlight NotificationError guifg=#bf616a guibg=#3b4252
]])
```### OneDark
```lua
vim.cmd([[
colorscheme onedark
highlight NormalFloat guibg=#282c34 guifg=#abb2bf
highlight FloatBorder guifg=#61afef
highlight LspSignatureActiveParameter guifg=#e06c75 guibg=#282c34 gui=bold
highlight SignatureHelpMethod guifg=#61afef
highlight SignatureHelpParameter guifg=#98c379
highlight SignatureHelpDocumentation guifg=#c678dd
highlight NotificationInfo guifg=#61afef guibg=#282c34
highlight NotificationWarn guifg=#e5c07b guibg=#282c34
highlight NotificationError guifg=#e06c75 guibg=#282c34
]])
```Feel free to customize these color schemes to match your personal preferences!
---