Releases: neoclide/coc.nvim
Use custom popup menu
What's Changed
Break changes
- Use custom popup menu instead of vim's built-in pum, see
:h coc-completion
or #3862- Minimal version changed to nvim >= 0.4.0 and vim >= 8.1.1719.
- Removed configurations:
suggest.enablePreview
suggest.keepCompleteopt
suggest.disableKind
suggest.disableMenu
suggest.floatEnable
suggest.disableMenuShortcut
. "suggest.noselect"
changed tofalse
by default, like VSCode."suggest.enablePreselect"
changed totrue
by default, like VSCode.- Add
"suggest.formatItems"
for customize layout in popupmenu. - Need to remap keys to manage completion list.
- Remove configuration
list.matchHighlightGroup
, use highlight groupCocListSearch
for matched characters. - Always use picker to message with actions, remove configuration
notification.preferMenuPicker
- Disable
progressOnInitialization
for language client by default. - Support
repeat#set
for commands that make changes only.
New features
- Add configuration "notification.disabledProgressSources".
- Add "rounded" property to "floatConfig" configuration.
- Add configuration
workspace.openOutputCommand
.
Full Changelog: 540b286...7a50d4d
Support of LSP 3.16
What's Changed
Features in LSP 3.16 are now supported, including:
- Semantic Token support
:h coc-semantic-highlights
- Call Hierarchy support
:h CocAction('showIncomingCalls')
:h CocAction('showOutgoingCalls')
- Linked Editing support
:h coc-preferences-enableLinkedEditing
- Events for file operations (create, rename, delete)
- Change annotation support for text edits and file operations (create, rename, delete)
Other major changes:
- Tree view support
:h coc-tree
. - Outline support
:h CocAction('showOutline')
. - Notification support like VSCode
:h coc-notification
#3813 - InputBox and QuickPick support #3826
- Built in support for ultisnip snippet
:h coc-snippets
8401279. - Added snippet variables, same as VSCode.
- Completion reworked for performance 11dd878 e862899 9de37e0 930c6dc 4921e17 4bf9071.
- Improved for workspace folder and workspace edit
:h coc-workspace
#3838 - Register and provide inlay hints (not available for language client) 3a26df0.
- Add reverse option for CocList a9b2297.
- Highlight for deprecated and unused code df7a1d9.
- Add action
definitionHover
:h CocAction('definitionHover')
c9009f2. - Add models
BufferSync
LinesTextDocument
SemanticTokensBuilder
- Add
TextInsert
event to handle user insert 8c42f40. - Add
floatConfig
to configure style of float window/popup eb47e40. - Code Lens renders above the line when possible by default ee2c44a.
- Use
nvim_buf_set_text
to change text when possible 2c18827. - Refresh diagnostic list when diagnostic changed ca8ca2a.
- Add
disabledFeatures
support for configure language servers a60702d. - Show disabled code actions in menu picker 27b709b.
Break changes
See #3530
Full Changelog: c90a07e...21a8e00
v0.0.80 Better float support
Improvments for float window/popup
New float window/popup features requires coc.nvim >= 0.4.0 or vim >= 8.2.0750
-
border
,title
,scrollbar
andbuttons
support on both vim and neovim. -
Functions for scroll float window and popups, checkout
:h coc#float#has_scroll()
-
Several kinds of Dialog that could accept user action:
- Confirm dialog created by
window.showPrompt()
- Input prompt dialog created by
window.requestInput()
- Menu dialog used by codeaction or created by
window.showMenuPicker()
- Multiple picker dialog created by
window.showPickerDialog()
- Notification dialog created by
window.showErrorMessage()
,window.showWarningMessage()
,
window.showInformationMessage()
andwindow.showNotification()
. - Progress window created by
window.withProgress()
all of them works on both vim and neovim, checkout
:h coc-dialog
for details. - Confirm dialog created by
Improvements for list
- Remove window resize support.
- Type
<esc>
would always cancel prompt. - Session support for list, which means there could be multiple list sessions at
the same time. - List related commands including
:CocPrev
,:CocNext
,CocFirst
and
CocLast
could take optional list name as argument. - Reworked preview implementation for better performance.
- Add
:CocListCancel
for cancel latest list. - Add
"list.matchHighlightGroup"
configuration for customize highlight of
matched characters. - Support use
\
to escape space with extended search mode.
Improvements for cursors support
- Session support for cursors, #2626.
- Not cancelled on window change or unrelated changes.
Other improvements
- Render parsed markdown by parse markdown with marked module #2497.
- Javascript code is compiled by webpack on master, no need to check for entry file anymore.
- Support cancellation for
download
andfetch
module. - Reworked highlight related, support highlight LSP ranges for buffer and window.
- Add
getHover
action. - Add
:CocWatch
command for automatic reload changed extension #2549. - Add
env
support forTask
module. - Removed timeout for actions, show progress in statusline instead.
- Remove
workspace.workspace.onWillSaveUntil
#2704. - Remove
diagnostic.refreshAfterSave
configuration support #2731.
Changed API for extensions
Old extensions would still work, but could be failed to compile with 0.0.80's
typing.
Use coc-extension-codemod
for migrate old coc.nvim extensions to 0.0.80's API.
-
Use
window
module for methods that moved fromworkspace
module, including:- showMessage
- runTerminalCommand
- openTerminal
- showQuickpick
- menuPick
- openLocalConfig
- showPrompt
- createStatusBarItem
- createOutputChannel
- showOutputChannel
- requestInput
- echoLines
- getCursorPosition
- moveTo
- getOffset
-
new FloatFactory
only takes one argument. -
FloatFactory.create
is removed from typing, useFloatFactory.show
instead. -
document.applyEdits()
only takes edits as first argument. -
Promise can't use
logError()
method anymore. -
nvim.resumeNotification(false, true)
returns void instead of promise. -
Not possible to use modules that inside coc.nvim, like
from "coc.nvim/lib/util"
v0.0.79
- Rework
fetch
anddownload
module. - Add
diagnostic.locationlistUpdate
configuration. - Add
:CocDiagnostics
command. - Add
:CocFirst
and:CocLast
commands. - Add
listDescriptions
action. - Add
diagnosticToggle
action. - Add
coc#util#close_floats()
coc#util#float_hide()
functions. - Add version check warnings on startup.
- Add
<Plug>(coc-codeaction-line)
. - Add
fixAll
&organizeImport
action - Add
installBuffer
for extension install & update. - Add
workspace.expand
for expand variables and~
. - Support
g:coc_sources_disable_map
. - Support
http.proxyAuthorization
configuration. - Support parse JSON response for fetch module.
- Support
g:coc_disable_uncaught_error
. - Support preview for
signature.target
. - Support multiple completion registration.
- Support multiple final placeholder with value.
- Disable key-mapping when jump to final placeholder.
- Support
disableSnippetCompletion
forlanguageserver
configuration. - Support
--no-quite
--no-resize
--first
command arguments for CocList. - Support
COC_NODE_PATH
environment variable. - Support
b:coc_diagnostic_disable
- Support toggle codeLens.
- Support
listOfWorkspaceEdit
configuration. - Support
list.source.symbols.excludes
configuration. - Support
g:node_client_debug
for enable connection log. - Support
coc.preferences.maxFileSize
configuration. - Support
g:coc_disable_transparent_cursor
. - Use
popup_dialog
for prompt when possible.
BREAK CHANGES
- Remove automatic change locationlist on diagnostics change.
- Remove
diagnostic.locationlist
configration. - Options of fetch and download module changed.
coc#util#install()
will runyarn install --frozen-lockfile
command to compile the code instead of fetch javascript file from github.suggest.triggerCompletionWait
now used for debounce completion instead of completion wait time of language server.<Plug>(coc-codeaction)
use entire buffer as range, not current line.- Show diagnostic virtualText for current line only.
- Remove timeout error for request to coc.nvim.
- Changed signature of
document.applyEdit
method. - Show warning for node < 10.12.0.
- Unnecessary
workspaceSymbols
action is removed. textprop
andpopup
features of vim8 not work on vim <= 8.1.1719.coc.preferences.extensionUpdateCheck
is never by default,- Jump to final placeholder of snippet unmap navigate keys, like VSCode.
CocList commands
not list commands from inactivated extensions.- Use vertically-splitted window for extension install & update by default.
v0.0.78
- feat(list): allow filter outline by kind argument
- feat(extensions): improve update message
- fix(workspace): use timer for moveTo on vim8
- feat(extensions): add concurrent limit for install
- fix: buf_set_lines should keep view and cursor on vim (#1731)
- feat(extensions): add extension names in update message
- feat(doc): not fetch lines for disabled buffer
- chore(doc): improve readme
- fix(extension): throw error for url not supported
- chore(doc): improve doc
- feat(workspace): prompt & use quickfix list for workspaceEdit
- fix(completion): adjust startcol by textEdit of CompletionItem
- fix(languages): adjust textEdit on line change
- fix(snippet): fix iterate of variable placeholder
- chore(doc): improve doc tag
- feat(util): add mutex module
- fix(util): remove unused variable
- fix(test): fix events test
- feat(workspace): use popup_menu for quickpick
- fix(diagnostic): check neovim 0.3.2 for enableHighlightLineNumber
- feat(list): add configuration for extensions list
- refactor(diagnostic): clean up DiagnosticCollection.set() (#1688)
- fix(workspace): better message format
- feat(plugin): add coc#util#get_config
- fix(services): missing client (#1692)
- fix(workspace): fix recursive deleteFile not work
- fix(events): catch error for handler
- Remove references to
coc-config
in English docs (#1690) - chore(schema): separateRelatedInformationAsDiagnostics
- feat(diagnostic): separate related information as diagnostics (#1687)
- feat(snippets): support variable placeholder as VSCode
- chore(util): improve error message
- fix(float): not scroll bottom for single doc
- Revert "added mdx filetype identifier (#1679)"
- added mdx filetype identifier (#1679)
- fix(diagnostic): check support of highlight line number
- feat(plugin): add CocNotify function
- chore(language-client): use vscode-languageserver-textdocument
- chore(plugin): use vscode-languageserver-textdocument for TextDocument
- fix(list): avoid crash on paste by use clipboardy
- feat(list): support for paste input
- feat(util): expand g:coc_node_path
- fix(tests): ignore watchman command in tests
- fix(diagnostic): enable highlight number when enableSign is true
- feat(workspace): add position to error message on completeopt change
- fix(list): avoid unnecessary change of history input
- fix(util): fix workspace.showMessage on vim8
- Revert "fix(util): suppress 'press ENTER' in echo_messages() (#1668)"
- fix(util): suppress 'press ENTER' in echo_messages() (#1668)
- feat(events): check timeout for handler functions
- feat(util): expand coc_config_home & coc_data_home
- fix(services): check needsStop before stop
- fix(services): avoid unnecessary service start
- fix(util): fix possible wrong highlight
- feat(services): support language client lazy initialize
- feat(test): add connection tests
- chore(language-client): rework progress feature
- Fix typo termnial -> terminal (#1663)
v0.0.77
v0.0.76
v0.0.75
- fix(source): fix undefined synname
- chore(README): badges
- fix(services): fix compile fail
- feat(util): resolve env variable
- fix(highlight): make Normal link to CocFloating
- feat(diagnostic): checkCurrentLine is a fallback behavior (#1548)
- fix(list): fix space can't be override
- feat(plugin): add getWorkspaceSymbols CocAction
- feat(plugin): add workspaceSymbols action
- fix(diagnostic): fix possible invalid range
- feat(workspace): rm .vim from default rootPatterns (#1450)
- feat(workspace): rm .vim from default rootPatterns (#1450)
- chore(config): fix coc-settings.json
- fix(configuration): avoid overwrite of user configuration file
- fix(snippet): fix \n in regex format
- Update Readme.md
- fix(list): avoid error of blend highlight
- feat(float): add coc.preferences.highlightTimeout configuration
- fix(on_enter): document not synced when using VIM (#1373)
- fix(handler): fix position on InsertLeave
- chore(doc): better document of openCommand
- fix(list): fix list not redraw
- fix(floatFactory): not throw error when floating not supported
- fix(configuration): fix parentFolder check
- fix(diagnostic): remove unnecessary redraws
- chore(doc): Readme
- fix(diagnostic): fix range of diagnostics
- chore(terminal): kill vim's terminal on window close
- fix(workspace): fix xmap not work with registerKeymap
- fix(api): fix setLines API on vim
- fix(terminal): fix undefined variable
- fix(fetch): check protocol of PROXY env
- Revert "feat(diagnostic): classify ALE items by their source (#1287)"
- fix(workspace): fix wrong resolved workspaceFolder
- fix(document): fix b:coc_enabled not working
- fix(highlight): add --noplugin to nvim command
- fix(workspace): fix rename current buffer close window
- fix: diagnostic.refreshAfterSave (#1236)
- chore(Readme): suggest for range selection
- fix(list): autoPreview should work on list resume
- feat(completion): add suggest.invalidInsertCharacters (#1195)
- feat(completion): add suggest.removeDuplicateItems
- fix(util): fix isParentFolder on windows
- chore(doc): recommend [g and ]g for navigate diagnostics
- feat(clean): clean log files, closes #1159
- refactor(plugin): remove mappings of function textobj
- chore(extensions): expand tilder in npm.binPath
- fix(workspace): registerAutocmd with list of events (#1143)
v0.0.74
- feat(cursors): support multiple cursors.
- feat(extensions): install missing extensions by CocInstall.
- feat(extensions): add command
extensions.forceUpdateAll
. - feat(completion): rework preselect feature.
- feat(extension): use request for fetch package info.
- feat(language-client): support disableDynamicRegister configuration.
- feat(list): paste from vim register support on insert mode #1088.
- feat(plugin): add CocHasProvider(), close #1087.
- refactor(outline): not exclude variables and callback.
- refactor(diagnostic): remove timeout on InsertLeave.
v0.0.73
- fix(completion): fix map of number select
- fix(languages): fix cursor position with snippet
- fix(completion): fix cursor position with additionalTextEdits
- fix(position): fix rangeOverlap check #961
- fix(list): not change guicursor when it's empty
- fix(list): fix filter not work on loading
- fix(list): fix custom location list command not work
- fix(util): highlight & render on vim8
- fix(handler): fix getCommands
- fix(handler): not check lastInsert on trigger signatureHelp
- fix(handler): fix check of signature help trigger
- fix(language-client): configuration for configured server, closes #930
- fix(diagnostic): clear diagnostics on filetype change
- feat(plugin): add download & fetch modules
- feat(plugin): add highligher module
- feat(refactor): add
<Plug>(coc-refactor)
for refactor window - feat(extension): use mv module for folder rename
- feat(extension): support install taged extension
- feat(extension): support custom extension root
g:coc_extension_root
- feat(handler): close signature float window on ')'
- feat(list): support
g:coc_quickfix_open_command
- feat(list): add eval action
- feat(list): add --tab list option
- feat(list): use highligher module for showHelp
- feat(terminal): add noa on window jump
- feat(terminal): support vim8
- feat(diagnostic): add diagnosticRelated support
- feat(diagnostic): use text properties on vim8
- feat(handler): improve signature float window