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

Folding is not respected when using org_move_subtree_up or org_move_subtree_down #899

Open
lyz-code opened this issue Feb 7, 2025 · 3 comments
Labels
bug Something isn't working

Comments

@lyz-code
Copy link

lyz-code commented Feb 7, 2025

Describe the bug

When moving headlines with those bindings the foldings are not respected

Steps to reproduce

Using the next file as a base:

* heading 1
** subheading 2
** subheading 3
*** subsubheading 1
    text
**** subsubsubheading1
    text
  • If you unfold the first level and use org_move_subtree_up on the subheading 3, it will move the headline but it will fold everything so that you only see heading 1
  • If you show the folds below subheading 3 (but not enough to see subsubsubheading1) and use org_move_subtree_down, then all folds are open:

Image

Expected behavior

Folds are respected when moving headlines around

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.loop.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({
				org_agenda_files = {
					"*.org",
				},
			})
		end,
	},
}, {
	root = lazy_root,
	lockfile = nvim_root .. "/lazy.json",
	install = {
		missing = false,
	},
})

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

Screenshots and recordings

No response

OS / Distro

Linux

Neovim version/commit

0.10.4

Additional context

No response

@lyz-code lyz-code added the bug Something isn't working label Feb 7, 2025
@kristijanhusak
Copy link
Member

Does it set up folds correctly after you recalculate them after with zx ?
This is a common Neovim issue. When Things are moved around, recalculating folds is often necessary.

@lyz-code
Copy link
Author

lyz-code commented Feb 7, 2025

Not perfectly but it does improve it a little bit. The problem is when you want to move a heading several steps up or down. You can always cut and paste it but still.

I'm fine with closing it if you feel it's a neovim issue

@kristijanhusak
Copy link
Member

Yes, it's usually a Neovim issue.
If you check the docs https://neovim.io/doc/user/fold.html#zx, it mentions this issue:

Also forces recomputing folds. This is useful when using
'foldexpr' and the buffer is changed in a way that results in
folds not to be updated properly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants