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: Nested injection does not get formatted #607

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

bug: Nested injection does not get formatted #607

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 02:19:21[DEBUG] Running formatters on /home/aitvann/playground/conform/example-nested.md: { "injected" }
2024-12-25 02:19:21[INFO] Run injected on /home/aitvann/playground/conform/example-nested.md
2024-12-25 02:19:21[DEBUG] Injected format rust:5:10: { "rustfmt" }
2024-12-25 02:19:21[INFO] Run rustfmt on /home/aitvann/playground/conform/example-nested.md.1.rs
2024-12-25 02:19:21[DEBUG] Run command: { "/nix/store/qpma970g7a0a36qdqrp6aqagynkriygd-rust-default-1.83.0/bin/rustfmt", "--emit=stdout", "--edition=2021" }
2024-12-25 02:19:21[DEBUG] Run default CWD: /home/aitvann/playground/conform
2024-12-25 02:19:21[DEBUG] rustfmt exited with code 0
2024-12-25 02:19:21[DEBUG] Running LSP formatter on /home/aitvann/playground/conform/example-nested.md

Describe the bug

Nested SQL injection in Rust code snippet inside Markdown file does not get formatted

# Some Header


``` rust
fn foo(a: u8) {
    let a = a;
    let b = a ;
    sqlx::query!("SELECT name     , age from users   ;");
}
\```

instead I get formatting for everything but SQL (notice blank line gone, ; at the right place but SQL untouched)

# Some Header

``` rust
fn foo(a: u8) {
    let a = a;
    let b = a;
    sqlx::query!("SELECT name     , age from users   ;");
}
\```

What is the severity of this bug?

minor (annoyance)

Steps To Reproduce

example Markdown file:

# Some Header


``` rust
fn foo(a: u8) {
    let a = a;
    let b = a ;
    sqlx::query!("SELECT name     , age from users   ;");
}
\```

Expected Behavior

I would expect to get something like this:

# Some Header

``` rust
fn foo(a: u8) {
    let a = a;
    let b = a;
    sqlx::query!(
        "SELECT
            name,
            age
        FROM users;"
    );
}
\```

Minimal example file

# Some Header


``` rust
fn foo(a: u8) {
    let a = a;
    let b = a ;
    sqlx::query!("SELECT name     , age from users   ;");
}
\```

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