Skip to content

Comments are broken in qmd files #195

@dshemnv

Description

@dshemnv

I noticed that when I try to comment lines inside a qmd file, it behaves strangely and mixes up python and markdown comment strings. This also affects regular md files.

Here is an example

Screencast_20251205_142419.webm

I use the default Neovim keybinding gcc.

Disabling quarto-nvim solves the issue in md files.

Novim version: v0.11.5
quarto: v1.8.26

Commenting everything in quarto.lua solves the issue for md files.

quarto.lua

return {
  {
    "quarto-dev/quarto-nvim",
    opts = {
      lspFeatures = {
        enabled = true,
        chunks = "curly",
        languages = { "python" },
        completion = { enabled = true },
      },
      codeRunner = {
        enabled = true,
        default_method = "slime",
      },
    },
    dependencies = {
      "jmbuhr/otter.nvim",
      "nvim-treesitter/nvim-treesitter",
    },
    config = function(opts, _)
      require("quarto").setup(opts)
      local runner = require("quarto.runner")
      vim.keymap.set("n", "<localleader>rc", runner.run_cell, { desc = "run cell", silent = true })
      vim.keymap.set("n", "<localleader>ra", runner.run_above, { desc = "run cell and above", silent = true })
      vim.keymap.set("n", "<localleader>rA", runner.run_all, { desc = "run all cells", silent = true })
      vim.keymap.set("n", "<localleader>rl", runner.run_line, { desc = "run line", silent = true })
      vim.keymap.set("v", "<localleader>r", runner.run_range, { desc = "run visual range", silent = true })
      vim.keymap.set("n", "<localleader>RA", function()
        runner.run_all(true)
      end, { desc = "run all cells of all languages", silent = true })
    end,
  },
  {
    "jpalardy/vim-slime",
    config = function()
      vim.g.slime_target = "tmux"
      vim.g.slime_bracketed_paste = 1
      vim.g.slime_cell_delimiter = "# %%"
    end,
    keys = {
      { "<leader>ec", "<Plug>SlimeSendCell<cr>", desc = "Run cell in ipython" },
      { "<leader>cs", "<Plug>SlimeConfig<cr>", desc = "Init slime" },
    },
  },
  { -- directly open ipynb files as quarto docuements
    -- and convert back behind the scenes
    "GCBallesteros/jupytext.nvim",
    opts = {
      custom_language_formatting = {
        python = {
          extension = "qmd",
          style = "quarto",
          force_ft = "quarto",
        },
      },
    },
  },
  {
    "jmbuhr/otter.nvim",
    dependencies = {
      {
        "nvim-treesitter/nvim-treesitter",
      },
    },
    opts = {},
    -- ft = { "markdown", "quarto" },
  },
}

treesitter.lua

return {
  {
    "nvim-treesitter/nvim-treesitter",
    dependencies = {
      "OXY2DEV/markview.nvim",
      "hiphish/rainbow-delimiters.nvim",
    },
    lazy = false,
    build = ":TSUpdate",
    main = "nvim-treesitter.configs", -- Sets main module to use for opts
    -- See `:help nvim-treesitter`
    opts = {
      ensure_installed = {
        "bash",
        "c",
        "diff",
        "lua",
        "luadoc",
        "markdown",
        "markdown_inline",
        "vim",
        "vimdoc",
        "python",
        "cmake",
      },
      -- Autoinstall languages that are not installed
      auto_install = true,
      highlight = {
        enable = true,
        disable = { "tmux" }, -- Poor support
        -- Some languages depend on vim's regex highlighting system (such as Ruby) for indent rules.
        --  If you are experiencing weird indenting issues, add the language to
        --  the list of additional_vim_regex_highlighting and disabled languages for indent.
        additional_vim_regex_highlighting = { "ruby" },
      },
      indent = { enable = true, disable = { "ruby", "cmake" } },
    },
    -- There are additional nvim-treesitter modules that you can use to interact
    -- with nvim-treesitter. You should go explore a few and see what interests you:
    --
    --    - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod`
    --    - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context
    --    - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects
  },
}

markdown.lua

-- [[ Markdown preview ]]
return {
  {
    "OXY2DEV/markview.nvim",
    dependencies = {
      "saghen/blink.cmp",
      "bullets-vim/bullets.vim",
    },
    lazy = false,
    -- priority = 49,
    ---@type markview.config
    opts = {
      preview = {
        hybrid_modes = { "n" },
        enable_hybrid_mode = true,
        linewise_hybrid_mode = false,
      },
      yaml = { enable = true },
    },
  },
  {
    "HakonHarnes/img-clip.nvim",
    event = "VeryLazy",
    opts = {
      filetypes = {
        markdown = {
          copy_images = true,
          relative_to_current_file = true,
        },
      },
    },
    keys = {
      -- suggested keymap
      { "<leader>p", "<cmd>PasteImage<cr>", desc = "Paste image from system clipboard" },
    },
  },
  {
    "3rd/image.nvim",
    build = false, -- so that it doesn't build the rock https://github.com/3rd/image.nvim/issues/91#issuecomment-2453430239
    opts = {
      processor = "magick_cli",
      scale_factor = 0.5,
      integrations = {
        markdown = {
          clear_in_insert_mode = true,
          only_render_image_at_cursor = true,
          only_render_image_at_cursor_mode = "popup",
          floating_windows = true,
        },
      },
    },
  },
  {
    "dhruvasagar/vim-table-mode",
    keys = {
      { "<leader>tm", "<cmd>TableModeToggle<cr>", desc = "Toggles table mode", ft = { "markdown" } },
    },
  },
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions