You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
when trying to format ruby files either on save or forced with CocCommand prettier.formatFile nothing happens.
The output of the prettier coc extension is the following:
["INFO" - 1:24:09 PM] File Info:
{
"ignored": false,
"inferredParser": null
}
["WARN" - 1:24:09 PM] Parser not inferred, trying languageId.
["ERROR" - 1:24:09 PM] Error formatting document
["ERROR" - 1:24:09 PM] Cannot read properties of undefined (reading 'find')
TypeError: Cannot read properties of undefined (reading 'find')
at getParserFromLanguageId (/Users/me/.config/coc/extensions/node_modules/coc-prettier/lib/index.js:4287:31)
at PrettierEditService.format (/Users/me/.config/coc/extensions/node_modules/coc-prettier/lib/index.js:4599:16)
at async PrettierEditService.provideEdits (/Users/me/.config/coc/extensions/node_modules/coc-prettier/lib/index.js:4482:22)
at async PrettierEditService.forceFormatDocument (/Users/me/.config/coc/extensions/node_modules/coc-prettier/lib/index.js:4369:23)
at async BR.fireCommand (/Users/me/.vim/vim-plug/coc.nvim/build/index.js:66:4285)
at async Cy.runCommand (/Users/me/.vim/vim-plug/coc.nvim/build/index.js:257:24015)
at async Gy.cocAction (/Users/me/.vim/vim-plug/coc.nvim/build/index.js:277:46084)
at async EventEmitter.<anonymous> (/Users/me/.vim/vim-plug/coc.nvim/build/index.js:277:47703)
I've investigated it further and added some additional logging to my installed coc-prettier and prettier (from node_modules). It turned out that inferring the language from the file extension (.rb) didn't work. Prettier builds up a big array of languages (see below) and searches for ruby in it. For whatever reason, ruby is not present in this array despite having correctly defined the necessary plugin for prettier (prettier/plugin-ruby) in the prettier config.
When doing this with prettier 2.8.0 and prettier/plugin-ruby 3.2.2 everything works as expected and the language array contains ruby. My guess is that the ruby plugin is somewhat ignored and therefore the create prettier instance doesn't know anything about ruby.
I'm not deep into the knowledge how coc-prettier, prettier and plugins work together, so I'm not quite sure what the real underlying issue could be, any comments/insights are welcome.
The languages array mentioned above with latest prettier and prettier/plugin-ruby:
[{"linguistLanguageId":50,"name":"CSS","type":"markup","tmScope":"source.css","aceMode":"css","codemirrorMode":"css","codemirrorMimeType":"text/css","color":"#563d7c","extensions":[".css",".wxss"],"parsers":["css"],"vscodeLanguageIds":["css"]},{"linguistLanguageId":262764437,"name":"PostCSS","type":"markup","color":"#dc3a0c","tmScope":"source.postcss","group":"CSS","extensions":[".pcss",".postcss"],"aceMode":"text","parsers":["css"],"vscodeLanguageIds":["postcss"]},{"linguistLanguageId":198,"name":"Less","type":"markup","color":"#1d365d","aliases":["less-css"],"extensions":[".less"],"tmScope":"source.css.less","aceMode":"less","codemirrorMode":"css","codemirrorMimeType":"text/css","parsers":["less"],"vscodeLanguageIds":["less"]},{"linguistLanguageId":329,"name":"SCSS","type":"markup","color":"#c6538c","tmScope":"source.css.scss","aceMode":"scss","codemirrorMode":"css","codemirrorMimeType":"text/x-scss","extensions":[".scss"],"parsers":["scss"],"vscodeLanguageIds":["scss"]},{"linguistLanguageId":139,"name":"GraphQL","type":"data","color":"#e10098","extensions":[".graphql",".gql",".graphqls"],"tmScope":"source.graphql","aceMode":"text","parsers":["graphql"],"vscodeLanguageIds":["graphql"]},{"linguistLanguageId":155,"name":"Handlebars","type":"markup","color":"#f7931e","aliases":["hbs","htmlbars"],"extensions":[".handlebars",".hbs"],"tmScope":"text.html.handlebars","aceMode":"handlebars","parsers":["glimmer"],"vscodeLanguageIds":["handlebars"]},{"linguistLanguageId":146,"name":"Angular","type":"markup","tmScope":"text.html.basic","aceMode":"html","codemirrorMode":"htmlmixed","codemirrorMimeType":"text/html","color":"#e34c26","aliases":["xhtml"],"extensions":[".component.html"],"parsers":["angular"],"vscodeLanguageIds":["html"],"filenames":[]},{"linguistLanguageId":146,"name":"HTML","type":"markup","tmScope":"text.html.basic","aceMode":"html","codemirrorMode":"htmlmixed","codemirrorMimeType":"text/html","color":"#e34c26","aliases":["xhtml"],"extensions":[".html",".hta",".htm",".html.hl",".inc",".xht",".xhtml",".mjml"],"parsers":["html"],"vscodeLanguageIds":["html"]},{"linguistLanguageId":146,"name":"Lightning Web Components","type":"markup","tmScope":"text.html.basic","aceMode":"html","codemirrorMode":"htmlmixed","codemirrorMimeType":"text/html","color":"#e34c26","aliases":["xhtml"],"extensions":[],"parsers":["lwc"],"vscodeLanguageIds":["html"],"filenames":[]},{"linguistLanguageId":391,"name":"Vue","type":"markup","color":"#41b883","extensions":[".vue"],"tmScope":"text.html.vue","aceMode":"html","parsers":["vue"],"vscodeLanguageIds":["vue"]},{"linguistLanguageId":183,"name":"JavaScript","type":"programming","tmScope":"source.js","aceMode":"javascript","codemirrorMode":"javascript","codemirrorMimeType":"text/javascript","color":"#f1e05a","aliases":["js","node"],"extensions":[".js","._js",".bones",".cjs",".es",".es6",".frag",".gs",".jake",".javascript",".jsb",".jscad",".jsfl",".jslib",".jsm",".jspre",".jss",".mjs",".njs",".pac",".sjs",".ssjs",".xsjs",".xsjslib",".wxs"],"filenames":["Jakefile"],"interpreters":["chakra","d8","gjs","js","node","nodejs","qjs","rhino","v8","v8-shell","zx"],"parsers":["babel","acorn","espree","meriyah","babel-flow","babel-ts","flow","typescript"],"vscodeLanguageIds":["javascript","mongo"]},{"linguistLanguageId":183,"name":"Flow","type":"programming","tmScope":"source.js","aceMode":"javascript","codemirrorMode":"javascript","codemirrorMimeType":"text/javascript","color":"#f1e05a","aliases":[],"extensions":[".js.flow"],"filenames":[],"interpreters":["chakra","d8","gjs","js","node","nodejs","qjs","rhino","v8","v8-shell"],"parsers":["flow","babel-flow"],"vscodeLanguageIds":["javascript"]},{"linguistLanguageId":183,"name":"JSX","type":"programming","tmScope":"source.js.jsx","aceMode":"javascript","codemirrorMode":"jsx","codemirrorMimeType":"text/jsx","extensions":[".jsx"],"parsers":["babel","babel-flow","babel-ts","flow","typescript","espree","meriyah"],"vscodeLanguageIds":["javascriptreact"],"group":"JavaScript"},{"linguistLanguageId":378,"name":"TypeScript","type":"programming","color":"#3178c6","aliases":["ts"],"interpreters":["deno","ts-node"],"extensions":[".ts",".cts",".mts"],"tmScope":"source.ts","aceMode":"typescript","codemirrorMode":"javascript","codemirrorMimeType":"application/typescript","parsers":["typescript","babel-ts"],"vscodeLanguageIds":["typescript"]},{"linguistLanguageId":94901924,"name":"TSX","type":"programming","color":"#3178c6","group":"TypeScript","extensions":[".tsx"],"tmScope":"source.tsx","aceMode":"javascript","codemirrorMode":"jsx","codemirrorMimeType":"text/jsx","parsers":["typescript","babel-ts"],"vscodeLanguageIds":["typescriptreact"]},{"linguistLanguageId":174,"name":"JSON.stringify","type":"data","color":"#292929","tmScope":"source.json","aceMode":"json","codemirrorMode":"javascript","codemirrorMimeType":"application/json","aliases":["geojson","jsonl","topojson"],"extensions":[".importmap"],"filenames":["package.json","package-lock.json","composer.json"],"parsers":["json-stringify"],"vscodeLanguageIds":["json"]},{"linguistLanguageId":174,"name":"JSON","type":"data","color":"#292929","tmScope":"source.json","aceMode":"json","codemirrorMode":"javascript","codemirrorMimeType":"application/json","aliases":["geojson","jsonl","topojson"],"extensions":[".json",".4DForm",".4DProject",".avsc",".geojson",".gltf",".har",".ice",".JSON-tmLanguage",".mcmeta",".tfstate",".tfstate.backup",".topojson",".webapp",".webmanifest",".yy",".yyp"],"filenames":[".all-contributorsrc",".arcconfig",".auto-changelog",".c8rc",".htmlhintrc",".imgbotconfig",".nycrc",".tern-config",".tern-project",".watchmanconfig","Pipfile.lock","composer.lock","flake.lock","mcmod.info"],"parsers":["json"],"vscodeLanguageIds":["json"]},{"linguistLanguageId":423,"name":"JSON with Comments","type":"data","color":"#292929","group":"JSON","tmScope":"source.js","aceMode":"javascript","codemirrorMode":"javascript","codemirrorMimeType":"text/javascript","aliases":["jsonc"],"extensions":[".jsonc",".code-snippets",".sublime-build",".sublime-commands",".sublime-completions",".sublime-keymap",".sublime-macro",".sublime-menu",".sublime-mousemap",".sublime-project",".sublime-settings",".sublime-theme",".sublime-workspace",".sublime_metrics",".sublime_session"],"filenames":[".babelrc",".devcontainer.json",".eslintrc.json",".jscsrc",".jshintrc",".jslintrc",".swcrc","api-extractor.json","devcontainer.json","jsconfig.json","language-configuration.json","tsconfig.json","tslint.json",".eslintrc"],"parsers":["json"],"vscodeLanguageIds":["jsonc"]},{"linguistLanguageId":175,"name":"JSON5","type":"data","color":"#267CB9","extensions":[".json5"],"tmScope":"source.js","aceMode":"javascript","codemirrorMode":"javascript","codemirrorMimeType":"application/json","parsers":["json5"],"vscodeLanguageIds":["json5"]},{"linguistLanguageId":222,"name":"Markdown","type":"prose","color":"#083fa1","aliases":["md","pandoc"],"aceMode":"markdown","codemirrorMode":"gfm","codemirrorMimeType":"text/x-gfm","wrap":true,"extensions":[".md",".livemd",".markdown",".mdown",".mdwn",".mkd",".mkdn",".mkdown",".ronn",".scd",".workbook"],"filenames":["contents.lr","README"],"tmScope":"text.md","parsers":["markdown"],"vscodeLanguageIds":["markdown"]},{"linguistLanguageId":222,"name":"MDX","type":"prose","color":"#083fa1","aliases":["md","pandoc"],"aceMode":"markdown","codemirrorMode":"gfm","codemirrorMimeType":"text/x-gfm","wrap":true,"extensions":[".mdx"],"filenames":[],"tmScope":"text.md","parsers":["mdx"],"vscodeLanguageIds":["mdx"]},{"linguistLanguageId":407,"name":"YAML","type":"data","color":"#cb171e","tmScope":"source.yaml","aliases":["yml"],"extensions":[".yml",".mir",".reek",".rviz",".sublime-syntax",".syntax",".yaml",".yaml-tmlanguage",".yaml.sed",".yml.mysql"],"filenames":[".clang-format",".clang-tidy",".gemrc","CITATION.cff","glide.lock",".prettierrc",".stylelintrc",".lintstagedrc"],"aceMode":"yaml","codemirrorMode":"yaml","codemirrorMimeType":"text/x-yaml","parsers":["yaml"],"vscodeLanguageIds":["yaml","ansible","home-assistant"]}]
For comparison reasons, the languages array with old version (prettier 2.8.0 and prettier/plugin-ruby 3.2.2)
[{"linguistLanguageId":183,"name":"JavaScript","type":"programming","tmScope":"source.js","aceMode":"javascript","codemirrorMode":"javascript","codemirrorMimeType":"text/javascript","color":"#f1e05a","aliases":["js","node"],"extensions":[".js","._js",".bones",".cjs",".es",".es6",".frag",".gs",".jake",".javascript",".jsb",".jscad",".jsfl",".jslib",".jsm",".jspre",".jss",".mjs",".njs",".pac",".sjs",".ssjs",".xsjs",".xsjslib",".wxs"],"filenames":["Jakefile"],"interpreters":["chakra","d8","gjs","js","node","nodejs","qjs","rhino","v8","v8-shell","zx"],"since":"0.0.0","parsers":["babel","acorn","espree","meriyah","babel-flow","babel-ts","flow","typescript"],"vscodeLanguageIds":["javascript","mongo"]},{"linguistLanguageId":183,"name":"Flow","type":"programming","tmScope":"source.js","aceMode":"javascript","codemirrorMode":"javascript","codemirrorMimeType":"text/javascript","color":"#f1e05a","aliases":[],"extensions":[".js.flow"],"filenames":[],"interpreters":["chakra","d8","gjs","js","node","nodejs","qjs","rhino","v8","v8-shell"],"since":"0.0.0","parsers":["flow","babel-flow"],"vscodeLanguageIds":["javascript"]},{"linguistLanguageId":183,"name":"JSX","type":"programming","tmScope":"source.js.jsx","aceMode":"javascript","codemirrorMode":"jsx","codemirrorMimeType":"text/jsx","extensions":[".jsx"],"since":"0.0.0","parsers":["babel","babel-flow","babel-ts","flow","typescript","espree","meriyah"],"vscodeLanguageIds":["javascriptreact"],"group":"JavaScript"},{"linguistLanguageId":378,"name":"TypeScript","type":"programming","color":"#3178c6","aliases":["ts"],"interpreters":["deno","ts-node"],"extensions":[".ts",".cts",".mts"],"tmScope":"source.ts","aceMode":"typescript","codemirrorMode":"javascript","codemirrorMimeType":"application/typescript","since":"1.4.0","parsers":["typescript","babel-ts"],"vscodeLanguageIds":["typescript"]},{"linguistLanguageId":94901924,"name":"TSX","type":"programming","color":"#3178c6","group":"TypeScript","extensions":[".tsx"],"tmScope":"source.tsx","aceMode":"javascript","codemirrorMode":"jsx","codemirrorMimeType":"text/jsx","since":"1.4.0","parsers":["typescript","babel-ts"],"vscodeLanguageIds":["typescriptreact"]},{"linguistLanguageId":174,"name":"JSON.stringify","type":"data","color":"#292929","tmScope":"source.json","aceMode":"json","codemirrorMode":"javascript","codemirrorMimeType":"application/json","aliases":["geojson","jsonl","topojson"],"extensions":[".importmap"],"filenames":["package.json","package-lock.json","composer.json"],"since":"1.13.0","parsers":["json-stringify"],"vscodeLanguageIds":["json"]},{"linguistLanguageId":174,"name":"JSON","type":"data","color":"#292929","tmScope":"source.json","aceMode":"json","codemirrorMode":"javascript","codemirrorMimeType":"application/json","aliases":["geojson","jsonl","topojson"],"extensions":[".json",".4DForm",".4DProject",".avsc",".geojson",".gltf",".har",".ice",".JSON-tmLanguage",".mcmeta",".tfstate",".tfstate.backup",".topojson",".webapp",".webmanifest",".yy",".yyp"],"filenames":[".arcconfig",".auto-changelog",".c8rc",".htmlhintrc",".imgbotconfig",".nycrc",".tern-config",".tern-project",".watchmanconfig","Pipfile.lock","composer.lock","mcmod.info"],"since":"1.5.0","parsers":["json"],"vscodeLanguageIds":["json"]},{"linguistLanguageId":423,"name":"JSON with Comments","type":"data","color":"#292929","group":"JSON","tmScope":"source.js","aceMode":"javascript","codemirrorMode":"javascript","codemirrorMimeType":"text/javascript","aliases":["jsonc"],"extensions":[".jsonc",".code-snippets",".sublime-build",".sublime-commands",".sublime-completions",".sublime-keymap",".sublime-macro",".sublime-menu",".sublime-mousemap",".sublime-project",".sublime-settings",".sublime-theme",".sublime-workspace",".sublime_metrics",".sublime_session"],"filenames":[".babelrc",".devcontainer.json",".eslintrc.json",".jscsrc",".jshintrc",".jslintrc","api-extractor.json","devcontainer.json","jsconfig.json","language-configuration.json","tsconfig.json","tslint.json",".eslintrc",".swcrc"],"since":"1.5.0","parsers":["json"],"vscodeLanguageIds":["jsonc"]},{"linguistLanguageId":175,"name":"JSON5","type":"data","color":"#267CB9","extensions":[".json5"],"tmScope":"source.js","aceMode":"javascript","codemirrorMode":"javascript","codemirrorMimeType":"application/json","since":"1.13.0","parsers":["json5"],"vscodeLanguageIds":["json5"]},{"linguistLanguageId":50,"name":"CSS","type":"markup","tmScope":"source.css","aceMode":"css","codemirrorMode":"css","codemirrorMimeType":"text/css","color":"#563d7c","extensions":[".css",".wxss"],"since":"1.4.0","parsers":["css"],"vscodeLanguageIds":["css"]},{"linguistLanguageId":262764437,"name":"PostCSS","type":"markup","color":"#dc3a0c","tmScope":"source.postcss","group":"CSS","extensions":[".pcss",".postcss"],"aceMode":"text","since":"1.4.0","parsers":["css"],"vscodeLanguageIds":["postcss"]},{"linguistLanguageId":198,"name":"Less","type":"markup","color":"#1d365d","aliases":["less-css"],"extensions":[".less"],"tmScope":"source.css.less","aceMode":"less","codemirrorMode":"css","codemirrorMimeType":"text/css","since":"1.4.0","parsers":["less"],"vscodeLanguageIds":["less"]},{"linguistLanguageId":329,"name":"SCSS","type":"markup","color":"#c6538c","tmScope":"source.css.scss","aceMode":"scss","codemirrorMode":"css","codemirrorMimeType":"text/x-scss","extensions":[".scss"],"since":"1.4.0","parsers":["scss"],"vscodeLanguageIds":["scss"]},{"linguistLanguageId":155,"name":"Handlebars","type":"markup","color":"#f7931e","aliases":["hbs","htmlbars"],"extensions":[".handlebars",".hbs"],"tmScope":"text.html.handlebars","aceMode":"handlebars","since":"2.3.0","parsers":["glimmer"],"vscodeLanguageIds":["handlebars"]},{"linguistLanguageId":139,"name":"GraphQL","type":"data","color":"#e10098","extensions":[".graphql",".gql",".graphqls"],"tmScope":"source.graphql","aceMode":"text","since":"1.5.0","parsers":["graphql"],"vscodeLanguageIds":["graphql"]},{"linguistLanguageId":222,"name":"Markdown","type":"prose","color":"#083fa1","aliases":["pandoc"],"aceMode":"markdown","codemirrorMode":"gfm","codemirrorMimeType":"text/x-gfm","wrap":true,"extensions":[".md",".livemd",".markdown",".mdown",".mdwn",".mkd",".mkdn",".mkdown",".ronn",".scd",".workbook"],"filenames":["contents.lr","README"],"tmScope":"source.gfm","since":"1.8.0","parsers":["markdown"],"vscodeLanguageIds":["markdown"]},{"linguistLanguageId":222,"name":"MDX","type":"prose","color":"#083fa1","aliases":["pandoc"],"aceMode":"markdown","codemirrorMode":"gfm","codemirrorMimeType":"text/x-gfm","wrap":true,"extensions":[".mdx"],"filenames":[],"tmScope":"source.gfm","since":"1.15.0","parsers":["mdx"],"vscodeLanguageIds":["mdx"]},{"linguistLanguageId":146,"name":"Angular","type":"markup","tmScope":"text.html.basic","aceMode":"html","codemirrorMode":"htmlmixed","codemirrorMimeType":"text/html","color":"#e34c26","aliases":["xhtml"],"extensions":[".component.html"],"since":"1.15.0","parsers":["angular"],"vscodeLanguageIds":["html"],"filenames":[]},{"linguistLanguageId":146,"name":"HTML","type":"markup","tmScope":"text.html.basic","aceMode":"html","codemirrorMode":"htmlmixed","codemirrorMimeType":"text/html","color":"#e34c26","aliases":["xhtml"],"extensions":[".html",".hta",".htm",".html.hl",".inc",".xht",".xhtml",".mjml"],"since":"1.15.0","parsers":["html"],"vscodeLanguageIds":["html"]},{"linguistLanguageId":146,"name":"Lightning Web Components","type":"markup","tmScope":"text.html.basic","aceMode":"html","codemirrorMode":"htmlmixed","codemirrorMimeType":"text/html","color":"#e34c26","aliases":["xhtml"],"extensions":[],"since":"1.17.0","parsers":["lwc"],"vscodeLanguageIds":["html"],"filenames":[]},{"linguistLanguageId":391,"name":"Vue","type":"markup","color":"#41b883","extensions":[".vue"],"tmScope":"text.html.vue","aceMode":"html","since":"1.10.0","parsers":["vue"],"vscodeLanguageIds":["vue"]},{"linguistLanguageId":407,"name":"YAML","type":"data","color":"#cb171e","tmScope":"source.yaml","aliases":["yml"],"extensions":[".yml",".mir",".reek",".rviz",".sublime-syntax",".syntax",".yaml",".yaml-tmlanguage",".yaml.sed",".yml.mysql"],"filenames":[".clang-format",".clang-tidy",".gemrc","CITATION.cff","glide.lock",".prettierrc",".stylelintrc",".lintstagedrc"],"aceMode":"yaml","codemirrorMode":"yaml","codemirrorMimeType":"text/x-yaml","since":"1.14.0","parsers":["yaml"],"vscodeLanguageIds":["yaml","ansible","home-assistant"]},{"name":"Ruby","parsers":["ruby"],"extensions":[".arb",".axlsx",".builder",".eye",".fcgi",".gemfile",".gemspec",".god",".jb",".jbuilder",".mspec",".opal",".pluginspec",".podspec",".rabl",".rake",".rb",".rbi",".rbuild",".rbw",".rbx",".ru",".ruby",".thor",".watchr"],"filenames":[".irbrc",".pryrc",".simplecov","Appraisals","Berksfile","Brewfile","Buildfile","Capfile","Cheffile","Dangerfile","Deliverfile","Fastfile","Gemfile","Guardfile","Jarfile","Mavenfile","Podfile","Puppetfile","Rakefile","Snapfile","Thorfile","Vagabondfile","Vagrantfile","buildfile"],"interpreters":["jruby","macruby","rake","rbx","ruby"],"linguistLanguageId":326,"vscodeLanguageIds":["ruby"]},{"name":"RBS","parsers":["rbs"],"extensions":[".rbs"]},{"name":"HAML","parsers":["haml"],"extensions":[".haml"],"vscodeLanguageIds":["haml"]}]
The text was updated successfully, but these errors were encountered:
Hi,
when trying to format ruby files either on save or forced with
CocCommand prettier.formatFile
nothing happens.The output of the prettier coc extension is the following:
I've investigated it further and added some additional logging to my installed coc-prettier and prettier (from node_modules). It turned out that inferring the language from the file extension (.rb) didn't work. Prettier builds up a big array of languages (see below) and searches for ruby in it. For whatever reason, ruby is not present in this array despite having correctly defined the necessary plugin for prettier (prettier/plugin-ruby) in the prettier config.
When doing this with prettier 2.8.0 and prettier/plugin-ruby 3.2.2 everything works as expected and the language array contains ruby. My guess is that the ruby plugin is somewhat ignored and therefore the create prettier instance doesn't know anything about ruby.
I'm not deep into the knowledge how coc-prettier, prettier and plugins work together, so I'm not quite sure what the real underlying issue could be, any comments/insights are welcome.
The languages array mentioned above with latest prettier and prettier/plugin-ruby:
For comparison reasons, the languages array with old version (prettier 2.8.0 and prettier/plugin-ruby 3.2.2)
The text was updated successfully, but these errors were encountered: