LCOV - code coverage report
Current view: top level - /lua/yoda/buffer - state_checker.lua (source / functions) Coverage Total Hit
Test: lcov.info Lines: 100.0 % 53 53
Test Date: 2026-04-14 10:33:13 Functions: - 0 0

            Line data    Source code
       1              : -- lua/yoda/buffer/state_checker.lua
       2              : -- Buffer state checking utilities
       3              : 
       4           43 : local M = {}
       5              : 
       6              : -- ============================================================================
       7              : -- Buffer Name Checks
       8              : -- ============================================================================
       9              : 
      10              : --- Check if a buffer name indicates it's empty or unnamed
      11              : --- @param bufname string Buffer name to check
      12              : --- @return boolean
      13           43 : function M.is_empty_buffer_name(bufname)
      14           16 :   if type(bufname) ~= "string" then
      15            3 :     return true
      16              :   end
      17           13 :   return bufname == "" or bufname == "[No Name]"
      18           43 : end
      19              : 
      20              : --- Check if a buffer name indicates it's a scratch buffer
      21              : --- @param bufname string Buffer name to check
      22              : --- @return boolean
      23           43 : function M.is_scratch_buffer(bufname)
      24           16 :   if type(bufname) ~= "string" then
      25            3 :     return false
      26              :   end
      27           13 :   return bufname == "[Scratch]"
      28           43 : end
      29              : 
      30              : -- ============================================================================
      31              : -- Buffer State Checks
      32              : -- ============================================================================
      33              : 
      34              : --- Check if a buffer is empty or unnamed (but not a scratch buffer)
      35              : --- @param bufnr number|nil Buffer number (default: current buffer)
      36              : --- @return boolean
      37           43 : function M.is_buffer_empty(bufnr)
      38            9 :   bufnr = bufnr or 0
      39              : 
      40            9 :   if not vim.api.nvim_buf_is_valid(bufnr) then
      41            1 :     return true
      42              :   end
      43              : 
      44            8 :   local bufname = vim.api.nvim_buf_get_name(bufnr)
      45              : 
      46              :   -- Don't consider scratch buffers as "empty" for alpha purposes
      47           16 :   if M.is_scratch_buffer(bufname) then
      48              :     return false
      49              :   end
      50              : 
      51            8 :   return M.is_empty_buffer_name(bufname)
      52           43 : end
      53              : 
      54              : --- Check if buffer can be reloaded safely
      55              : --- @param bufnr number|nil Buffer number (default: current buffer)
      56              : --- @return boolean
      57           43 : function M.can_reload_buffer(bufnr)
      58            6 :   bufnr = bufnr or 0
      59              : 
      60            6 :   if not vim.api.nvim_buf_is_valid(bufnr) then
      61            1 :     return false
      62              :   end
      63              : 
      64            5 :   local bo = vim.bo[bufnr]
      65           17 :   return bo.modifiable and bo.buftype == "" and not bo.readonly
      66           43 : end
      67              : 
      68              : --- Check if buffer is a special buffer type (not a regular file)
      69              : --- @param bufnr number|nil Buffer number (default: current buffer)
      70              : --- @return boolean
      71           43 : function M.is_special_buffer(bufnr)
      72            6 :   bufnr = bufnr or 0
      73              : 
      74            6 :   if not vim.api.nvim_buf_is_valid(bufnr) then
      75            1 :     return false
      76              :   end
      77              : 
      78           15 :   return vim.bo[bufnr].buftype ~= ""
      79           43 : end
      80              : 
      81              : --- Check if buffer is a real file buffer
      82              : --- @param bufnr number|nil Buffer number (default: current buffer)
      83              : --- @return boolean
      84           43 : function M.is_real_file_buffer(bufnr)
      85            8 :   bufnr = bufnr or 0
      86              : 
      87            8 :   if not vim.api.nvim_buf_is_valid(bufnr) then
      88            1 :     return false
      89              :   end
      90              : 
      91            7 :   local bo = vim.bo[bufnr]
      92            7 :   local bufname = vim.api.nvim_buf_get_name(bufnr)
      93              : 
      94           23 :   return bo.buftype == "" and bo.filetype ~= "" and bo.filetype ~= "alpha" and bufname ~= ""
      95           43 : end
      96              : 
      97              : --- Check if buffer is modified
      98              : --- @param bufnr number|nil Buffer number (default: current buffer)
      99              : --- @return boolean
     100           43 : function M.is_modified(bufnr)
     101            4 :   bufnr = bufnr or 0
     102              : 
     103            4 :   if not vim.api.nvim_buf_is_valid(bufnr) then
     104            1 :     return false
     105              :   end
     106              : 
     107            9 :   return vim.bo[bufnr].modified
     108           43 : end
     109              : 
     110              : --- Check if buffer is listed
     111              : --- @param bufnr number|nil Buffer number (default: current buffer)
     112              : --- @return boolean
     113           43 : function M.is_listed(bufnr)
     114            4 :   bufnr = bufnr or 0
     115              : 
     116            4 :   if not vim.api.nvim_buf_is_valid(bufnr) then
     117            1 :     return false
     118              :   end
     119              : 
     120            9 :   return vim.bo[bufnr].buflisted
     121           43 : end
     122              : 
     123           43 : return M
        

Generated by: LCOV version 2.0-1