Skip to content

Instantly share code, notes, and snippets.

@rootiest
Created August 17, 2024 16:52
Show Gist options
  • Save rootiest/0af6af33abb036219334dffc092ec491 to your computer and use it in GitHub Desktop.
Save rootiest/0af6af33abb036219334dffc092ec491 to your computer and use it in GitHub Desktop.
NeoVim Utility Functions
-- ╭─────────────────────────────────────────────────────────╮
-- │ FUNCTION DATA │
-- ╰─────────────────────────────────────────────────────────╯
local M = {}
-- Check if the terminal is kitty
function M.is_kitty()
local term = os.getenv("TERM") or ""
local kit = string.find(term, "kitty")
return kit ~= nil
end
-- Check if the terminal is tmux
function M.is_tmux()
local tterm = os.getenv("TERM")
if tterm and string.find(tterm, "screen") then
if os.getenv("TMUX") then
return true
end
else
if tterm and string.find(tterm, "tmux") then
return true
end
end
return false
end
-- Check if the terminal is wezterm
function M.is_wezterm()
local wterm = os.getenv("TERM_PROGRAM")
if wterm and string.find(wterm, "WezTerm") then
return true
end
return false
end
-- Check if the terminal is neovide
function M.is_neovide()
local neovide = vim.g.neovide
if neovide then
return true
end
return false
end
-- Check if the terminal is ssh
function M.is_ssh()
local ssh = os.getenv("SSH_TTY") or false
return ssh
end
-- Check if OS is Windows
function M.is_windows()
local win = vim.fn.has("win32") == 1 or vim.fn.has("win64") == 1
if win then
return true
end
return false
end
-- Check if OS is macOS
function M.is_mac()
local mac = vim.fn.has("macunix")
if mac == 1 then
return true
end
return false
end
-- Check if OS is Linux
function M.is_linux()
local lin = vim.fn.has("unix")
if lin == 1 then
return true
end
return false
end
-- Return the name of the OS
function M.get_os()
--- @diagnostic disable-next-line: undefined-field
local os_name = vim.loop.os_uname().sysname
if os_name == "Windows_NT" then
return "Windows"
elseif os_name == "Darwin" then
return "macOS"
elseif os_name == "Linux" then
-- Check if the system is running Android
--- @diagnostic disable-next-line: undefined-field
if vim.loop.os_getenv("ANDROID_ROOT") then
return "Android"
end
-- Determine the Linux distribution
local distro = "Linux"
local release_file = "/etc/os-release"
local fd = io.open(release_file, "r")
if fd then
for line in fd:lines() do
if line:match("^ID=") then
distro = line:gsub("ID=", ""):gsub('"', "")
break
end
end
fd:close()
end
return "Linux (" .. distro .. ")"
else
-- Falback tests
if M.is_mac() then
return "macOS"
elseif M.is_linux() then
return "Linux"
elseif M.is_windows() then
return "Windows"
else
-- Failed to determine OS
return "Unknown OS"
end
end
end
-- Check if plugin is installed
function M.is_installed(plugin)
return require("lazy.core.config").plugins[plugin] ~= nil
end
return M
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment