Compare commits

..

13 Commits

Author SHA1 Message Date
Radu Macocian (admac) 99a9f3ae12 added smooth scroll 2026-05-12 16:32:42 +02:00
Radu Macocian (admac) 5d1755fe96 changed code companion models 2026-05-12 16:27:32 +02:00
Radu Macocian (admac) 815f689f3c fixed code companion 2026-04-30 16:27:09 +02:00
Radu Macocian (admac) c201aa51db added autoread 2026-04-30 15:33:24 +02:00
Radu Macocian (admac) 15e7488d64 removed install.sh 2026-04-30 15:23:49 +02:00
Radu Macocian (admac) dab574ff79 added snacks terminal handling 2026-04-30 15:20:12 +02:00
Radu Macocian (admac) 483b04ed68 Added git blame for whole file 2026-04-22 13:05:27 +02:00
Radu Macocian 12db5d84f4 replaced telescope with snacks 2026-04-22 11:02:23 +02:00
Radu Macocian 802cc1dcfc Made neogit floating 2026-04-22 09:41:24 +02:00
Radu Macocian dc35a0b460 untrack lazy lock 2026-04-22 09:18:32 +02:00
Radu Macocian (admac) ec08eedea9 fixed treesitter main 2026-04-09 19:47:39 +02:00
Radu Macocian (admac) 9abd126c37 Roslyn 2026-04-08 18:23:10 +02:00
Radu Macocian (admac) 39bcb18f3e Fixed angular lsp 2026-04-08 08:54:21 +02:00
16 changed files with 301 additions and 244 deletions
+19 -3
View File
@@ -5,13 +5,13 @@ require('codecompanion').setup({
opts = {
title_generation_opts = {
adapter = "openrouter",
model = "minimax/minimax-m2.5"
model = "qwen/qwen3.6-flash"
}
},
summary = {
generation_opts = {
adapter = "openrouter",
model = "minimax/minimax-m2.5"
model = "qwen/qwen3.6-flash"
}
}
},
@@ -41,7 +41,7 @@ require('codecompanion').setup({
},
schema = {
model = {
default = "qwen/qwen3.5-plus-02-15",
default = "qwen/qwen3.6-flash",
},
},
})
@@ -64,3 +64,19 @@ require('codecompanion').setup({
})
vim.keymap.set('n', '<leader>gpt', function() require("codecompanion").chat({ strategy = "agent" }) end);
vim.keymap.set('n', 'gpi', function()
Snacks.input({ prompt = "Prompt: " }, function(input)
if input and input ~= "" then
vim.cmd("CodeCompanion " .. input)
end
end)
end)
vim.keymap.set('v', 'gpi', function()
Snacks.input({ prompt = "Prompt (with context): " }, function(input)
if input and input ~= "" then
vim.cmd("'<,'>CodeCompanion " .. input)
end
end)
end)
+2 -1
View File
@@ -48,4 +48,5 @@ require('gitsigns').setup {
},
}
vim.keymap.set('n', '<leader>gb', ':Gitsigns blame_line<CR>', { desc = '[G]it [B]lame' })
vim.keymap.set('n', '<leader>gb', ':Gitsigns blame_line<CR>', { desc = '[G]it [B]lame line' })
vim.keymap.set('n', '<leader>gB', ':Gitsigns blame<CR>', { desc = '[G]it [B]lame' })
+28 -55
View File
@@ -1,10 +1,3 @@
local pickers = require("telescope.pickers")
local finders = require("telescope.finders")
local conf = require("telescope.config").values
local previewers = require("telescope.previewers")
local actions = require("telescope.actions")
local action_state = require("telescope.actions.state")
local STOP_WORDS = {
["a"] = true,
["an"] = true,
@@ -35,9 +28,6 @@ local function parse_query_mode(raw_query)
return "type", vim.trim((query:gsub("^type:%s*", "", 1)))
end
-- Heuristic:
-- - Queries that look like signatures/operators stay in type mode.
-- - Everything else defaults to text mode so plain-language search works.
local looks_like_type = query:match("::")
or query:match("->")
or query:match("=>")
@@ -169,8 +159,8 @@ local function hoogle_picker(query)
return
end
local results = {}
for _, entry in ipairs(decoded) do
local items = {}
for idx, entry in ipairs(decoded) do
local signature = entry.item or ""
local docs = entry.docs or ""
local url = entry.url
@@ -185,7 +175,9 @@ local function hoogle_picker(query)
display = display .. " - " .. docs_one_line
end
table.insert(results, {
table.insert(items, {
idx = idx,
text = signature .. " " .. (docs or ""),
signature = signature,
docs = docs,
url = url,
@@ -193,54 +185,36 @@ local function hoogle_picker(query)
})
end
pickers.new({}, {
prompt_title = ("Hoogle (%s): %s"):format(mode, normalized_query),
finder = finders.new_table({
results = results,
entry_maker = function(entry)
return {
value = entry,
display = entry.display,
ordinal = entry.signature .. " " .. (entry.docs or ""),
}
Snacks.picker.pick({
source = "hoogle",
title = ("Hoogle (%s): %s"):format(mode, normalized_query),
items = items,
format = function(item)
return { { item.display, "SnacksPickerLabel" } }
end,
}),
sorter = conf.generic_sorter({}),
previewer = previewers.new_buffer_previewer({
define_preview = function(self, entry)
local value = entry.value or {}
local preview_lines = { value.signature or "" }
if value.docs and value.docs ~= "" then
table.insert(preview_lines, "")
vim.list_extend(preview_lines, vim.split(value.docs, "\n", { plain = true }))
preview = function(ctx)
local item = ctx.item
local lines = { item.signature or "" }
if item.docs and item.docs ~= "" then
table.insert(lines, "")
vim.list_extend(lines, vim.split(item.docs, "\n", { plain = true }))
else
table.insert(preview_lines, "")
table.insert(preview_lines, "No documentation available.")
table.insert(lines, "")
table.insert(lines, "No documentation available.")
end
if value.url and value.url ~= "" then
table.insert(preview_lines, "")
table.insert(preview_lines, value.url)
if item.url and item.url ~= "" then
table.insert(lines, "")
table.insert(lines, item.url)
end
vim.api.nvim_buf_set_lines(self.state.bufnr, 0, -1, false, preview_lines)
vim.api.nvim_buf_set_lines(ctx.buf, 0, -1, false, lines)
end,
}),
attach_mappings = function(prompt_bufnr, map)
local function open_result()
local selection = action_state.get_selected_entry()
actions.close(prompt_bufnr)
if selection and selection.value and selection.value.url then
vim.ui.open(selection.value.url)
confirm = function(picker, item)
picker:close()
if item and item.url then
vim.ui.open(item.url)
end
end
map("i", "<CR>", open_result)
map("n", "<CR>", open_result)
return true
end,
}):find()
})
end
vim.api.nvim_create_user_command("Hoogle", function(opts)
@@ -256,4 +230,3 @@ end, { desc = "Hoogle current word" })
vim.keymap.set("n", "<leader>ht", function()
vim.cmd("Hoogle " .. vim.fn.input("Hoogle type/text > "))
end, { desc = "Hoogle query" })
+23 -4
View File
@@ -4,18 +4,37 @@ capabilities.textDocument.completion.completionItem.snippetSupport = true
vim.lsp.config("*", {
capabilities = capabilities
})
-- vim.lsp.config("ts_ls", {})
local project_library_path = vim.fn.getcwd() .. '/node_modules'
local angular_cmd = {
'ngserver',
'--stdio',
'--tsProbeLocations',
project_library_path,
'--ngProbeLocations',
project_library_path .. '@angular/language-server'
}
vim.lsp.config("ts_ls", {})
vim.lsp.config("angularls", {
cmd = angular_cmd,
on_new_config = function(new_config, new_root_dir)
new_config.cmd = angular_cmd
end
})
vim.lsp.config("ruff", {})
vim.lsp.config("cssls", {})
vim.lsp.config("lua_ls", {})
vim.lsp.config("hls", {})
vim.lsp.config("roslyn", {})
vim.lsp.config("odoo_ls", {
cmd = {
vim.fn.expand('$HOME/.local/share/nvim/odoo/odoo_ls_server'),
'--config-path', vim.fn.expand('$HOME/projects/odoo/odools.toml'),
}
})
vim.lsp.config("qmlls", {
cmd = { "qmlls6", "-E" }
})
vim.lsp.config("lemminx", {})
vim.lsp.config("eslint", {
cmd = { "vscode-eslint-language-server", "--stdio" },
@@ -30,14 +49,14 @@ vim.lsp.config("eslint", {
},
})
vim.lsp.enable({"odoo_ls", "hls", "ruff", "eslint", "cssls", "lua_ls", "lemminx"})
vim.lsp.enable({ "angularls", "odoo_ls", "hls", "ruff", "eslint", "cssls", "lua_ls", "lemminx", "qmlls" })
vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('user_lsp_attach', { clear = true }),
callback = function(event)
local opts = { buffer = event.buf }
vim.keymap.set('n', 'gd', function() require('telescope.builtin').lsp_definitions() end, opts)
vim.keymap.set('n', 'gd', function() Snacks.picker.lsp_definitions() end, opts)
vim.keymap.set('n', 'K', function() vim.lsp.buf.hover() end, opts)
vim.keymap.set('n', '<leader>vws', function() vim.lsp.buf.workspace_symbol() end, opts)
vim.keymap.set('n', '<leader>vd', function() vim.diagnostic.open_float() end, opts)
@@ -1,6 +0,0 @@
require('mason').setup {}
require("mason-lspconfig").setup {
ensure_installed = { "lua_ls",
"cssls",
"eslint" },
}
+19
View File
@@ -0,0 +1,19 @@
local neoscroll = require('neoscroll')
neoscroll.setup({
easing = 'quadratic',
})
local keymap = {
['<C-u>'] = function() neoscroll.ctrl_u({ duration = 125 }) end,
['<C-d>'] = function() neoscroll.ctrl_d({ duration = 125 }) end,
['<C-b>'] = function() neoscroll.ctrl_b({ duration = 200 }) end,
['<C-f>'] = function() neoscroll.ctrl_f({ duration = 200 }) end,
['<C-y>'] = function() neoscroll.scroll(-0.1, { move_cursor = false, duration = 60 }) end,
['<C-e>'] = function() neoscroll.scroll(0.1, { move_cursor = false, duration = 60 }) end,
['zt'] = function() neoscroll.zt({ half_win_duration = 125 }) end,
['zz'] = function() neoscroll.zz({ half_win_duration = 125 }) end,
['zb'] = function() neoscroll.zb({ half_win_duration = 125 }) end,
}
for key, func in pairs(keymap) do
vim.keymap.set({ 'n', 'v', 'x' }, key, func)
end
+73 -1
View File
@@ -18,5 +18,77 @@ require("snacks").setup {
enabled = true,
char = ""
}
}
},
picker = {
enabled = true,
ui_select = true,
formatters = {
file = {
truncate = "left",
min_width = 160,
},
},
},
dashboard = {
enabled = true,
},
terminal = {
enabled = true,
},
}
local picker = Snacks.picker
vim.keymap.set('n', '<leader>pf', function() picker.files() end)
vim.keymap.set('n', '<C-p>p', function() picker.git_files() end)
vim.keymap.set('n', '<leader>sw', function() picker.lsp_workspace_symbols() end)
vim.keymap.set('n', '<leader>ps', function()
picker.grep({ search = vim.fn.input("Grep > "), live = false })
end)
local term_buf
local function find_term_win()
if not (term_buf and vim.api.nvim_buf_is_valid(term_buf)) then return end
for _, w in ipairs(vim.api.nvim_list_wins()) do
if vim.api.nvim_win_get_buf(w) == term_buf then return w end
end
end
local function toggle_term(fullscreen)
local win_opts = fullscreen and {
position = "float",
width = 0.98,
height = 0.98,
border = "rounded",
} or {
position = "bottom",
height = 0.2,
border = "none",
}
local existing = find_term_win()
if existing then
local is_float = vim.api.nvim_win_get_config(existing).relative ~= ""
vim.api.nvim_win_close(existing, true)
if is_float == fullscreen then return end
end
if term_buf and vim.api.nvim_buf_is_valid(term_buf) then
Snacks.win(vim.tbl_extend("force", win_opts, {
buf = term_buf,
enter = true,
bo = { filetype = "snacks_terminal" },
}))
vim.cmd.startinsert()
else
local term = Snacks.terminal.toggle(nil, { win = win_opts })
if term then term_buf = term.buf end
end
end
vim.keymap.set("n", "<leader>tt", function() toggle_term(false) end, { desc = "Terminal (split)" })
vim.keymap.set("n", "<leader>tT", function() toggle_term(true) end, { desc = "Terminal (fullscreen)" })
vim.keymap.set("t", "<C-t>", function()
local w = find_term_win()
if w then vim.api.nvim_win_close(w, true) end
end, { desc = "Hide terminal" })
-17
View File
@@ -1,17 +0,0 @@
require('telescope').setup {
extensions = {
["ui_select"] = {
require('telescope.themes').get_dropdown {
}
}
}
}
require('telescope').load_extension('ui-select')
local builtin = require('telescope.builtin')
vim.keymap.set('n', '<leader>pf', builtin.find_files, {})
vim.keymap.set('n', '<C-p>p', builtin.git_files, {})
vim.keymap.set('n', '<leader>sw', '<cmd>Telescope lsp_workspace_symbols<cr>', {})
vim.keymap.set('n', '<leader>ps', function()
builtin.grep_string({ search = vim.fn.input("Grep > ") });
end)
+29 -38
View File
@@ -1,6 +1,8 @@
require 'nvim-treesitter.configs'.setup {
-- A list of parser names, or "all" (the listed parsers MUST always be installed)
ensure_installed = {
local ts = require('nvim-treesitter')
ts.setup{}
ts.install({
"vimdoc",
"javascript",
"typescript",
@@ -12,40 +14,29 @@ require 'nvim-treesitter.configs'.setup {
"query",
"markdown",
"markdown_inline",
"yaml"
},
"yaml",
"haskell"
})
-- Install parsers synchronously (only applied to `ensure_installed`)
sync_install = false,
vim.api.nvim_create_autocmd('FileType', {
callback = function(ev)
local lang = vim.treesitter.language.get_lang(ev.match)
local available_langs = ts.get_available()
local is_available = vim.tbl_contains(available_langs, lang)
if is_available then
local installed_langs = ts.get_installed()
local installed = vim.tbl_contains(installed_langs, lang)
if not installed then
ts.install(lang):await()
end
vim.treesitter.start()
ts.indentexpr()
end
vim.wo[0][0].foldexpr = 'v:lua.vim.treesitter.foldexpr()'
vim.wo[0][0].foldmethod = 'expr'
vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
end,
})
-- Automatically install missing parsers when entering buffer
-- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
auto_install = true,
---- If you need to change the installation directory of the parsers (see -> Advanced Setup)
-- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")!
highlight = {
enable = true,
-- Setting this to true will run `:h syntax` and tree-sitter at the same time.
-- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
-- Using this option may slow down your editor, and you may see some duplicate highlights.
-- Instead of true it can also be a list of languages
additional_vim_regex_highlighting = false,
},
indent = {
enable = true,
disable = { "xml", "python" },
},
fold = {
enable = true,
},
}
vim.o.foldmethod = "expr"
vim.o.foldexpr = "nvim_treesitter#foldexpr()"
vim.opt.foldlevel = 99
vim.opt.foldlevelstart = 99
vim.o.foldlevel = 99
vim.o.foldlevelstart = 99
+2 -1
View File
@@ -5,7 +5,7 @@ local M = {}
-- Adapter (netcoredbg)
dap.adapters.coreclr = {
type = "executable",
command = "/Users/radumaco/Projects/netcoredbg/build/src/netcoredbg",
command = vim.fn.expand("$HOME/.local/share/nvim/mason/bin/netcoredbg"),
args = { "--interpreter=vscode" },
}
@@ -200,6 +200,7 @@ local function debug_dotnet_from_sln()
env = {
ASPNETCORE_ENVIRONMENT = "Development",
DOTNET_ENVIRONMENT = "Development",
ASPNETCORE_URLS = "https://localhost:7045;http://localhost:5000",
},
})
end
+13 -20
View File
@@ -18,10 +18,6 @@ vim.opt.rtp:prepend(lazypath)
-- Setup lazy.nvim
require("lazy").setup({
spec = {
{
'nvim-telescope/telescope.nvim',
dependencies = { 'nvim-lua/plenary.nvim' }
},
{
'neanias/everforest-nvim',
config = function()
@@ -61,7 +57,11 @@ require("lazy").setup({
},
},
'odoo/odoo-neovim',
{
'nvim-treesitter/nvim-treesitter',
lazy = false,
build = ':TSUpdate'
},
{
'theprimeagen/harpoon',
branch = 'harpoon2',
@@ -76,7 +76,11 @@ require("lazy").setup({
{
"olimorris/codecompanion.nvim",
version = "^18.0.0",
opts = {},
opts = {
opts = {
log_level = "TRACE",
},
},
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-treesitter/nvim-treesitter",
@@ -84,8 +88,8 @@ require("lazy").setup({
},
},
'tpope/vim-surround',
'nvim-telescope/telescope-ui-select.nvim',
'sphamba/smear-cursor.nvim',
'karb94/neoscroll.nvim',
{
"folke/persistence.nvim",
event = "BufReadPre",
@@ -115,24 +119,13 @@ require("lazy").setup({
"folke/snacks.nvim",
'lewis6991/gitsigns.nvim',
'tpope/vim-projectionist',
'williamboman/mason-lspconfig.nvim',
{
"NeogitOrg/neogit",
dependencies = {
"sindrets/diffview.nvim", -- optional - Diff integration
"sindrets/diffview.nvim",
},
config = true
},
{
'nvimdev/dashboard-nvim',
event = 'VimEnter',
config = function()
require('dashboard').setup {
-- config
}
end,
dependencies = { { 'nvim-tree/nvim-web-devicons' } }
},
'neovim/nvim-lspconfig',
{
'nvim-lualine/lualine.nvim',
@@ -149,12 +142,12 @@ require("lazy").setup({
opts = {},
keys = {
{ "<leader>gy", "<cmd>GitLink<cr>", mode = { "n", "v" }, desc = "Yank git link" },
{ "<leader>gY", "<cmd>GitLink!<cr>", mode = { "n", "v" }, desc = "Open git link" },
{ "<leader>gB", "<cmd>GitLink! blame<cr>", mode = { "n", "v" }, desc = "Open git blame link" },
{ "<leader>gY", "<cmd>GitLink! blame<cr>", mode = { "n", "v" }, desc = "Open git blame link" },
},
},
'hrsh7th/cmp-buffer',
'hrsh7th/nvim-cmp',
'seblyng/roslyn.nvim',
'L3MON4D3/LuaSnip',
{
'mfussenegger/nvim-dap-python',
+14 -4
View File
@@ -1,10 +1,8 @@
vim.g.mapleader = " "
vim.keymap.set("n", "<leader>pv", function ()
vim.keymap.set("n", "<leader>pv", function()
require("oil").toggle_float()
end)
vim.keymap.set("n", "<leader>u", ":UndotreeShow<CR>")
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv")
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv")
@@ -39,6 +37,18 @@ vim.keymap.set("n", "<leader>k", "<cmd>lnext<CR>zz")
vim.keymap.set("n", "<leader>j", "<cmd>lprev<CR>zz")
vim.keymap.set("n", "<leader>s", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gi<Left><Left><Left>]])
vim.keymap.set("n", "<leader>x", "<cmd>!chmod _x %<CR>", { silent = true})
vim.keymap.set("n", "<leader>x", "<cmd>!chmod _x %<CR>", { silent = true })
vim.keymap.set('n', '<leader>;', ':A<CR>', { desc = 'Alternate file' })
vim.keymap.set('n', '<leader>\\', function()
local path = vim.fn.expand('%:p')
local target
if path:find('/pos_loyalty_new/', 1, true) then
target = path:gsub('/pos_loyalty_new/', '/pos_loyalty/')
elseif path:find('/pos_loyalty/', 1, true) then
target = path:gsub('/pos_loyalty/', '/pos_loyalty_new/')
else
return vim.notify('Not in pos_loyalty or pos_loyalty_new', vim.log.levels.WARN)
end
vim.cmd('edit ' .. vim.fn.fnameescape(target))
end, { desc = 'Toggle pos_loyalty ↔ pos_loyalty_new' })
+7
View File
@@ -26,5 +26,12 @@ vim.opt.signcolumn = "yes"
vim.opt.isfname:append("@-@")
vim.opt.updatetime = 50
vim.opt.autoread = true
vim.api.nvim_create_autocmd({ "FocusGained", "BufEnter", "CursorHold" }, {
callback = function()
vim.cmd("checktime")
end,
})
vim.g.mapleader = " "
+39
View File
@@ -0,0 +1,39 @@
# AGENTS.md
Agent-agnostic guidance for any coding agent working in this repository. Keep all agent-agnostic instructions in this file. Agent-specific guidance lives in the agent's own file (e.g. `CLAUDE.md`).
## Repository purpose
Personal dotfiles repo. The working tree is structured to be cloned/symlinked at `$HOME` — the path `.config/nvim/` here corresponds to `~/.config/nvim/` on the user's machine. There is no build, test, or lint step; changes are validated by reloading Neovim.
`.gitignore` excludes `.config/nvim/lazy-lock.json` (lazy.nvim's plugin lockfile is not tracked).
## Neovim configuration architecture
Entry points and load order:
1. `.config/nvim/init.lua``require("wicked")`
2. `.config/nvim/lua/wicked/init.lua` requires, in order: `wicked.remap` (keymaps), `wicked.set` (options), `wicked.lazy` (plugin manager bootstrap + spec).
3. After `lazy.setup` runs, Neovim sources every file under `.config/nvim/after/plugin/*.lua` automatically (standard `after/` runtime path). Each of those files configures one plugin loaded by lazy.
This means: plugin **declarations** live in `lua/wicked/lazy.lua`, but plugin **configuration** (setup calls, keymaps, autocmds) lives in `after/plugin/<name>.lua`. When adding a plugin, both files usually need a change unless the plugin is configured inline via `opts`/`config` in the lazy spec.
DAP adapters are split out under `lua/dap/` (`dap-haskell.lua`, `dap-odoo.lua`, `dap-dotnet.lua`) and are required from `after/plugin/dap.lua`.
Leader key is `<Space>`, set in both `remap.lua` and `set.lua` (the duplicate in `set.lua` is intentional defensive ordering).
## Notable plugin choices
- **lazy.nvim** with `checker.enabled = true` (auto-checks for updates daily).
- **snacks.nvim** is used for picker/terminal/etc. — it replaced telescope (see commit `12db5d8`). Don't reintroduce telescope.
- **everforest** is the active colorscheme; nord is installed but not active.
- **codecompanion.nvim** pinned to `^18.0.0`.
- **roslyn.nvim** for C# LSP (separate from the standard `nvim-lspconfig` flow).
- **tidal.nvim** + **strudel.nvim** for live-coding music; tidal expects `ghci` at `~/.ghcup/bin/ghci` and a SuperDirt boot file at `~/.local/share/tidal/BootSuperDirt.scd`.
- **obsidian.nvim** workspace points at `~/notes`.
- **persistence.nvim** stores sessions under `stdpath("state")/sessions/`.
- Undo files live at `~/.vim/undodir` (set in `wicked/set.lua`), not the default location.
## Working in this repo
- To preview changes, reload Neovim or `:source` the affected file. There are no CI or test commands to run.
- `lazy-lock.json` is gitignored — don't try to commit it. Plugin version pinning happens via the spec in `lua/wicked/lazy.lua`.
+7
View File
@@ -0,0 +1,7 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
See [AGENTS.md](./AGENTS.md) for the repository overview, architecture, and working conventions. All agent-agnostic instructions belong in `AGENTS.md`. Only Claude-specific instructions or skill references belong in this file.
<!-- Add Claude-specific instructions or skill references below this line. -->
-68
View File
@@ -1,68 +0,0 @@
#!/bin/bash
echo "----- Cloning homefull-api -----"
if [ -d "$HOME/projects/homefull-api" ]; then
echo "[Skipped] homefull-api already exists"
else
git clone https://github.com/macocianradu/homefull-api.git\
~/projects/homefull-api
fi
echo "----- Cloning homefull-gui -----"
if [ -d "$HOME/projects/homefull-gui" ]; then
echo "[Skipped] homefull-gui already exists"
else
git clone https://github.com/macocianradu/homefull-gui.git\
~/projects/homefull-gui
fi
if [[ "$OSTYPE" == "linux"* ]]; then
echo "----- Linux-Gnu detected -----"
nvim_path="/opt/nvim-linux64"
echo "----- Downloading NVIM -----"
curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz
sudo rm -rf /opt/nvim
echo "Copying NVIM to /opt/nvim-linux64"
sudo tar -C /opt -xzf nvim-linux64.tar.gz
echo "Adding NVIM to PATH in ./bashrc"
echo "export PATH="\$PATH:$nvim_path/bin"" >> ~/.bashrc
echo "NVIM added to path, run '. ~/.bashrc' to reload PATH variable"
elif [[ "$OSTYPE" == "darwin"* ]]; then
echo "----- OSX detected -----"
nvim_path="~/Applications/nvim"
if [ -d "$HOME/Applications/nvim" ]; then
echo "[Skipped] NVIM already installed"
else
echo "----- Downloading nvim -----"
curl -LO https://github.com/neovim/neovim/releases/download/nightly/nvim-macos-arm64.tar.gz
tar xzf nvim-macos-arm64.tar.gz
mv nvim-macos-arm64 $nvim_path
fi
fi
if [[ ! -d "$HOME/.local/share/nvim/roslyn" ]] then
echo "----- Roslyn LS not detected: Downloading now -----"
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
ls_url="https://zaxvsblobprodwus215.vsblob.vsassets.io/b-63b6279ad2f14bc3a21cdb7614e92831/5787C047B250801723E628CEF9CA582F82C848FE406E4553BA02BF5ECA870EBD00.blob?sv=2019-07-07&sr=b&si=1&sig=L9sr005TS6IonkYAeB7KYh7kW9CnWNr9MAqNu4ypEUo%3D&spr=https&se=2024-08-19T00%3A25%3A13Z&rscl=x-e2eid-ec16adad-34c8456c-80536072-32aeec7d-session-ec16adad-34c8456c-80536072-32aeec7d&rscd=attachment%3B%20filename%3D%22Microsoft.CodeAnalysis.LanguageServer.linux-x64.4.12.0-2.24417.1.nupkg%22&P1=1724037911&P2=1&P3=2&P4=gWMe2EcOpfH3DR3WcrRHHNy7Tdsz8N7QuAZdgHUJfyk%3d"
elif [[ "$OSTYPE" == "darwin"* ]]; then
ls_url="https://etjvsblobprodwus2172.vsblob.vsassets.io/b-63b6279ad2f14bc3a21cdb7614e92831/270B5B41FCC924B78FFAAEC2E2F6623DDEE782E2EB8AD71C9661A7144E9B399C00.blob?sv=2019-07-07&sr=b&si=1&sig=Y2Eil5keeY2ZyHlm%2FOZPZz%2FfkZhWgII31wn0q0Kuu0g%3D&spr=https&se=2024-08-19T00%3A42%3A54Z&rscl=x-e2eid-0ae75aa5-b81e4f13-bef4006c-4791577b-session-0ae75aa5-b81e4f13-bef4006c-4791577b&rscd=attachment%3B%20filename%3D%22Microsoft.CodeAnalysis.LanguageServer.osx-arm64.4.12.0-2.24417.1.nupkg%22&P1=1724038971&P2=1&P3=2&P4=4%2b936oMTgkM4TFkxnmVVzhCHlRl4L3LpTq2trVyzSMQ%3d"
mkdir temp
curl $ls_url\
-o temp/language_server.nupkg
cd temp
unzip temp/language_server.nupkg
mv temp/content/LanguageServer/linux-x64 $HOME/.local/share/nvim/roslyn
rm -rf temp
fi
echo "----- Copying NVIM configuration -----"
if [ ! -d "$HOME/.config" ]; then
echo ".config folder not found. Creating one"
mkdir ~/.config
fi
ln -s ~/projects/setup/.config/nvim ~/.config/
if [ ! -d "$HOME/.vim" ]; then
echo ".vim folder not found. Creating one"
mkdir ~/.vim
fi
ln -s ~/projects/setup/.vim/undodir ~/.vim/