Created
August 17, 2024 16:52
-
-
Save rootiest/0af6af33abb036219334dffc092ec491 to your computer and use it in GitHub Desktop.
NeoVim Utility Functions
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- ╭─────────────────────────────────────────────────────────╮ | |
-- │ 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