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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions