Merge branch 'main' of https://git.araozu.dev/fernando/dotfiles
This commit is contained in:
commit
3565ecfa98
21
config/eww/eww.scss
Normal file
21
config/eww/eww.scss
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
* {
|
||||||
|
all:unset;
|
||||||
|
font-family: "IosevkaTermSlab Nerd Font", "monospace";
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bar {
|
||||||
|
background-color: black;
|
||||||
|
color: #fafafa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.single-tag {
|
||||||
|
font-family: "Noto Sans CJK JP Black", "Iwata SeichouG W05 B", "monospace";
|
||||||
|
background-color: #431407;
|
||||||
|
color: #fed7aa;
|
||||||
|
padding-left: 4px;
|
||||||
|
padding-right: 4px;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
55
config/eww/eww.yuck
Normal file
55
config/eww/eww.yuck
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
(defwindow bar
|
||||||
|
:monitor 0
|
||||||
|
:exclusive true
|
||||||
|
:class "bar"
|
||||||
|
:windowtype "dock"
|
||||||
|
:geometry (geometry :x "0%"
|
||||||
|
:y "0%"
|
||||||
|
:width "100%"
|
||||||
|
:height "20px"
|
||||||
|
:anchor "top center")
|
||||||
|
(bar))
|
||||||
|
|
||||||
|
;
|
||||||
|
; variables
|
||||||
|
;
|
||||||
|
|
||||||
|
(defvar tags "[1,2,3,4,5]")
|
||||||
|
(defvar tagSymbols `["一","二","三","四","五"]`)
|
||||||
|
|
||||||
|
|
||||||
|
(defwidget bar []
|
||||||
|
(centerbox
|
||||||
|
:orientation "h"
|
||||||
|
(left)
|
||||||
|
"This is *the* bar"
|
||||||
|
":D"))
|
||||||
|
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; LEFT
|
||||||
|
;
|
||||||
|
;
|
||||||
|
(defwidget left []
|
||||||
|
(box
|
||||||
|
:class "left-side"
|
||||||
|
:orientation "h"
|
||||||
|
:space-evenly false
|
||||||
|
:halign "start"
|
||||||
|
:spacing 3
|
||||||
|
(tags)))
|
||||||
|
|
||||||
|
;
|
||||||
|
; Widget that just prints all tags :D
|
||||||
|
;
|
||||||
|
(defwidget tags []
|
||||||
|
(box
|
||||||
|
:spacing 4
|
||||||
|
(for idx in tags
|
||||||
|
(tag :id idx
|
||||||
|
:symbol `${tagSymbols[idx - 1]}`))))
|
||||||
|
|
||||||
|
(defwidget tag [id symbol]
|
||||||
|
(box :class "single-tag"
|
||||||
|
{symbol}))
|
||||||
|
|
@ -36,8 +36,10 @@ set fish_cursor_visual block
|
|||||||
fish_add_path ~/.local/share/nvm/v22.13.0/bin/
|
fish_add_path ~/.local/share/nvm/v22.13.0/bin/
|
||||||
|
|
||||||
# common alias
|
# common alias
|
||||||
alias l="eza -l"
|
alias l='eza --long --header --icons --group-directories-first'
|
||||||
alias ll="eza -la"
|
alias ll='eza --all --long --header --icons --group-directories-first'
|
||||||
|
alias lt='eza --ignore-glob="node_modules" --tree --level=2 --header --icons --group-directories-first'
|
||||||
|
alias ltt='eza --ignore-glob="node_modules" --tree --header --icons --group-directories-first'
|
||||||
|
|
||||||
# pnpm
|
# pnpm
|
||||||
set -gx PNPM_HOME "/home/fernando/.local/share/pnpm"
|
set -gx PNPM_HOME "/home/fernando/.local/share/pnpm"
|
||||||
|
18
config/nvim/fnl/autocolors.fnl
Normal file
18
config/nvim/fnl/autocolors.fnl
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
;
|
||||||
|
; This file is to be called AFTER the color plugins have been loaded
|
||||||
|
;
|
||||||
|
(fn set-theme-for-directory []
|
||||||
|
(let [cwd (vim.fn.getcwd)
|
||||||
|
directory-themes {:acide/trazo-backend :github_light
|
||||||
|
:acide/trazo-frontend :onelight
|
||||||
|
:csharp :caret
|
||||||
|
:zig :ayu-dark}]
|
||||||
|
(var theme "randomhue")
|
||||||
|
(each [dir dir-theme (pairs directory-themes)]
|
||||||
|
(when (string.find cwd dir 1 true) (set theme dir-theme) (lua :break)))
|
||||||
|
(vim.cmd (.. "colorscheme " theme))))
|
||||||
|
|
||||||
|
(vim.api.nvim_create_autocmd [:DirChanged]
|
||||||
|
{:callback (fn [] (set-theme-for-directory))})
|
||||||
|
|
||||||
|
(set-theme-for-directory)
|
@ -1,8 +1,80 @@
|
|||||||
|
; My Neovim config, based on kickstart.nvim
|
||||||
|
; and rewritten in Fennel, because why not?
|
||||||
|
|
||||||
(set vim.g.mapleader " ")
|
(set vim.g.mapleader " ")
|
||||||
(set vim.g.maplocalleader " ")
|
(set vim.g.maplocalleader " ")
|
||||||
(set vim.g.have_nerd_font true)
|
(set vim.g.have_nerd_font true)
|
||||||
(set vim.opt.number true)
|
(set vim.opt.number true)
|
||||||
(set vim.opt.relativenumber true)
|
(set vim.opt.relativenumber true)
|
||||||
|
(set vim.opt.mouse "a")
|
||||||
|
(set vim.opt.showmode false)
|
||||||
|
(vim.schedule (fn [] (set vim.opt.clipboard "unnamedplus")))
|
||||||
|
(set vim.opt.breakindent true)
|
||||||
|
(set vim.opt.undofile true)
|
||||||
|
(set vim.opt.ignorecase true)
|
||||||
|
(set vim.opt.smartcase true)
|
||||||
|
(set vim.opt.signcolumn "yes")
|
||||||
|
(set vim.opt.updatetime 250)
|
||||||
|
(set vim.opt.timeoutlen 300)
|
||||||
|
(set vim.opt.splitright true)
|
||||||
|
(set vim.opt.splitbelow true)
|
||||||
|
(set vim.opt.list true)
|
||||||
|
(set vim.opt.listchars
|
||||||
|
{"tab" "» " "trail" "·" "nbsp" "␣"})
|
||||||
|
(set vim.opt.inccommand "split")
|
||||||
|
(set vim.opt.cursorline true)
|
||||||
|
; Minimal number of screen lines to keep above/below
|
||||||
|
(set vim.opt.scrolloff 4)
|
||||||
|
|
||||||
(print "I have been setup :D")
|
;
|
||||||
|
; Setup carry over
|
||||||
|
;
|
||||||
|
|
||||||
|
; Keymaps for buffer switching
|
||||||
|
(vim.keymap.set :n :<leader>h "<Plug>(cokeline-focus-prev)"
|
||||||
|
{:desc "Previous buffer"})
|
||||||
|
(vim.keymap.set :n :<leader>l "<Plug>(cokeline-focus-next)"
|
||||||
|
{:desc "Next buffer"})
|
||||||
|
(vim.keymap.set :n :<leader>a "<cmd>:e #<cr>" {:desc "[A]lternate buffer"})
|
||||||
|
(vim.keymap.set :n :<leader>bd "<cmd>:bd<cr>" {:desc "[B]uffer [D]elete"})
|
||||||
|
|
||||||
|
; cokeline
|
||||||
|
(for [i 1 9]
|
||||||
|
(vim.keymap.set :n (: "<Leader>%s" :format i)
|
||||||
|
(: "<Plug>(cokeline-focus-%s)" :format i)
|
||||||
|
{:desc (: "Switch to tab %s" :format i) :silent true}))
|
||||||
|
|
||||||
|
(vim.keymap.set :n :<leader>H "<Plug>(cokeline-switch-prev)"
|
||||||
|
{:desc "Previous buffer swap"})
|
||||||
|
(vim.keymap.set :n :<leader>L "<Plug>(cokeline-switch-next)"
|
||||||
|
{:desc "Next buffer swap"})
|
||||||
|
|
||||||
|
; neotree
|
||||||
|
(vim.keymap.set :n :<leader>tn "<cmd>:Neotree focus toggle<cr>"
|
||||||
|
{:desc "[T]oggle [N]eotree"})
|
||||||
|
(vim.keymap.set :n :<leader>tr "<cmd>:Neotree reveal<cr>"
|
||||||
|
{:desc "[T]oggle Neotree [R]eveal"})
|
||||||
|
(vim.keymap.set :n :<leader>tg "<cmd>:Telescope git_status<cr>"
|
||||||
|
{:desc "[T]elescope [G]it status"})
|
||||||
|
(vim.keymap.set :n :<Esc> :<cmd>nohlsearch<CR>)
|
||||||
|
(vim.keymap.set :n :<leader>q vim.diagnostic.setloclist
|
||||||
|
{:desc "Open diagnostic [Q]uickfix list"})
|
||||||
|
|
||||||
|
; Moving
|
||||||
|
(vim.keymap.set :n :<C-h> :<C-w><C-h> {:desc "Move focus to the left window"})
|
||||||
|
(vim.keymap.set :n :<C-l> :<C-w><C-l> {:desc "Move focus to the right window"})
|
||||||
|
(vim.keymap.set :n :<C-j> :<C-w><C-j> {:desc "Move focus to the lower window"})
|
||||||
|
(vim.keymap.set :n :<C-k> :<C-w><C-k> {:desc "Move focus to the upper window"})
|
||||||
|
|
||||||
|
; Fold
|
||||||
|
(vim.keymap.set :n :z$ "$zf%" {:desc "Fold EOL & %"})
|
||||||
|
|
||||||
|
; Highlight when yanking (copying) text
|
||||||
|
(vim.api.nvim_create_autocmd :TextYankPost
|
||||||
|
{:callback (fn [] (vim.highlight.on_yank))
|
||||||
|
:desc "Highlight when yanking (copying) text"
|
||||||
|
:group (vim.api.nvim_create_augroup :kickstart-highlight-yank
|
||||||
|
{:clear true})})
|
||||||
|
|
||||||
|
|
||||||
|
(print "I have been setup with Fennel :D")
|
||||||
|
8
config/nvim/fnl/plugins/barbecue.fnl
Normal file
8
config/nvim/fnl/plugins/barbecue.fnl
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
(local barbecue {1 :utilyre/barbecue.nvim
|
||||||
|
:dependencies [:SmiteshP/nvim-navic
|
||||||
|
:nvim-tree/nvim-web-devicons]
|
||||||
|
:name :barbecue
|
||||||
|
:opts {}
|
||||||
|
:version "*"})
|
||||||
|
|
||||||
|
[barbecue]
|
66
config/nvim/fnl/plugins/cokeline.fnl
Normal file
66
config/nvim/fnl/plugins/cokeline.fnl
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
(local cokeline {1 :willothy/nvim-cokeline
|
||||||
|
:config (fn []
|
||||||
|
(local get-hex
|
||||||
|
(. (require :cokeline.hlgroups) :get_hl_attr))
|
||||||
|
(local hlgroups (require :cokeline.hlgroups))
|
||||||
|
(local yellow vim.g.terminal_color_3)
|
||||||
|
((. (require :cokeline) :setup) {:components [{:text (fn [buffer]
|
||||||
|
(.. " "
|
||||||
|
buffer.index))}
|
||||||
|
{:fg (fn [buffer]
|
||||||
|
buffer.devicon.color)
|
||||||
|
:text (fn [buffer]
|
||||||
|
(.. " "
|
||||||
|
buffer.devicon.icon))}
|
||||||
|
{:fg (fn []
|
||||||
|
(hlgroups.get_hl_attr :Comment
|
||||||
|
:fg))
|
||||||
|
:italic true
|
||||||
|
:text (fn [buffer]
|
||||||
|
buffer.unique_prefix)}
|
||||||
|
{:text (fn [buffer]
|
||||||
|
buffer.filename)
|
||||||
|
:underline (fn [buffer]
|
||||||
|
(when (and buffer.is_hovered
|
||||||
|
(not buffer.is_focused))
|
||||||
|
true))}
|
||||||
|
{:text " "}
|
||||||
|
{:on_click (fn [_
|
||||||
|
_
|
||||||
|
_
|
||||||
|
_
|
||||||
|
buffer]
|
||||||
|
(buffer:delete))
|
||||||
|
:text (fn [buffer]
|
||||||
|
(when buffer.is_modified
|
||||||
|
(lua "return \"\""))
|
||||||
|
(when buffer.is_hovered
|
||||||
|
(lua "return \"\""))
|
||||||
|
"")}
|
||||||
|
{:text " "}]
|
||||||
|
:default_hl {:bg (fn [buffer]
|
||||||
|
(or (and buffer.is_focused
|
||||||
|
(get-hex :Normal
|
||||||
|
:fg))
|
||||||
|
(get-hex :ColorColumn
|
||||||
|
:bg)))
|
||||||
|
:fg (fn [buffer]
|
||||||
|
(or (and buffer.is_focused
|
||||||
|
(get-hex :ColorColumn
|
||||||
|
:bg))
|
||||||
|
(get-hex :Normal
|
||||||
|
:fg)))}
|
||||||
|
:sidebar {:components [{:bg (fn []
|
||||||
|
(get-hex :NvimTreeNormal
|
||||||
|
:bg))
|
||||||
|
:bold true
|
||||||
|
:fg yellow
|
||||||
|
:text (fn [buf]
|
||||||
|
buf.filetype)}]
|
||||||
|
:filetype [:NvimTree
|
||||||
|
:neo-tree]}}))
|
||||||
|
:dependencies [:nvim-lua/plenary.nvim
|
||||||
|
:nvim-tree/nvim-web-devicons
|
||||||
|
:stevearc/resession.nvim]})
|
||||||
|
|
||||||
|
[cokeline]
|
13
config/nvim/fnl/plugins/colors.fnl
Normal file
13
config/nvim/fnl/plugins/colors.fnl
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
[
|
||||||
|
"Mofiqul/dracula.nvim"
|
||||||
|
"olimorris/onedarkpro.nvim"
|
||||||
|
"projekt0n/github-nvim-theme"
|
||||||
|
"folke/tokyonight.nvim"
|
||||||
|
"arzg/vim-colors-xcode"
|
||||||
|
"rose-pine/neovim"
|
||||||
|
"Mofiqul/vscode.nvim"
|
||||||
|
"scottmckendry/cyberdream.nvim"
|
||||||
|
"Shatur/neovim-ayu"
|
||||||
|
"projekt0n/caret.nvim"
|
||||||
|
]
|
||||||
|
|
114
config/nvim/fnl/plugins/editor.fnl
Normal file
114
config/nvim/fnl/plugins/editor.fnl
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
(local blankline
|
||||||
|
{1 :lukas-reineke/indent-blankline.nvim
|
||||||
|
:main :ibl
|
||||||
|
:opts {:indent {:char "▏"}
|
||||||
|
:scope {:show_end false :show_start false}}})
|
||||||
|
|
||||||
|
(local emmet
|
||||||
|
{1 :olrtg/nvim-emmet
|
||||||
|
:config (fn []
|
||||||
|
(vim.keymap.set [:n :v] :<leader>xe
|
||||||
|
(. (require :nvim-emmet)
|
||||||
|
:wrap_with_abbreviation)))})
|
||||||
|
|
||||||
|
(local autoformat {1 :stevearc/conform.nvim
|
||||||
|
:cmd [:ConformInfo]
|
||||||
|
:event [:BufWritePre]
|
||||||
|
:keys [{1 :<leader>f
|
||||||
|
2 (fn []
|
||||||
|
((. (require :conform) :format) {:async true
|
||||||
|
:lsp_format :fallback}))
|
||||||
|
:desc "[F]ormat buffer"
|
||||||
|
:mode ""}]
|
||||||
|
:opts {:format_on_save (fn [bufnr]
|
||||||
|
(local disable-filetypes
|
||||||
|
{:c true :cpp true})
|
||||||
|
(var lsp-format-opt nil)
|
||||||
|
(if (. disable-filetypes
|
||||||
|
(. vim.bo bufnr :filetype))
|
||||||
|
(set lsp-format-opt :never)
|
||||||
|
(set lsp-format-opt :fallback))
|
||||||
|
{:lsp_format lsp-format-opt
|
||||||
|
:timeout_ms 500})
|
||||||
|
:formatters_by_ft {:lua [:stylua]}
|
||||||
|
:notify_on_error false}})
|
||||||
|
|
||||||
|
(local autocomplete {1 :hrsh7th/nvim-cmp
|
||||||
|
:config (fn []
|
||||||
|
(local cmp (require :cmp))
|
||||||
|
(local luasnip (require :luasnip))
|
||||||
|
(luasnip.config.setup {})
|
||||||
|
(cmp.setup {:completion {:completeopt "menu,menuone,noinsert"}
|
||||||
|
:mapping (cmp.mapping.preset.insert {:<C-Space> (cmp.mapping.complete {})
|
||||||
|
:<C-b> (cmp.mapping.scroll_docs (- 4))
|
||||||
|
:<C-f> (cmp.mapping.scroll_docs 4)
|
||||||
|
:<C-h> (cmp.mapping (fn []
|
||||||
|
(when (luasnip.locally_jumpable (- 1))
|
||||||
|
(luasnip.jump (- 1))))
|
||||||
|
[:i
|
||||||
|
:s])
|
||||||
|
:<C-l> (cmp.mapping (fn []
|
||||||
|
(when (luasnip.expand_or_locally_jumpable)
|
||||||
|
(luasnip.expand_or_jump)))
|
||||||
|
[:i
|
||||||
|
:s])
|
||||||
|
:<C-n> (cmp.mapping.select_next_item)
|
||||||
|
:<C-p> (cmp.mapping.select_prev_item)
|
||||||
|
:<C-y> (cmp.mapping.confirm {:select true})})
|
||||||
|
:snippet {:expand (fn [args]
|
||||||
|
(luasnip.lsp_expand args.body))}
|
||||||
|
:sources [{:group_index 0
|
||||||
|
:name :lazydev}
|
||||||
|
{:name :nvim_lsp}
|
||||||
|
{:name :luasnip}
|
||||||
|
{:name :path}]}))
|
||||||
|
:dependencies [{1 :L3MON4D3/LuaSnip
|
||||||
|
:build ((fn []
|
||||||
|
(when (or (= (vim.fn.has :win32)
|
||||||
|
1)
|
||||||
|
(= (vim.fn.executable :make)
|
||||||
|
0))
|
||||||
|
(lua "return "))
|
||||||
|
"make install_jsregexp"))
|
||||||
|
:dependencies {}}
|
||||||
|
:saadparwaiz1/cmp_luasnip
|
||||||
|
:hrsh7th/cmp-nvim-lsp
|
||||||
|
:hrsh7th/cmp-path]
|
||||||
|
:event :InsertEnter})
|
||||||
|
|
||||||
|
(local comments {1 :folke/todo-comments.nvim
|
||||||
|
:dependencies [:nvim-lua/plenary.nvim]
|
||||||
|
:event :VimEnter
|
||||||
|
:opts {:signs false}})
|
||||||
|
|
||||||
|
(local mini {1 :echasnovski/mini.nvim
|
||||||
|
:config (fn []
|
||||||
|
((. (require :mini.ai) :setup) {:n_lines 500})
|
||||||
|
((. (require :mini.surround) :setup))
|
||||||
|
(local statusline (require :mini.statusline))
|
||||||
|
(statusline.setup {:use_icons vim.g.have_nerd_font})
|
||||||
|
|
||||||
|
(fn statusline.section_location []
|
||||||
|
"%2l:%-2v"))})
|
||||||
|
|
||||||
|
(local autopairs {1 :windwp/nvim-autopairs
|
||||||
|
:config (fn []
|
||||||
|
((. (require :nvim-autopairs) :setup) {})
|
||||||
|
(local cmp-autopairs
|
||||||
|
(require :nvim-autopairs.completion.cmp))
|
||||||
|
(local cmp (require :cmp))
|
||||||
|
(cmp.event:on :confirm_done
|
||||||
|
(cmp-autopairs.on_confirm_done)))
|
||||||
|
:dependencies [:hrsh7th/nvim-cmp]
|
||||||
|
:event :InsertEnter})
|
||||||
|
|
||||||
|
[
|
||||||
|
blankline
|
||||||
|
emmet
|
||||||
|
autoformat
|
||||||
|
autocomplete
|
||||||
|
comments
|
||||||
|
mini
|
||||||
|
"tpope/vim-sleuth" ; Detect tabstop and shiftwidth automatically
|
||||||
|
autopairs
|
||||||
|
]
|
103
config/nvim/fnl/plugins/git.fnl
Normal file
103
config/nvim/fnl/plugins/git.fnl
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
(local git
|
||||||
|
{1 :lewis6991/gitsigns.nvim
|
||||||
|
:config (fn []
|
||||||
|
((. (require :gitsigns) :setup) {:on_attach (fn [bufnr]
|
||||||
|
(local gitsigns
|
||||||
|
(require :gitsigns))
|
||||||
|
|
||||||
|
(fn map [mode
|
||||||
|
l
|
||||||
|
r
|
||||||
|
opts]
|
||||||
|
(set-forcibly! opts
|
||||||
|
(or opts
|
||||||
|
{}))
|
||||||
|
(set opts.buffer
|
||||||
|
bufnr)
|
||||||
|
(vim.keymap.set mode
|
||||||
|
l
|
||||||
|
r
|
||||||
|
opts))
|
||||||
|
|
||||||
|
(map :n "]c"
|
||||||
|
(fn []
|
||||||
|
(if vim.wo.diff
|
||||||
|
(vim.cmd.normal {1 "]c"
|
||||||
|
:bang true})
|
||||||
|
(gitsigns.nav_hunk :next)))
|
||||||
|
{:desc "Next Git hunk"})
|
||||||
|
(map :n "[c"
|
||||||
|
(fn []
|
||||||
|
(if vim.wo.diff
|
||||||
|
(vim.cmd.normal {1 "[c"
|
||||||
|
:bang true})
|
||||||
|
(gitsigns.nav_hunk :prev)))
|
||||||
|
{:desc "Previous Git hunk"})
|
||||||
|
(map :n
|
||||||
|
:<leader>gs
|
||||||
|
gitsigns.stage_hunk
|
||||||
|
{:desc "[s]tage hunk"})
|
||||||
|
(map :n
|
||||||
|
:<leader>gr
|
||||||
|
gitsigns.reset_hunk
|
||||||
|
{:desc "[r]eset hunk"})
|
||||||
|
(map :v
|
||||||
|
:<leader>gs
|
||||||
|
(fn []
|
||||||
|
(gitsigns.stage_hunk [(vim.fn.line ".")
|
||||||
|
(vim.fn.line :v)]))
|
||||||
|
{:desc "[S]tage hunk"})
|
||||||
|
(map :v
|
||||||
|
:<leader>gr
|
||||||
|
(fn []
|
||||||
|
(gitsigns.reset_hunk [(vim.fn.line ".")
|
||||||
|
(vim.fn.line :v)]))
|
||||||
|
{:desc "[R]eset hunk"})
|
||||||
|
(map :n
|
||||||
|
:<leader>gS
|
||||||
|
gitsigns.stage_buffer
|
||||||
|
{:desc "[S]tage buffer"})
|
||||||
|
(map :n
|
||||||
|
:<leader>gu
|
||||||
|
gitsigns.undo_stage_hunk
|
||||||
|
{:desc "[u]ndo stage hunk"})
|
||||||
|
(map :n
|
||||||
|
:<leader>gR
|
||||||
|
gitsigns.reset_buffer
|
||||||
|
{:desc "[R]eset buffer"})
|
||||||
|
(map :n
|
||||||
|
:<leader>gp
|
||||||
|
gitsigns.preview_hunk
|
||||||
|
{:desc "[p]review hunk"})
|
||||||
|
(map :n
|
||||||
|
:<leader>gb
|
||||||
|
(fn []
|
||||||
|
(gitsigns.blame_line {:full true}))
|
||||||
|
{:desc "[b]lame line"})
|
||||||
|
(map :n
|
||||||
|
:<leader>tb
|
||||||
|
gitsigns.toggle_current_line_blame
|
||||||
|
{:desc "Toggle current line [b]lame"})
|
||||||
|
(map :n
|
||||||
|
:<leader>gd
|
||||||
|
gitsigns.diffthis
|
||||||
|
{:desc "[d]iff this file"})
|
||||||
|
(map :n
|
||||||
|
:<leader>gD
|
||||||
|
(fn []
|
||||||
|
(gitsigns.diffthis "~"))
|
||||||
|
{:desc "[D]iff this ~"})
|
||||||
|
(map :n
|
||||||
|
:<leader>td
|
||||||
|
gitsigns.toggle_deleted
|
||||||
|
{:desc "Toggle [d]eleted"})
|
||||||
|
(map [:o :x]
|
||||||
|
:ih
|
||||||
|
":<C-U>Gitsigns select_hunk<CR>"))
|
||||||
|
:signs {:add {:text "+"}
|
||||||
|
:change {:text "~"}
|
||||||
|
:changedelete {:text "~"}
|
||||||
|
:delete {:text "_"}
|
||||||
|
:topdelete {:text "‾"}}}))})
|
||||||
|
|
||||||
|
[git]
|
@ -1,3 +0,0 @@
|
|||||||
(print ":D (happy) (fennel lazy module)")
|
|
||||||
|
|
||||||
[]
|
|
159
config/nvim/fnl/plugins/lsp.fnl
Normal file
159
config/nvim/fnl/plugins/lsp.fnl
Normal file
@ -0,0 +1,159 @@
|
|||||||
|
(fn disable-formatting [client]
|
||||||
|
(set client.server_capabilities.documentFormattingProvider false)
|
||||||
|
(set client.server_capabilities.documentRangeFormattingProvider false))
|
||||||
|
|
||||||
|
|
||||||
|
(local lazydev
|
||||||
|
{1 :folke/lazydev.nvim
|
||||||
|
:ft :lua
|
||||||
|
:opts {:library [{:path :luvit-meta/library :words ["vim%.uv"]}]}})
|
||||||
|
|
||||||
|
(local luvit-meta {1 "Bilal2453/luvit-meta"
|
||||||
|
:lazy true})
|
||||||
|
|
||||||
|
(local lspconfig {1 :neovim/nvim-lspconfig
|
||||||
|
:config (fn []
|
||||||
|
((. (require :lspconfig) :gleam :setup) {})
|
||||||
|
((. (require :lspconfig) :ts_ls :setup) {:on_attach (fn [client
|
||||||
|
bufnr]
|
||||||
|
(disable-formatting client))})
|
||||||
|
((. (require :lspconfig) :eslint :setup) {:on_attach (fn [client
|
||||||
|
bufnr]
|
||||||
|
(vim.api.nvim_create_autocmd :BufWritePre
|
||||||
|
{:buffer bufnr
|
||||||
|
:command :EslintFixAll}))})
|
||||||
|
(vim.api.nvim_create_autocmd :LspAttach
|
||||||
|
{:callback (fn [event]
|
||||||
|
(fn map [keys
|
||||||
|
func
|
||||||
|
desc
|
||||||
|
mode]
|
||||||
|
(set-forcibly! mode
|
||||||
|
(or mode
|
||||||
|
:n))
|
||||||
|
(vim.keymap.set mode
|
||||||
|
keys
|
||||||
|
func
|
||||||
|
{:buffer event.buf
|
||||||
|
:desc (.. "LSP: "
|
||||||
|
desc)}))
|
||||||
|
|
||||||
|
(map :gd
|
||||||
|
(. (require :telescope.builtin)
|
||||||
|
:lsp_definitions)
|
||||||
|
"[G]oto [D]efinition")
|
||||||
|
(map :gr
|
||||||
|
(. (require :telescope.builtin)
|
||||||
|
:lsp_references)
|
||||||
|
"[G]oto [R]eferences")
|
||||||
|
(map :gI
|
||||||
|
(. (require :telescope.builtin)
|
||||||
|
:lsp_implementations)
|
||||||
|
"[G]oto [I]mplementation")
|
||||||
|
(map :<leader>D
|
||||||
|
(. (require :telescope.builtin)
|
||||||
|
:lsp_type_definitions)
|
||||||
|
"Type [D]efinition")
|
||||||
|
(map :<leader>ds
|
||||||
|
(. (require :telescope.builtin)
|
||||||
|
:lsp_document_symbols)
|
||||||
|
"[D]ocument [S]ymbols")
|
||||||
|
(map :<leader>ws
|
||||||
|
(. (require :telescope.builtin)
|
||||||
|
:lsp_dynamic_workspace_symbols)
|
||||||
|
"[W]orkspace [S]ymbols")
|
||||||
|
(map :<leader>rn
|
||||||
|
vim.lsp.buf.rename
|
||||||
|
"[R]e[n]ame")
|
||||||
|
(map :<leader>ca
|
||||||
|
vim.lsp.buf.code_action
|
||||||
|
"[C]ode [A]ction"
|
||||||
|
[:n
|
||||||
|
:x])
|
||||||
|
(map :gD
|
||||||
|
vim.lsp.buf.declaration
|
||||||
|
"[G]oto [D]eclaration")
|
||||||
|
(local client
|
||||||
|
(vim.lsp.get_client_by_id event.data.client_id))
|
||||||
|
(when (and client
|
||||||
|
(client.supports_method vim.lsp.protocol.Methods.textDocument_documentHighlight))
|
||||||
|
(local highlight-augroup
|
||||||
|
(vim.api.nvim_create_augroup :kickstart-lsp-highlight
|
||||||
|
{:clear false}))
|
||||||
|
(vim.api.nvim_create_autocmd [:CursorHold
|
||||||
|
:CursorHoldI]
|
||||||
|
{:buffer event.buf
|
||||||
|
:callback vim.lsp.buf.document_highlight
|
||||||
|
:group highlight-augroup})
|
||||||
|
(vim.api.nvim_create_autocmd [:CursorMoved
|
||||||
|
:CursorMovedI]
|
||||||
|
{:buffer event.buf
|
||||||
|
:callback vim.lsp.buf.clear_references
|
||||||
|
:group highlight-augroup})
|
||||||
|
(vim.api.nvim_create_autocmd :LspDetach
|
||||||
|
{:callback (fn [event2]
|
||||||
|
(vim.lsp.buf.clear_references)
|
||||||
|
(vim.api.nvim_clear_autocmds {:buffer event2.buf
|
||||||
|
:group :kickstart-lsp-highlight}))
|
||||||
|
:group (vim.api.nvim_create_augroup :kickstart-lsp-detach
|
||||||
|
{:clear true})}))
|
||||||
|
(when (and client
|
||||||
|
(client.supports_method vim.lsp.protocol.Methods.textDocument_inlayHint))
|
||||||
|
(map :<leader>th
|
||||||
|
(fn []
|
||||||
|
(vim.lsp.inlay_hint.enable (not (vim.lsp.inlay_hint.is_enabled {:bufnr event.buf}))))
|
||||||
|
"[T]oggle Inlay [H]ints"))
|
||||||
|
(local opts
|
||||||
|
{:buffer event.buf})
|
||||||
|
(vim.keymap.set :n
|
||||||
|
:gh
|
||||||
|
(fn []
|
||||||
|
(vim.diagnostic.open_float))
|
||||||
|
{:buffer event.buf
|
||||||
|
:desc "[h] Open floating diagnostic"}))
|
||||||
|
:group (vim.api.nvim_create_augroup :kickstart-lsp-attach
|
||||||
|
{:clear true})})
|
||||||
|
(var capabilities
|
||||||
|
(vim.lsp.protocol.make_client_capabilities))
|
||||||
|
(set capabilities
|
||||||
|
(vim.tbl_deep_extend :force capabilities
|
||||||
|
((. (require :cmp_nvim_lsp)
|
||||||
|
:default_capabilities))))
|
||||||
|
(local servers
|
||||||
|
{:astro {}
|
||||||
|
:clojure_lsp {}
|
||||||
|
:gopls {}
|
||||||
|
:lua_ls {:settings {:Lua {:completion {:callSnippet :Replace}}}}
|
||||||
|
:tailwindcss {}
|
||||||
|
:ts_ls {}
|
||||||
|
:zls {}})
|
||||||
|
((. (require :mason) :setup))
|
||||||
|
(local ensure-installed
|
||||||
|
(vim.tbl_keys (or servers {})))
|
||||||
|
(vim.list_extend ensure-installed [:stylua])
|
||||||
|
((. (require :mason-tool-installer) :setup) {:ensure_installed ensure-installed})
|
||||||
|
((. (require :mason-lspconfig) :setup) {:handlers [(fn [server-name]
|
||||||
|
(local server
|
||||||
|
(or (. servers
|
||||||
|
server-name)
|
||||||
|
{}))
|
||||||
|
(set server.capabilities
|
||||||
|
(vim.tbl_deep_extend :force
|
||||||
|
{}
|
||||||
|
capabilities
|
||||||
|
(or server.capabilities
|
||||||
|
{})))
|
||||||
|
((. (require :lspconfig)
|
||||||
|
server-name
|
||||||
|
:setup) server))]}))
|
||||||
|
:dependencies [{1 :williamboman/mason.nvim :config true}
|
||||||
|
:williamboman/mason-lspconfig.nvim
|
||||||
|
:WhoIsSethDaniel/mason-tool-installer.nvim
|
||||||
|
{1 :j-hui/fidget.nvim :opts {}}
|
||||||
|
:hrsh7th/cmp-nvim-lsp]})
|
||||||
|
|
||||||
|
[
|
||||||
|
lazydev
|
||||||
|
luvit-meta
|
||||||
|
lspconfig
|
||||||
|
]
|
103
config/nvim/fnl/plugins/lualine.fnl
Normal file
103
config/nvim/fnl/plugins/lualine.fnl
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
(local lualine {1 :nvim-lualine/lualine.nvim
|
||||||
|
:config (fn []
|
||||||
|
(local lualine (require :lualine))
|
||||||
|
(local colors
|
||||||
|
{:bg "#202328"
|
||||||
|
:blue "#51afef"
|
||||||
|
:cyan "#008080"
|
||||||
|
:darkblue "#081633"
|
||||||
|
:fg "#bbc2cf"
|
||||||
|
:green "#98be65"
|
||||||
|
:magenta "#c678dd"
|
||||||
|
:orange "#FF8800"
|
||||||
|
:red "#ec5f67"
|
||||||
|
:violet "#a9a1e1"
|
||||||
|
:yellow "#ECBE7B"})
|
||||||
|
(local conditions
|
||||||
|
{:buffer_not_empty (fn []
|
||||||
|
(not= (vim.fn.empty (vim.fn.expand "%:t"))
|
||||||
|
1))
|
||||||
|
:check_git_workspace (fn []
|
||||||
|
(local filepath
|
||||||
|
(vim.fn.expand "%:p:h"))
|
||||||
|
(local gitdir
|
||||||
|
(vim.fn.finddir :.git
|
||||||
|
(.. filepath
|
||||||
|
";")))
|
||||||
|
(and (and gitdir
|
||||||
|
(> (length gitdir)
|
||||||
|
0))
|
||||||
|
(< (length gitdir)
|
||||||
|
(length filepath))))
|
||||||
|
:hide_in_width (fn []
|
||||||
|
(> (vim.fn.winwidth 0) 80))})
|
||||||
|
(local config
|
||||||
|
{:inactive_sections {:lualine_a {}
|
||||||
|
:lualine_b {}
|
||||||
|
:lualine_c {}
|
||||||
|
:lualine_x {}
|
||||||
|
:lualine_y {}
|
||||||
|
:lualine_z {}}
|
||||||
|
:options {:component_separators ""
|
||||||
|
:section_separators ""
|
||||||
|
:theme :auto}
|
||||||
|
:sections {:lualine_a [{1 :mode
|
||||||
|
:color {:gui :bold}
|
||||||
|
:fmt (fn [name ctx]
|
||||||
|
(local first-letter
|
||||||
|
(string.sub name
|
||||||
|
1
|
||||||
|
1))
|
||||||
|
(local rest
|
||||||
|
(string.sub name
|
||||||
|
2))
|
||||||
|
(local str-lower
|
||||||
|
(string.lower rest))
|
||||||
|
(.. first-letter
|
||||||
|
str-lower))}]
|
||||||
|
:lualine_b {}
|
||||||
|
:lualine_c {}
|
||||||
|
:lualine_x {}
|
||||||
|
:lualine_y {}
|
||||||
|
:lualine_z {}}})
|
||||||
|
|
||||||
|
(fn ins-left [component]
|
||||||
|
(table.insert config.sections.lualine_c component))
|
||||||
|
|
||||||
|
(fn ins-right [component]
|
||||||
|
(table.insert config.sections.lualine_x component))
|
||||||
|
|
||||||
|
(ins-left [:location])
|
||||||
|
(ins-left {1 :diagnostics
|
||||||
|
:diagnostics_color {:error {:fg colors.red}
|
||||||
|
:info {:fg colors.cyan}
|
||||||
|
:warn {:fg colors.yellow}}
|
||||||
|
:sources [:nvim_diagnostic]
|
||||||
|
:symbols {:error " "
|
||||||
|
:info " "
|
||||||
|
:warn " "}})
|
||||||
|
(ins-left [(fn [] "%=")])
|
||||||
|
(ins-right [:filetype])
|
||||||
|
(ins-right {1 "o:encoding"
|
||||||
|
:color {:fg colors.green :gui :bold}
|
||||||
|
:cond conditions.hide_in_width
|
||||||
|
:fmt string.upper})
|
||||||
|
(ins-right {1 :fileformat
|
||||||
|
:color {:fg colors.green :gui :bold}
|
||||||
|
:fmt string.upper
|
||||||
|
:icons_enabled false})
|
||||||
|
(ins-right {1 :branch
|
||||||
|
:color {:fg colors.violet :gui :bold}
|
||||||
|
:icon ""})
|
||||||
|
(ins-right {1 :diff
|
||||||
|
:cond conditions.hide_in_width
|
||||||
|
:diff_color {:added {:fg colors.green}
|
||||||
|
:modified {:fg colors.orange}
|
||||||
|
:removed {:fg colors.red}}
|
||||||
|
:symbols {:added " "
|
||||||
|
:modified " "
|
||||||
|
:removed " "}})
|
||||||
|
(lualine.setup config))
|
||||||
|
:dependencies [:nvim-tree/nvim-web-devicons]})
|
||||||
|
|
||||||
|
[lualine]
|
13
config/nvim/fnl/plugins/neotree.fnl
Normal file
13
config/nvim/fnl/plugins/neotree.fnl
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
(local neotree {1 :nvim-neo-tree/neo-tree.nvim
|
||||||
|
:cmd :Neotree
|
||||||
|
:dependencies [:nvim-lua/plenary.nvim
|
||||||
|
:nvim-tree/nvim-web-devicons
|
||||||
|
:MunifTanjim/nui.nvim]
|
||||||
|
:keys [{1 "\\"
|
||||||
|
2 ":Neotree reveal<CR>"
|
||||||
|
:desc "NeoTree reveal"
|
||||||
|
:silent true}]
|
||||||
|
:opts {:filesystem {:window {:mappings {"\\" :close_window}}}}
|
||||||
|
:version "*"})
|
||||||
|
|
||||||
|
[neotree]
|
63
config/nvim/fnl/plugins/telescope.fnl
Normal file
63
config/nvim/fnl/plugins/telescope.fnl
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
(local telescope {1 :nvim-telescope/telescope.nvim
|
||||||
|
:branch :0.1.x
|
||||||
|
:config (fn []
|
||||||
|
((. (require :telescope) :setup) {:defaults {:layout_config {:horizontal {:height 0.95
|
||||||
|
:preview_width 0.5
|
||||||
|
:width 0.95}
|
||||||
|
:vertical {:height 0.9
|
||||||
|
:preview_height 0.7
|
||||||
|
:width 0.7}}
|
||||||
|
:layout_strategy :vertical}
|
||||||
|
:extensions {:ui-select [((. (require :telescope.themes)
|
||||||
|
:get_dropdown))]}})
|
||||||
|
(pcall (. (require :telescope) :load_extension)
|
||||||
|
:fzf)
|
||||||
|
(pcall (. (require :telescope) :load_extension)
|
||||||
|
:ui-select)
|
||||||
|
(local builtin (require :telescope.builtin))
|
||||||
|
(vim.keymap.set :n :<leader>sh builtin.help_tags
|
||||||
|
{:desc "[S]earch [H]elp"})
|
||||||
|
(vim.keymap.set :n :<leader>sk builtin.keymaps
|
||||||
|
{:desc "[S]earch [K]eymaps"})
|
||||||
|
(vim.keymap.set :n :<leader>sf builtin.find_files
|
||||||
|
{:desc "[S]earch [F]iles"})
|
||||||
|
(vim.keymap.set :n :<leader>ss builtin.builtin
|
||||||
|
{:desc "[S]earch [S]elect Telescope"})
|
||||||
|
(vim.keymap.set :n :<leader>sw builtin.grep_string
|
||||||
|
{:desc "[S]earch current [W]ord"})
|
||||||
|
(vim.keymap.set :n :<leader>sg builtin.live_grep
|
||||||
|
{:desc "[S]earch by [G]rep"})
|
||||||
|
(vim.keymap.set :n :<leader>sd builtin.diagnostics
|
||||||
|
{:desc "[S]earch [D]iagnostics"})
|
||||||
|
(vim.keymap.set :n :<leader>s. builtin.oldfiles
|
||||||
|
{:desc "[S]earch Recent Files (\".\" for repeat)"})
|
||||||
|
(vim.keymap.set :n :<leader>/ builtin.buffers
|
||||||
|
{:desc "[/] Find existing buffers"})
|
||||||
|
(vim.keymap.set :n :<leader>sc
|
||||||
|
(fn []
|
||||||
|
(builtin.colorscheme ((. (require :telescope.themes)
|
||||||
|
:get_dropdown) {:previewer false
|
||||||
|
:winblend 20})))
|
||||||
|
{:desc "[S]earch [C]olorschemes"})
|
||||||
|
(vim.keymap.set :n :<leader><leader>
|
||||||
|
builtin.current_buffer_fuzzy_find
|
||||||
|
{:desc "[ ] Fuzzily search in current buffer"})
|
||||||
|
(vim.keymap.set :n :<leader>s/
|
||||||
|
(fn []
|
||||||
|
(builtin.live_grep {:grep_open_files true
|
||||||
|
:prompt_title "Live Grep in Open Files"}))
|
||||||
|
{:desc "[S]earch [/] in Open Files"})
|
||||||
|
(vim.keymap.set :n :<leader>sn
|
||||||
|
(fn []
|
||||||
|
(builtin.find_files {:cwd (vim.fn.stdpath :config)}))
|
||||||
|
{:desc "[S]earch [N]eovim files"}))
|
||||||
|
:dependencies [:nvim-lua/plenary.nvim
|
||||||
|
{1 :nvim-telescope/telescope-fzf-native.nvim
|
||||||
|
:build :make
|
||||||
|
:cond (fn [] (= (vim.fn.executable :make) 1))}
|
||||||
|
[:nvim-telescope/telescope-ui-select.nvim]
|
||||||
|
{1 :nvim-tree/nvim-web-devicons
|
||||||
|
:enabled vim.g.have_nerd_font}]
|
||||||
|
:event :VimEnter})
|
||||||
|
|
||||||
|
[telescope]
|
20
config/nvim/fnl/plugins/treesitter.fnl
Normal file
20
config/nvim/fnl/plugins/treesitter.fnl
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
(local neotree {1 :nvim-treesitter/nvim-treesitter
|
||||||
|
:build ":TSUpdate"
|
||||||
|
:main :nvim-treesitter.configs
|
||||||
|
:opts {:auto_install true
|
||||||
|
:ensure_installed [:bash
|
||||||
|
:c
|
||||||
|
:diff
|
||||||
|
:html
|
||||||
|
:lua
|
||||||
|
:luadoc
|
||||||
|
:markdown
|
||||||
|
:markdown_inline
|
||||||
|
:query
|
||||||
|
:vim
|
||||||
|
:vimdoc]
|
||||||
|
:highlight {:additional_vim_regex_highlighting [:ruby]
|
||||||
|
:enable true}
|
||||||
|
:indent {:disable [:ruby] :enable true}}})
|
||||||
|
|
||||||
|
[neotree]
|
41
config/nvim/fnl/plugins/whichkey.fnl
Normal file
41
config/nvim/fnl/plugins/whichkey.fnl
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
(local whichkey
|
||||||
|
{1 :folke/which-key.nvim
|
||||||
|
:event :VimEnter
|
||||||
|
:opts {:icons {:keys (or (and vim.g.have_nerd_font {})
|
||||||
|
{:BS "<BS> "
|
||||||
|
:C "<C-…> "
|
||||||
|
:CR "<CR> "
|
||||||
|
:D "<D-…> "
|
||||||
|
:Down "<Down> "
|
||||||
|
:Esc "<Esc> "
|
||||||
|
:F1 :<F1>
|
||||||
|
:F10 :<F10>
|
||||||
|
:F11 :<F11>
|
||||||
|
:F12 :<F12>
|
||||||
|
:F2 :<F2>
|
||||||
|
:F3 :<F3>
|
||||||
|
:F4 :<F4>
|
||||||
|
:F5 :<F5>
|
||||||
|
:F6 :<F6>
|
||||||
|
:F7 :<F7>
|
||||||
|
:F8 :<F8>
|
||||||
|
:F9 :<F9>
|
||||||
|
:Left "<Left> "
|
||||||
|
:M "<M-…> "
|
||||||
|
:NL "<NL> "
|
||||||
|
:Right "<Right> "
|
||||||
|
:S "<S-…> "
|
||||||
|
:ScrollWheelDown "<ScrollWheelDown> "
|
||||||
|
:ScrollWheelUp "<ScrollWheelUp> "
|
||||||
|
:Space "<Space> "
|
||||||
|
:Tab "<Tab> "
|
||||||
|
:Up "<Up> "})
|
||||||
|
:mappings vim.g.have_nerd_font}
|
||||||
|
:spec [{1 :<leader>c :group "[C]ode" :mode [:n :x]}
|
||||||
|
{1 :<leader>d :group "[D]ocument"}
|
||||||
|
{1 :<leader>r :group "[R]ename"}
|
||||||
|
{1 :<leader>s :group "[S]earch"}
|
||||||
|
{1 :<leader>w :group "[W]orkspace"}
|
||||||
|
{1 :<leader>t :group "[T]oggle"}]}})
|
||||||
|
|
||||||
|
[whichkey]
|
@ -50,4 +50,5 @@ require("lazy").setup({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- set color theme depending on the current folder
|
||||||
|
require("autocolors")
|
||||||
|
@ -53,7 +53,7 @@ riverctl map normal Super+Shift Comma send-to-output previous
|
|||||||
|
|
||||||
# focused window border
|
# focused window border
|
||||||
riverctl border-width 4
|
riverctl border-width 4
|
||||||
riverctl border-color-focused 0xc026d3ff
|
riverctl border-color-focused 0x581C87AA
|
||||||
riverctl border-color-unfocused 0xff000000
|
riverctl border-color-unfocused 0xff000000
|
||||||
|
|
||||||
|
|
||||||
@ -195,3 +195,8 @@ rivertile -view-padding 6 -outer-padding 6 &
|
|||||||
# BAR
|
# BAR
|
||||||
#
|
#
|
||||||
waybar &
|
waybar &
|
||||||
|
|
||||||
|
#
|
||||||
|
# wallpaper: TODO
|
||||||
|
#
|
||||||
|
|
||||||
|
@ -9,6 +9,10 @@ docker docker-compose
|
|||||||
|
|
||||||
foot ghostty fuzzel river waybar tmux wlr-randr
|
foot ghostty fuzzel river waybar tmux wlr-randr
|
||||||
|
|
||||||
|
# notifications
|
||||||
|
# https://wiki.archlinux.org/title/Desktop_notifications
|
||||||
|
libnotify mako
|
||||||
|
|
||||||
brightnessctl
|
brightnessctl
|
||||||
# Make sure you're in the video group:
|
# Make sure you're in the video group:
|
||||||
# sudo usermod -aG video $USER
|
# sudo usermod -aG video $USER
|
Loading…
Reference in New Issue
Block a user