From fe0166970e6a35a307f9d81354f5dc299f8d7b63 Mon Sep 17 00:00:00 2001 From: Maciej Jur Date: Fri, 14 Jun 2024 22:49:23 +0200 Subject: [PATCH] nvim: better tabs --- nvim/lua/config/keymaps.lua | 14 +++++++------- nvim/lua/config/keymaps/indent.lua | 9 +++++++++ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/nvim/lua/config/keymaps.lua b/nvim/lua/config/keymaps.lua index 3d41507..939625c 100644 --- a/nvim/lua/config/keymaps.lua +++ b/nvim/lua/config/keymaps.lua @@ -1,9 +1,10 @@ local indent = require 'config.keymaps.indent' -local map = require 'config.helpers.keymap' -local n = map 'n' -local v = map 'v' -local t = map 't' -local nv = map {'n', 'v'} +local map = require 'config.helpers.keymap' +local n = map 'n' +local i = map 'i' +local v = map 'v' +local t = map 't' +local nv = map { 'n', 'v' } @@ -21,13 +22,12 @@ n '' 'j' 'Window: move down' n '' 'k' 'Window: move up' n '' 'l' 'Window: move right' - -- Indentation +i '' (indent.smart_tab) { 'Indent', expr = true } v '>' '>gv' 'Indent right' v '<' 'e' (vim.diagnostic.open_float) 'Open error diagnostics' n '[d' (vim.diagnostic.goto_prev) 'Previous diagnostic message' diff --git a/nvim/lua/config/keymaps/indent.lua b/nvim/lua/config/keymaps/indent.lua index f79f71b..397afa7 100644 --- a/nvim/lua/config/keymaps/indent.lua +++ b/nvim/lua/config/keymaps/indent.lua @@ -2,6 +2,15 @@ local get_visual = require 'config.helpers.visual' local M = {} +function M.smarttab() + local col = vim.fn.col '.' + if col == 1 or vim.fn.getline('.'):sub(1, col - 1):match '^%s*$' then + return '\t' + else + return string.rep(' ', vim.bo.tabstop or 2) + end +end + function M.normalize() local c = vim.fn.getpos '.' local s = get_visual()