Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Highlights things that are not comments when highlight.comments_only = true #145

Closed
mrjones2014 opened this issue Oct 27, 2022 · 6 comments · Fixed by #174
Closed

Highlights things that are not comments when highlight.comments_only = true #145

mrjones2014 opened this issue Oct 27, 2022 · 6 comments · Fixed by #174

Comments

@mrjones2014
Copy link

For example, the lines with WARN and INFO will get highlighted:

local icon_map = {
  [vim.diagnostic.severity.ERROR] = icons.Error,
  [vim.diagnostic.severity.WARN] = icons.Warn,
  [vim.diagnostic.severity.INFO] = icons.Info,
  [vim.diagnostic.severity.HINT] = icons.Hint,
}
@mrjones2014
Copy link
Author

image

@folke
Copy link
Owner

folke commented Oct 27, 2022

It doesn't for me. What's your setup?

@folke
Copy link
Owner

folke commented Oct 27, 2022

It really looks like you have config.highlight.comments_only = false

@mrjones2014
Copy link
Author

Here's my full packer plugin spec:

return {
  'folke/todo-comments.nvim',
  config = function()
    -- See result with below comments
    -- TODO a todo message
    -- FIX Fix me
    -- BUG this is a bug
    -- PERF performance note
    -- NOTE just a note
    -- HACK this is a hack
    -- WARN this is a warning
    -- WARNING this is also a warning
    --
    -- TODO with a very long
    --      multiline comment
    require('todo-comments').setup({
      highlight = {
        pattern = [[.*<(KEYWORDS)\s*]],
        keyword = 'bg',
        comments_only = true,
      },
    })
  end,
}

I think it is the highlight.pattern that is messing it up -- I wanted to exclude the trailing : on the keywords (so TODO some comment instead of TODO: some comment), but it seems that messes with the highlighting in the way described

@breneser
Copy link

Having the exact same issue with the following setup. I just changed the pattern to include TODO(skfskdjf):

require("todo-comments").setup {
  signs = true, -- show icons in the signs column
  sign_priority = 8, -- sign priority
  -- keywords recognized as todo comments
  keywords = {
    FIX = {
      icon = "", -- icon used for the sign, and in search results
      color = "error", -- can be a hex color, or a named color (see below)
      alt = { "FIXME", "BUG", "FIXIT", "ISSUE" }, -- a set of other keywords that all map to this FIX keywords
      -- signs = false, -- configure signs for some keywords individually
    },
    TODO = { icon = "", color = "info" },
    -- HACK = { icon = " ", color = "warning" },
    -- WARN = { icon = " ", color = "warning", alt = { "WARNING", "XXX" } },
    -- PERF = { icon = " ", alt = { "OPTIM", "PERFORMANCE", "OPTIMIZE" } },
    -- NOTE = { icon = " ", color = "hint", alt = { "INFO" } },

  },
  gui_style = {
    fg = "NONE", -- The gui style to use for the fg highlight group.
    bg = "BOLD", -- The gui style to use for the bg highlight group.
  },
  merge_keywords = true, -- when true, custom keywords will be merged with the defaults
  -- highlighting of the line containing the todo comment
  -- * before: highlights before the keyword (typically comment characters)
  -- * keyword: highlights of the keyword
  -- * after: highlights after the keyword (todo text)

  highlight = {
    before = "", -- "fg" or "bg" or empty
    keyword = "bg", -- "fg", "bg", "wide", "wide_bg", "wide_fg" or empty. (wide and wide_bg is the same as bg, but will also highlight surrounding characters, wide_fg acts accordingly but with fg)
    after = "fg", -- "fg" or "bg" or empty
    pattern = [[.*<(KEYWORDS)\s*(\(.*\))?\s*:]], -- pattern or table of patterns, used for highlightng (vim regex)
    comments_only = true, -- uses treesitter to match keywords in comments only
    max_line_len = 400, -- ignore lines longer than this
    exclude = {}, -- list of file types to exclude highlighting
  },
  -- list of named colors where we try to extract the guifg from the
  -- list of highlight groups or use the hex color if hl not found as a fallback
  colors = {
    error = { "DiagnosticError", "ErrorMsg", "#DC2626" },
    warning = { "DiagnosticWarning", "WarningMsg", "#FBBF24" },
    info = { "DiagnosticInfo", "#2563EB" },
    hint = { "DiagnosticHint", "#10B981" },
    default = { "Identifier", "#7C3AED" },
    test = { "Identifier", "#FF00FF" }
  },
  search = {
    command = "rg",
    args = {
      "--color=never",
      "--no-heading",
      "--with-filename",
      "--line-number",
      "--column",
    },
    -- regex that will be used to match keywords.
    -- don't replace the (KEYWORDS) placeholder
    pattern = [[\b(KEYWORDS)\s*(\(.*\))?\s*:]], -- ripgrep regex
    -- pattern = [[\b(KEYWORDS)\b]], -- match without the extra colon. You'll likely get false positives
  },
}

@folke folke closed this as completed in 1814fec Oct 27, 2022
@folke
Copy link
Owner

folke commented Oct 27, 2022

My bad. Fixed!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants