summaryrefslogtreecommitdiff
path: root/lua/talha/functions.lua
blob: b75185bf2c7089d2491de2ff46ae30fc70821e79 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
local Path = require"plenary.path"

function GetCurrFileName()
  local filename = vim.api.nvim_buf_get_name(0)
  return filename
end

function CreateDailyNote()
    local file_path = vim.api.nvim_buf_get_name(0)
    local dir_path = file_path
    local path_obj = Path:new(file_path)

    if path_obj:is_file() == true then
        path_obj = path_obj:parent()    -- get the parent directory
        dir_path = path_obj:_fs_filename()
    end

    local today_date_fmt = os.date('%Y-%m-%d')
    local daily_note_file_name = today_date_fmt .. '.md'
    local daily_note_file_obj = path_obj:joinpath(daily_note_file_name)

    local template_file_name = '.daily-notes-template.md'
    local template_file_obj = path_obj:joinpath(template_file_name)

    local status = template_file_obj:copy({destination=daily_note_file_obj})

    -- check if operation was a success
    if status[daily_note_file_obj] == false then
        print('Error! failed to create daily note')
        print([[Possible Causes:
        1. No `.daily-notes-template.md` found
        2. Something went wrong with copy, in which case check nvim config]])
        return
    end

    vim.cmd('e ' .. daily_note_file_obj:_fs_filename())
end

local function _ReloadConfigsInPath(path_selector)
    local config_paths = vim.fn.glob(path_selector, true, true)

    for _, filepath in ipairs(config_paths) do
        dofile(filepath)
    end
end

function ReloadLuaConfig()
    for name,_ in pairs(package.loaded) do
        if name:match('^linux') then
            package.loaded[name] = nil
        end
    end

    -- Reload init/ directory
    local lua_path_selector = vim.fn.stdpath('config') .. '/lua/**/*.lua'
    _ReloadConfigsInPath(lua_path_selector)

    local after_path_selector = vim.fn.stdpath('config') .. '/after/**/*.lua'
    _ReloadConfigsInPath(after_path_selector)

    print('Nvim configurations reloaded')
end

function ToggleSpellCheck()
    vim.opt.spell = not(vim.opt.spell:get())
    vim.opt.spelllang = 'en_us'
end

function SetFocusColors(mode)
  vim.o.background = "light"
  vim.opt.cursorline = false
  vim.cmd("colorscheme vscode")
end

function GetHomeDir()
  -- for linux/mac
  local home = os.getenv("HOME")
  -- for windows
  local user_profile = os.getenv("UserProfile")

  if home ~= nil then
    return home
  elseif user_profile ~= nil then
    return user_profile
  end
  return nil
end

function GetPlatformBuildCommand()
  os_ver = vim.loop.os_uname().sysname
  local build_command = ''
  if os_ver == 'Linux' then
    build_command = [[./build.sh]]
  elseif os_ver == 'Windows' then
    build_command = [[build.bat]]
  end
  return build_command
end

function SafeCListNav(navdir)
  -- dir:
  --  1 is cnext (forwards)
  -- -1 is cprev (backwards)
  local dircmd = ''
  if navdir == 1 then
    dircmd = 'cnext'
  elseif navdir == -1 then
    dircmd = 'cprev'
  end
  local status, result = pcall(vim.cmd, dircmd)

  if status == false then
    return nil
  end
end