Skip to content

Key Value confusion / misallignment in core.integrations.treesitter.get_document_metadata() #51

@ghost

Description

Prerequisites

  • I am using the latest stable release of Neovim
  • I am using the latest version of the plugin

Neovim Version

NVIM v0.9.0 Build type: Release LuaJIT 2.1.0-beta3

Neorg setup

require('neorg').setup {
  load = { 
    ["core.defaults"] = {}, 
    ["core.dirman"] = { -- Manages Neorg workspaces
    config = {
      workspaces = {
        -- TODO: get a good subfolder structure here that mirrors my actual dirs
        general = "~/Notes/general",
        work =  "~/Notes/work",
        uni =   "~/Notes/uni"
      }
    }
  },
  ["core.journal"] = { 
    config = {
      strategy = "flat"
    }
  },
  ["core.export"] = {}, 
  -- manoeuvre has been depreceated since 1.0.0
  -- ["core.manoeuvre"] = {}, 
  ["core.concealer"] = {}, 
  ["core.summary"] = {
    config = {
      -- switch to headings when ready
      strategy = "metadata"
    }
  }, 
  -- will work in nvim 0.10 
  -- ["core.ui.calendar"] = {}, 
  ["core.presenter"] = {
    config = { 
      zen_mode = "truezen" 
    }
  }, 
  ["core.integrations.telescope"] = {},
  ["external.auto-cats"] = {},
},
}

require('nvim-treesitter.configs').setup {
  ensure_installed = { "norg" --[[ other parsers you would wish to have ]] },
  highlight = { 
    -- Be sure to enable highlights if you haven't!
    enable = true,
  }
}

Actual behavior

I started on a plugin that is supposed to auto inject and update the metadata categories. It also directories from the path relative to the workspace. The full plugin is at https://github.com/git-girl/neorg-auto-cats.
For updating the metadata if it is already there i used the core.integrations.treesitter.get_document_metadata() method. when printing out the returned table i get:

{
  categories = "created: 2023-05-23",
  description = "authors: cherry-cat",
  title = "index",
  updated = "2023-05-28",
  version = "1.1.1"
}

the actual metadata is this though:

@document.meta
title: index
description: 
authors: cherry-cat
categories: 
created: 2023-05-23
updated: 2023-05-28
version: 1.1.1
@end

So the empty attributes are being filled with the key and value of the one below.

I think this is actually an issue in nvim-neorg/tree-sitter-norg as the video shows that the key value pairs are mismatched in treesitter.

Expected behavior

For core.integration.treesitter.get_document_metadata() to return :
{
categories = "",
created: "2023-05-23",
description = ""
authors: cherry-cat,
title = "index",
updated = "2023-05-28",
version = "1.1.1"
}

when the document has this metadata: 
```norg 
@document.meta
title: index
description: 
authors: cherry-cat
categories: 
created: 2023-05-23
updated: 2023-05-28
version: 1.1.1
@end

Steps to reproduce

  1. Open a .norg file
  2. Run :Neorg inject_metadata (that leaves empty metadata attributes)
  3. Run :lua print(vim.inspect(neorg.modules.get_module('core.integrations.treesitter').get_document_metadata()))

Potentially conflicting plugins

This is my packer setup idk if i messed stuff up there:

    use {
      'nvim-neorg/neorg',
      after = { "nvim-treesitter" }, -- You may want to specify Telescope here as well
      requires = { 
        {'nvim-lua/plenary.nvim' },
        {'Pocco81/true-zen.nvim'},
        {'nvim-neorg/neorg-telescope'},
      }, 
      run = ":Neorg sync-parsers",
    } 

Other information

:TSInstallInfo shows:

norg              [✓] installed
norg_meta         [✓] installed

Here is a video showing that there is something wrong with the actual treesitter symbols:
https://asciinema.org/a/X9LbaVZjO1cpIRt3nIdkwPPtA

Help

I dont know i'll try checkig stuff out and if i see an easy fix then id make a pr but i dont know C at even a basic level and am scared of it.

Implementation help

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