Skip to content

notification engine is slow and causes main UI thread to be blocked #1118

@dtvillafana

Description

@dtvillafana

Describe the bug

notification engine is slow and causes main UI thread to be blocked.
I have many org files with 1000+ lines, and when notifications are enabled, the UI will periodically freeze when fetching notifications

checkhealth

==============================================================================
orgmode: ✅

Orgmode ~

  • ✅ OK Tree-sitter grammar is installed, but not by nvim-orgmode plugin. Any issues or version mismatch will need to be handled manually.
    If you want nvim-orgmode to manage the parser installation (recommended), remove the installed parser at "nil" and restart Neovim.
  • ✅ OK Setup called
  • ✅ OK org_agenda_files configured
  • ✅ OK org_default_notes_file configured

Steps to reproduce

Have 30+ org files with 1000+ lines of scheduled headers in each.

Expected behavior

UI does not freeze

Emacs functionality

No response

Minimal init.lua

local tmp_dir = vim.env.TMPDIR or vim.env.TMP or vim.env.TEMP or '/tmp'
local nvim_root = tmp_dir .. '/nvim_orgmode'
local lazy_root = nvim_root .. '/lazy'
local lazypath = lazy_root .. '/lazy.nvim'

for _, name in ipairs({ 'config', 'data', 'state', 'cache' }) do
  vim.env[('XDG_%s_HOME'):format(name:upper())] = nvim_root .. '/' .. name
end

-- Install lazy.nvim if not already installed
if not vim.uv.fs_stat(lazypath) then
  vim.fn.system({
    'git',
    'clone',
    '--filter=blob:none',
    'https://github.com/folke/lazy.nvim.git',
    '--branch=stable', -- latest stable release
    lazypath,
  })
end
vim.opt.rtp:prepend(lazypath)

require('lazy').setup({
  {
    'nvim-orgmode/orgmode',
    event = 'VeryLazy',
    ft = { 'org' },
    config = function()
      require('orgmode').setup(
        { 
          notifications = {
            enabled = true
          }
        }
      )
    end,
  },
}, {
  root = lazy_root,
  lockfile = nvim_root .. '/lazy.json',
  install = {
    missing = false,
  },
})

require('lazy').sync({
  wait = true,
  show = false,
})

Screenshots and recordings

No response

nvim-orgmode version

2fc30d3

OS / Distro

NixOS

Neovim version/commit

0.11.6

Additional context

Here is my nixvim setup that I used to test functionality. https://github.com/dtvillafana/nixvim

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions