diff options
| -rw-r--r-- | lua/startup.lua | 121 | ||||
| -rw-r--r-- | lua/startup/buildingblocks/functions.lua | 27 | ||||
| -rw-r--r-- | lua/startup/buildingblocks/headers.lua | 85 | ||||
| -rw-r--r-- | lua/startup/themes/default.lua | 12 | ||||
| -rw-r--r-- | lua/startup/utils.lua | 1 | ||||
| -rw-r--r-- | settings_skeleton.lua | 6 | 
6 files changed, 189 insertions, 63 deletions
diff --git a/lua/startup.lua b/lua/startup.lua index 7c167b9..94779b0 100644 --- a/lua/startup.lua +++ b/lua/startup.lua @@ -17,6 +17,13 @@ local function create_mappings(mappings)      ":lua require'startup'.check_line()<CR>",      opts    ) +  vim.api.nvim_buf_set_keymap( +    0, +    "n", +    "o", +    "<cmd>lua require('startup').open_file()<CR>", +    opts +  )    for _, cmd in pairs(mappings) do      vim.api.nvim_buf_set_keymap(        0, @@ -46,12 +53,19 @@ function M.check_line()    end  end +function M.open_file() +  local line = vim.api.nvim_get_current_line() +  local filename = line:gsub "(\\/.-)+" +  print(filename) +  vim.cmd("e " .. filename) +end +  local function align(dict, alignment) -  local padding_calculated = 0 -  if settings[current_section].padding < 1 then -    padding_calculated = vim.o.columns * settings[current_section].padding +  local margin_calculated = 0 +  if settings[current_section].margin < 1 then +    margin_calculated = vim.o.columns * settings[current_section].margin    else -    padding_calculated = settings[current_section].padding +    margin_calculated = settings[current_section].margin    end    local aligned = {}    local max_len = utils.longest_line(dict) @@ -62,17 +76,17 @@ local function align(dict, alignment)      end    elseif alignment == "left" then      for _, line in ipairs(dict) do -      table.insert(aligned, spaces(padding_calculated) .. line) +      table.insert(aligned, spaces(margin_calculated) .. line)      end    elseif alignment == "right" then      for _, line in ipairs(dict) do        table.insert(          aligned, -        spaces(vim.o.columns - max_len - padding_calculated - 10) .. line +        spaces(vim.o.columns - max_len - margin_calculated - 10) .. line        )      end    end -  padding_calculated = 0 +  margin_calculated = 0    return aligned  end @@ -119,52 +133,55 @@ end  -- TODO: put inside schedule()  function M.display() -  local parts = { "header", "body", "footer" } -  for _, part in ipairs(parts) do -    current_section = part -    local options = settings[part] -    if options.highlight == "" then -      vim.cmd( -        "highlight Startup" -          .. part -          .. " guifg=" -          .. options.default_color -          .. " guibg=" -          .. settings.colors.background -      ) -      options.highlight = "Startup" .. part -    end -    if options.type == "text" then -      set_lines( -        #options.content, -        options.content, -        options.align, -        options.highlight -      ) -    elseif options.type == "mapping" then -      table.insert(sections_with_mappings, part) -      create_mappings(options.content) -      set_lines( -        #mapping_names(options.content), -        mapping_names(options.content), -        options.align, -        options.highlight -      ) -    end -    if part == "header" then -      empty(settings.options.gap1) -    elseif part == "body" then -      empty(settings.options.gap2 + 1) +  vim.schedule(function() +    U.set_buf_options() +    local parts = { "header", "body", "footer" } +    for _, part in ipairs(parts) do +      current_section = part +      local options = settings[part] +      if options.highlight == "" then +        vim.cmd( +          "highlight Startup" +            .. part +            .. " guifg=" +            .. options.default_color +            .. " guibg=" +            .. settings.colors.background +        ) +        options.highlight = "Startup" .. part +      end +      if options.type == "text" then +        set_lines( +          #options.content, +          options.content, +          options.align, +          options.highlight +        ) +      elseif options.type == "mapping" then +        table.insert(sections_with_mappings, part) +        create_mappings(options.content) +        set_lines( +          #mapping_names(options.content), +          mapping_names(options.content), +          options.align, +          options.highlight +        ) +      end +      if part == "header" then +        empty(settings.options.padding.header_body) +      elseif part == "body" then +        empty(settings.options.padding.body_footer + 1) +      end +      vim.cmd(options.command)      end -    vim.cmd(options.command) -  end -  current_section = "" -  vim.cmd [[silent! %s/\s\+$//]] -- clear trailing whitespace -  U.set_buf_options() -  vim.api.nvim_win_set_cursor(0, { -    #settings.header.content + settings.options.gap1 + 3, -    math.floor(vim.o.columns / 2), -  }) +    current_section = "" +    vim.cmd [[silent! %s/\s\+$//]] -- clear trailing whitespace +    vim.api.nvim_win_set_cursor(0, { +      #settings.header.content + settings.options.padding.header_body + 3, +      math.floor(vim.o.columns / 2), +    }) +    vim.api.nvim_buf_set_option(0, "modifiable", false) +  end)  end  function M.setup(update) diff --git a/lua/startup/buildingblocks/functions.lua b/lua/startup/buildingblocks/functions.lua index 7e103d3..9b4ca2d 100644 --- a/lua/startup/buildingblocks/functions.lua +++ b/lua/startup/buildingblocks/functions.lua @@ -21,7 +21,11 @@ local quotes = {      "",      "- Alan Perlis",    }, -  { "Simplicity does not precede complexity, but follows it.", "", "- Alan Perlis" }, +  { +    "Simplicity does not precede complexity, but follows it.", +    "", +    "- Alan Perlis", +  },    { "Optimization hinders evolution.", "", "- Alan Perlis" },    {      "Recursion is the root of computation since it trades description for time.", @@ -333,7 +337,11 @@ local quotes = {      "",      "Don't get so engrossed in the details that you forget to check what's happening around you.",    }, -  { "Invest regularly in your knowledge portfolio.", "", "Make learning a habit." }, +  { +    "Invest regularly in your knowledge portfolio.", +    "", +    "Make learning a habit.", +  },    {      "It's both what you say and the way you say it.",      "", @@ -678,4 +686,19 @@ function M.quote()    local index = math.random() * #quotes    return quotes[math.floor(index) + 1]  end + +function M.oldfiles(amount) +  local oldfiles = {} +  table.insert(oldfiles, "Press 'o' to open the file under the cursor") +  local count = 0 +  for _, file in ipairs(vim.v.oldfiles) do +    if count == amount then +      break +    end +    table.insert(oldfiles, file) +    count = count + 1 +  end +  return oldfiles +end +  return M diff --git a/lua/startup/buildingblocks/headers.lua b/lua/startup/buildingblocks/headers.lua index 4df1798..344f89a 100644 --- a/lua/startup/buildingblocks/headers.lua +++ b/lua/startup/buildingblocks/headers.lua @@ -53,4 +53,89 @@ function M.neovim_logo()    }  end +function M.pacman() +  return { +    "================================================.", +    "     .-.   .-.     .--.                         |", +    "    | OO| | OO|   / _.-' .-.   .-.  .-.   .''.  |", +    "    |   | |   |   \\  '-. '-'   '-'  '-'   '..'  |", +    "    '^^^' '^^^'    '--'                         |", +    "===============.  .-.  .================.  .-.  |", +    "               | |   | |                |  '-'  |", +    "               | |   | |                |       |", +    "               | ':-:' |                |  .-.  |", +    "42            |  '-'  |                |  '-'  |", +    "==============='       '================'       |", +  } +end + +function M.zelda_logo_big() +  return { +    "              _                                                          ", +    "             /_\\                                                         ", +    "_            )_(            _                                            ", +    "|`-.___,.-~'`|=|`'~-.,___,-'|                                            ", +    "|  __________|=|__________  |                                            ", +    "| |    ______|=|__________| | ___      _      _  _   _             _     ", +    "| |   |  ____|=|_____     / |  |  |_| |_  |  |_ | _ |_ |\\| |\\  /\\ |_     ", +    "| |   | /    |=|    /    /| |  |  | | |_  |_ |_ |_| |_ | | |/  \\/ |      ", +    "| |   |/   ,-|_|-. / /  /_|_|______ ______     _______        ____       ", +    "| |      ,' _____ / // / \\    ___  |\\    /     \\      `.      \\   \\      ", +    "| |     / ,'| A |/ // /   |  |   \\ | |  |       |  |`.  \\     /    \\     ", +    "| |    /_// |/V\\/ // /    |  |    \\| |  |       |  |  \\  \\   /  /\\  \\    ", +    "| |      /__| |/  / /     |  |       |  |       |  |   \\  | /  /  \\  \\   ", +    "| |     /\\  | / /| /\\     |  |__/|   |  |       |  |   |  ||  |    |  |  ", +    "| |    /  \\ |/ // // \\    |   __ |   |  |       |  |   |  ||  |____|  |  ", +    "| |   /    \\/ |/ //   \\   |  |  \\|   |  |       |  |   |  ||   ____   |  ", +    "| |  /     /    //     \\  |  |       |  |       |  |   /  ||  |    |  |  ", +    "| | /     / /  /|       \\ |  |    /| |  |    /| |  |  /  / |  |    |  |  ", +    "| |/_____/ // / |________\\|  |___/ | |  |___/ | |  |,'  /  |  |    |  |  ", +    "| |     / // /| |        /_________|/_________|/______,'  /____\\  /____\\ ", +    "\\ \\    / // / | |       /|/ /_               ___  ___    _   _  _  _ ___ ", +    " \\ \\  /  / /| | |______/ | //_\\  |  | |\\| |/  |/\\  | |_||_  |_)/_\\(_` |  ", +    "  \\ \\/______| | |________|/ | |  |_ | | | |\\  |\\/  | | ||_  |  | |._) |  ", +    "   `.`.     | | |     ,','                                               ", +    "     `.`.   | | |   ,','    _        _        _        _                 ", +    "       `.`-.| | |,-','     |.\\      |.\\      |.\\      |.\\                ", +    "         `-.| | |,-'        \\\\\\      \\\\\\      \\\\\\      \\\\\\               ", +    "            | | |    ________\\\\\\______\\\\\\______\\\\\\______\\\\\\_____________ ", +    "            | | |   | .--  __        __    ,--.        __   __   __| _  |", +    "            | | |   | |-  /  \\ |  | |  `   `--. | | | /  \\ |  ` /  |(_` |", +    "            | | |   | |   \\__/ \\_/| |      .__/ \\/ \\/ \\__/ |    \\__|._) |", +    "            | | |   '---------------------------------------------------'", +    "             \\|/                  \\\\\\ /|   \\\\\\ /|   \\\\\\ /|   \\\\\\ /|      ", +    "              V                  __\\\\V /  __\\\\V /  __\\\\V /  __\\\\V /      ", +    "                                 \\___O/   \\___O/   \\___O/   \\___O/       ", +    "                                     \\/\\      \\/\\      \\/\\      \\/\\      ", +    "                                      \\/\\      \\/\\      \\/\\      \\/\\     ", +    "                                       (O)      (O)      (O)      (O)    ", +  } +end + +function M.doom_nvim() +  return { +    "                                                                              ", +    "=================     ===============     ===============   ========  ========", +    "\\\\ . . . . . . .\\\\   //. . . . . . .\\\\   //. . . . . . .\\\\  \\\\. . .\\\\// . . //", +    "||. . ._____. . .|| ||. . ._____. . .|| ||. . ._____. . .|| || . . .\\/ . . .||", +    "|| . .||   ||. . || || . .||   ||. . || || . .||   ||. . || ||. . . . . . . ||", +    "||. . ||   || . .|| ||. . ||   || . .|| ||. . ||   || . .|| || . | . . . . .||", +    "|| . .||   ||. _-|| ||-_ .||   ||. . || || . .||   ||. _-|| ||-_.|\\ . . . . ||", +    "||. . ||   ||-'  || ||  `-||   || . .|| ||. . ||   ||-'  || ||  `|\\_ . .|. .||", +    "|| . _||   ||    || ||    ||   ||_ . || || . _||   ||    || ||   |\\ `-_/| . ||", +    "||_-' ||  .|/    || ||    \\|.  || `-_|| ||_-' ||  .|/    || ||   | \\  / |-_.||", +    "||    ||_-'      || ||      `-_||    || ||    ||_-'      || ||   | \\  / |  `||", +    "||    `'         || ||         `'    || ||    `'         || ||   | \\  / |   ||", +    "||            .===' `===.         .==='.`===.         .===' /==. |  \\/  |   ||", +    "||         .=='   \\_|-_ `===. .==='   _|_   `===. .===' _-|/   `==  \\/  |   ||", +    "||      .=='    _-'    `-_  `='    _-'   `-_    `='  _-'   `-_  /|  \\/  |   ||", +    "||   .=='    _-'          `-__\\._-'         `-_./__-'         `' |. /|  |   ||", +    "||.=='    _-'                                                     `' |  /==.||", +    "=='    _-'                        N E O V I M                         \\/   `==", +    "\\   _-'                                                                `-_   /", +    " `''                                                                      ``'  ", +    "                                                                               ", +  } +end +  return M diff --git a/lua/startup/themes/default.lua b/lua/startup/themes/default.lua index 3c7fc07..62d1848 100644 --- a/lua/startup/themes/default.lua +++ b/lua/startup/themes/default.lua @@ -3,7 +3,7 @@ local settings = {    header = {      type = "text",      align = "center", -    padding = 5, +    margin = 5,      content = {        "                                          /$$              ",        "                                         |__/              ", @@ -22,7 +22,7 @@ local settings = {    body = {      type = "mapping",      align = "center", -    padding = 5, +    margin = 5,      content = {        [" Find File"] = { "Telescope find_files", "<leader>ff" },        [" Find Word"] = { "Telescope live_grep", "<leader>lg" }, @@ -38,7 +38,7 @@ local settings = {    footer = {      type = "text",      align = "center", -    padding = 5, +    margin = 5,      content = { "startup.nvim" },      highlight = "TSString",      default_color = "#FFFFFF", @@ -48,8 +48,10 @@ local settings = {    options = {      mapping_keys = true,      empty_lines_between_mappings = true, -    gap1 = 3, -    gap2 = 4, +    padding = { +      header_body = 3, +      body_footer = 4, +    },    },    colors = {      background = "#1f2227", diff --git a/lua/startup/utils.lua b/lua/startup/utils.lua index f407a15..b4c80eb 100644 --- a/lua/startup/utils.lua +++ b/lua/startup/utils.lua @@ -57,7 +57,6 @@ function U.set_buf_options()    vim.api.nvim_buf_set_option(0, "bufhidden", "wipe")    vim.api.nvim_buf_set_option(0, "buftype", "nofile")    vim.api.nvim_buf_set_option(0, "filetype", "dashboard") -  vim.api.nvim_buf_set_option(0, "modifiable", false)    vim.api.nvim_buf_set_option(0, "swapfile", false)    vim.cmd [[setlocal nonu nornu]]  end diff --git a/settings_skeleton.lua b/settings_skeleton.lua index 7e1c9b5..6204a6c 100644 --- a/settings_skeleton.lua +++ b/settings_skeleton.lua @@ -26,9 +26,9 @@ local example_section = {    command = "echo 'test worked'", -- a command which will be exected when section gets loaded  }  local settings = { -  header = {}, -  body = {}, -  footer = {}, +  -- header = {<see example section>}, +  -- body = {<see example section>}, +  -- footer = {<see example section>},    options = {      mapping_keys = true, -- display keys for mappings (e.g. <leader>ff)      empty_lines_between_mappings = true, -- empty lines between mapping names  | 
