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

bug: Injected with indentation Rust code breaks Markdown formatting #606

Open
2 tasks done
aitvann opened this issue Dec 24, 2024 · 0 comments
Open
2 tasks done

bug: Injected with indentation Rust code breaks Markdown formatting #606

aitvann opened this issue Dec 24, 2024 · 0 comments
Labels
bug Something isn't working

Comments

@aitvann
Copy link

aitvann commented Dec 24, 2024

Neovim version (nvim -v)

NVIM v0.10.2

Operating system/version

NixOS unstable-d70bd19e0a38ad4790d3913bf08fcbfc9eeca507

Read debugging tips

Add the debug logs

  • I have set log_level = vim.log.levels.DEBUG and pasted the log contents below.

Log file

2024-12-25 01:49:03[DEBUG] Running formatters on /home/aitvann/playground/conform/example.md: { "injected" }
2024-12-25 01:49:03[INFO] Run injected on /home/aitvann/playground/conform/example.md
2024-12-25 01:49:03[DEBUG] Injected format rust:10:11: { "rustfmt" }
2024-12-25 01:49:04[INFO] Run rustfmt on /home/aitvann/playground/conform/example.md.1.rs
2024-12-25 01:49:04[DEBUG] Run command: { "/nix/store/qpma970g7a0a36qdqrp6aqagynkriygd-rust-default-1.83.0/bin/rustfmt", "--emit=stdout", "--edition=2021" }
2024-12-25 01:49:04[DEBUG] Run default CWD: /home/aitvann/playground/conform
2024-12-25 01:49:04[DEBUG] Injected format rust:8:9: { "rustfmt" }
2024-12-25 01:49:04[INFO] Run rustfmt on /home/aitvann/playground/conform/example.md.3.rs
2024-12-25 01:49:04[DEBUG] Run command: { "/nix/store/qpma970g7a0a36qdqrp6aqagynkriygd-rust-default-1.83.0/bin/rustfmt", "--emit=stdout", "--edition=2021" }
2024-12-25 01:49:04[DEBUG] Run default CWD: /home/aitvann/playground/conform
2024-12-25 01:49:04[DEBUG] Injected format rust:5:7: { "rustfmt" }
2024-12-25 01:49:04[INFO] Run rustfmt on /home/aitvann/playground/conform/example.md.5.rs
2024-12-25 01:49:04[DEBUG] Run command: { "/nix/store/qpma970g7a0a36qdqrp6aqagynkriygd-rust-default-1.83.0/bin/rustfmt", "--emit=stdout", "--edition=2021" }
2024-12-25 01:49:04[DEBUG] Run default CWD: /home/aitvann/playground/conform
2024-12-25 01:49:04[INFO] rustfmt exited with code 1
2024-12-25 01:49:04[DEBUG] rustfmt stdout: { "" }
2024-12-25 01:49:04[DEBUG] rustfmt stderr: { "error: unexpected closing delimiter: `}`", " --> <stdin>:1:1", "  |", "1 | }", "  | ^ unexpected closing delimiter", "", "" }
2024-12-25 01:49:04[ERROR] Formatter 'rustfmt' error: error: unexpected closing delimiter: `}`
 --> <stdin>:1:1
  |
1 | }
  | ^ unexpected closing delimiter


2024-12-25 01:49:04[INFO] rustfmt exited with code 1
2024-12-25 01:49:04[DEBUG] rustfmt stdout: { "" }
2024-12-25 01:49:04[DEBUG] rustfmt stderr: { "error: expected item, found keyword `let`", " --> <stdin>:1:1", "  |", "1 | let a = a;", "  | ^^^ consider using `const` or `static` instead of `let` for global variables", "", "" }
2024-12-25 01:49:04[ERROR] Formatter 'rustfmt' error: error: expected item, found keyword `let`
 --> <stdin>:1:1
  |
1 | let a = a;
  | ^^^ consider using `const` or `static` instead of `let` for global variables


2024-12-25 01:49:04[DEBUG] rustfmt exited with code 0
2024-12-25 01:49:04[ERROR] error formatting log line: '{
  code = 6,
  message = "Formatter 'rustfmt' error: error: unexpected closing delimiter: `}`\n --> <stdin>:1:1\n  |\n1 | }\n  | ^ unexpected closing delimiter\n\n"
}' args {
  n = 0
}

Describe the bug

formatting works as expected when code block does not have indentation.:

1.  first line

``` rust
// hi


fn foo(a: u8) {
    let a = a;
    let b = a       ;
}
\```

but if I indent the code block to be the part of a list like this:

1.  first line

    ``` rust
    // hi
    

    fn foo(a: u8) {
        let a = a;
        let b = a       ;
    }
   \ ```

it breaks half way through (notice a blank line disappeared but ; stayed at the same place:

1.  first line

    ``` rust
    // hi
    
    fn foo(a: u8) {
        let a = a;
        let b = a       ;
    }
    \```

What is the severity of this bug?

breaking (some functionality is broken)

Steps To Reproduce

example Markdown file:

1.  first line

    ``` rust
    // hi
    

    fn foo(a: u8) {
        let a = a;
        let b = a       ;
    }
   \ ```

Expected Behavior

the expected Markdown file:

1.  first line

    ``` rust
    // hi

    fn foo(a: u8) {
        let a = a;
        let b = a;
    }
    \```

Minimal example file

1.  first line

    ``` rust
    // hi
    

    fn foo(a: u8) {
        let a = a;
        let b = a       ;
    }
   \ ```

Minimal init.lua

-- DO NOT change the paths and don't remove the colorscheme
local root = vim.fn.fnamemodify("./.repro", ":p")

-- set stdpaths to use .repro
for _, name in ipairs({ "config", "data", "state", "cache" }) do
  vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name
end

-- bootstrap lazy
local lazypath = root .. "/plugins/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({
    "git",
    "clone",
    "--filter=blob:none",
    "--single-branch",
    "https://github.com/folke/lazy.nvim.git",
    lazypath,
  })
end
vim.opt.runtimepath:prepend(lazypath)

-- install plugins
local plugins = {
  "folke/tokyonight.nvim",
  {
    "stevearc/conform.nvim",
    config = function()
      require("conform").setup({
        log_level = vim.log.levels.DEBUG,
        -- add your config here
      })
    end,
  },
  -- add any other plugins here
}
require("lazy").setup(plugins, {
  root = root .. "/plugins",
})

vim.cmd.colorscheme("tokyonight")
-- add anything else here

require('conform').setup({
    formatters_by_ft = {
        sql = { "injected", lsp_format = "last" },
        rust = { "injected", lsp_format = "last" },
        markdown = { "injected", lsp_format = "last" },
    },
    formatters = {
        injected = {
            options = {
                ignore_errors = false,
                lang_to_formatters = {
                    sql = { "sqlfluff" },
                    rust = { "rustfmt" },
                },
            },

        }
    }
})

Additional context

No response

@aitvann aitvann added the bug Something isn't working label Dec 24, 2024
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

1 participant