Skip to content

Releases: neoclide/coc.nvim

Use custom popup menu

31 Jul 17:43
1d3c525
Compare
Choose a tag to compare

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 to false by default, like VSCode.
    • "suggest.enablePreselect" changed to true 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 group CocListSearch 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

25 May 19:35
0fd56dd
Compare
Choose a tag to compare

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

21 Dec 11:36
Compare
Choose a tag to compare

Improvments for float window/popup

New float window/popup features requires coc.nvim >= 0.4.0 or vim >= 8.2.0750

  • border, title, scrollbar and buttons 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() and window.showNotification().
    • Progress window created by window.withProgress()

    all of them works on both vim and neovim, checkout :h coc-dialog for details.

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 and fetch 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 for Task 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 from workspace 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, use FloatFactory.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

12 Sep 15:30
Compare
Choose a tag to compare
  • Rework fetch and download 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 for languageserver 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 run yarn 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 and popup 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

10 Apr 12:39
Compare
Choose a tag to compare
  • 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

17 Mar 04:35
Compare
Choose a tag to compare
Release v0.0.77

v0.0.76

10 Mar 03:45
Compare
Choose a tag to compare
Release v0.0.76

v0.0.75

27 Feb 07:17
Compare
Choose a tag to compare
  • 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

18 Aug 05:13
Compare
Choose a tag to compare
  • 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

11 Jul 08:10
Compare
Choose a tag to compare
  • 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