From 01444ab8a505deedb2651d6470985e8aef2d93ff Mon Sep 17 00:00:00 2001 From: kossLAN Date: Fri, 31 Jan 2025 01:43:21 -0500 Subject: [PATCH] nvim/qml: add autoformatting script --- nix/neovim-overlay.nix | 1 + nvim/ftplugin/qml.lua | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 nvim/ftplugin/qml.lua diff --git a/nix/neovim-overlay.nix b/nix/neovim-overlay.nix index ff2afaa..3951922 100644 --- a/nix/neovim-overlay.nix +++ b/nix/neovim-overlay.nix @@ -117,6 +117,7 @@ with final.pkgs.lib; let stylua # lua formatter rustfmt # rust formatter prettierd # typescript/javascript formatter + qt6.qtdeclarative # google-java-format # java formatter based off google guidelines # misc diff --git a/nvim/ftplugin/qml.lua b/nvim/ftplugin/qml.lua new file mode 100644 index 0000000..36a74a6 --- /dev/null +++ b/nvim/ftplugin/qml.lua @@ -0,0 +1,27 @@ +if vim.fn.executable('qmlformat') ~= 1 then + return +end + +-- Stupid conform doesn't support qmlformat, and I don't want to download a +-- whole new fucking plugin so uh yea this is it ig. +vim.api.nvim_create_autocmd('BufWritePre', { + pattern = '*.qml', + callback = function() + local bufnr = vim.api.nvim_get_current_buf() + local filename = vim.api.nvim_buf_get_name(bufnr) + local cmd = string.format('qmlformat -i "%s"', filename) + + local output = vim.fn.system(cmd) + local error_code = vim.v.shell_error + + if error_code ~= 0 then + vim.notify( + string.format('qmlformat failed (code %d):\nCommand: %s\nOutput: %s', error_code, cmd, output), + vim.log.levels.ERROR + ) + end + + vim.api.nvim_buf_set_option(bufnr, 'modified', false) + vim.cmd('edit!') + end, +})