aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-06-24 13:29:56 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-06-24 13:30:07 +0200
commit7fa70995b70a68ccd3510d195aa489ff058f5987 (patch)
tree38ec7c6c1214951de50586bf4a12032ad1e44e76
parentmodules/nvim/plgs: Remove unused plugins (diff)
downloadnixos-config-7fa70995b70a68ccd3510d195aa489ff058f5987.zip
modules/nvim/plgs/femaco: Use the nixvim module
We still import the config as lua file, as it is essentially just callback functions, which would result in strings and `__raw` in nix.
-rw-r--r--modules/by-name/nv/nvim/plgs/femaco/default.nix10
-rw-r--r--modules/by-name/nv/nvim/plgs/femaco/lua/femaco.lua50
2 files changed, 39 insertions, 21 deletions
diff --git a/modules/by-name/nv/nvim/plgs/femaco/default.nix b/modules/by-name/nv/nvim/plgs/femaco/default.nix
index a30bb59f..0388844a 100644
--- a/modules/by-name/nv/nvim/plgs/femaco/default.nix
+++ b/modules/by-name/nv/nvim/plgs/femaco/default.nix
@@ -8,7 +8,6 @@
# You should have received a copy of the License along with this program.
# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
- pkgs,
lib,
config,
...
@@ -16,13 +15,14 @@
cfg = config.soispha.programs.nvim;
in {
home-manager.users.soispha.programs.nixvim = lib.mkIf cfg.enable {
- # TODO: package femaco through a module
+ plugins.femaco = {
+ enable = true;
+ };
+
extraConfigLuaPost = ''
${lib.strings.fileContents ./lua/femaco.lua}
'';
- extraPlugins = [
- pkgs.vimPlugins.nvim-FeMaco-lua
- ];
+
keymaps = [
{
key = "<leader>cc";
diff --git a/modules/by-name/nv/nvim/plgs/femaco/lua/femaco.lua b/modules/by-name/nv/nvim/plgs/femaco/lua/femaco.lua
index 1371a825..50a6cb23 100644
--- a/modules/by-name/nv/nvim/plgs/femaco/lua/femaco.lua
+++ b/modules/by-name/nv/nvim/plgs/femaco/lua/femaco.lua
@@ -8,7 +8,9 @@
-- You should have received a copy of the License along with this program.
-- If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+
local clip_val = require("femaco.utils").clip_val
+
require("femaco").setup({
-- should prepare a new buffer and return the winid
-- by default opens a floating window
@@ -17,7 +19,8 @@ require("femaco").setup({
prepare_buffer = function(opts)
local buf = vim.api.nvim_create_buf(false, false)
return vim.api.nvim_open_win(buf, true, opts)
- end,
+ end;
+
-- should return options passed to nvim_open_win
-- @param code_block: data about the code-block with the keys
-- * range
@@ -25,30 +28,43 @@ require("femaco").setup({
-- * lang
float_opts = function(code_block)
return {
- relative = "cursor",
- width = clip_val(5, 120, vim.api.nvim_win_get_width(0) - 10), -- TODO: how to offset sign column etc?
- height = clip_val(5, #code_block.lines, vim.api.nvim_win_get_height(0) - 6),
- anchor = "NW",
- row = 0,
- col = 0,
- style = "minimal",
- border = "rounded",
- zindex = 1,
+ relative = "cursor";
+ width = clip_val(5, 120, vim.api.nvim_win_get_width(0) - 10); -- TODO how to offset sign column etc?
+ height = clip_val(5, #code_block.lines, vim.api.nvim_win_get_height(0) - 6);
+ anchor = "NW";
+ row = 0;
+ col = 0;
+ style = "minimal";
+ border = "rounded";
+ zindex = 1;
}
- end,
+ end;
+
-- return filetype to use for a given lang
-- lang can be nil
- ft_from_lang = function(lang) return lang end,
+ ft_from_lang = function(lang)
+ return lang
+ end;
+
-- what to do after opening the float
- post_open_float = function(winnr) vim.wo.signcolumn = "no" end,
+ post_open_float = function(winnr)
+ vim.wo.signcolumn = "no"
+ end;
+
-- create the path to a temporary file
- create_tmp_filepath = function(filetype) return os.tmpname() end,
+ create_tmp_filepath = function(filetype)
+ return os.tmpname()
+ end;
+
-- if a newline should always be used, useful for multiline injections
-- which separators needs to be on separate lines such as markdown, neorg etc
-- @param base_filetype: The filetype which FeMaco is called from, not the
-- filetype of the injected language (this is the current buffer so you can
-- get it from vim.bo.filetyp).
- ensure_newline = function(base_filetype) return false end,
+ ensure_newline = function(base_filetype)
+ return base_filetype == "nix"
+ end;
+
-- Return true if the indentation should be normalized. Useful when the
-- injected language inherits indentation from the construction scope (e.g. an
-- inline multiline sql string). If true, the leading indentation is detected,
@@ -57,5 +73,7 @@ require("femaco").setup({
-- @param base_filetype: The filetype which FeMaco is called from, not the
-- filetype of the injected language (this is the current buffer, so you can
-- get it from vim.bo.filetype).
- normalize_indent = function(base_filetype) return false end,
+ normalize_indent = function(base_filetype)
+ return base_filetype == "nix"
+ end;
})