diff options
| author | Hsieh Chin Fan <pham@topo.tw> | 2024-06-26 12:18:32 +0800 |
|---|---|---|
| committer | Hsieh Chin Fan <pham@topo.tw> | 2024-06-26 12:18:32 +0800 |
| commit | 44f31b1f27c2a53cf8a4e053a50c245e379558b0 (patch) | |
| tree | 4c52906716f76057d799d6ea1effcc40deae007a | |
| parent | d415bbb33a1c2a3f9a2492668b57c4db0098ef1d (diff) | |
Update
| -rw-r--r-- | Makefile | 4 | ||||
| -rw-r--r-- | snippets/bash_server | 90 | ||||
| -rw-r--r-- | snippets/dot_example | 27 | ||||
| -rw-r--r-- | vim/init/basic.vim | 5 | ||||
| -rw-r--r-- | vim/init/keymaps.vim | 11 | ||||
| -rw-r--r-- | vim/lua/chadrc.lua | 2 | ||||
| -rw-r--r-- | vim/lua/mappings.lua | 30 | ||||
| -rw-r--r-- | vim/lua/options.lua | 2 |
8 files changed, 148 insertions, 23 deletions
| @@ -106,3 +106,7 @@ alacritty: | |||
| 106 | mpd: | 106 | mpd: |
| 107 | ln -sf `pwd`/mpd/ncmpcpp ~/.config/ncmpcpp | 107 | ln -sf `pwd`/mpd/ncmpcpp ~/.config/ncmpcpp |
| 108 | rm -rf ~/.ncmpcpp | 108 | rm -rf ~/.ncmpcpp |
| 109 | |||
| 110 | snippets: | ||
| 111 | rm -rf ~/snippets | ||
| 112 | ln -sf `pwd`/snippets ~/snippets | ||
diff --git a/snippets/bash_server b/snippets/bash_server new file mode 100644 index 0000000..f008d11 --- /dev/null +++ b/snippets/bash_server | |||
| @@ -0,0 +1,90 @@ | |||
| 1 | #!/bin/bash | ||
| 2 | |||
| 3 | ## Create the response FIFO | ||
| 4 | rm -f response | ||
| 5 | mkfifo response | ||
| 6 | |||
| 7 | function handle_GET_home() { | ||
| 8 | RESPONSE=$(cat home.html | \ | ||
| 9 | sed "s/{{$COOKIE_NAME}}/$COOKIE_VALUE/") | ||
| 10 | } | ||
| 11 | |||
| 12 | function handle_GET_login() { | ||
| 13 | RESPONSE=$(cat login.html) | ||
| 14 | } | ||
| 15 | |||
| 16 | function handle_POST_login() { | ||
| 17 | RESPONSE=$(cat post-login.http | \ | ||
| 18 | sed "s/{{cookie_name}}/$INPUT_NAME/" | \ | ||
| 19 | sed "s/{{cookie_value}}/$INPUT_VALUE/") | ||
| 20 | } | ||
| 21 | |||
| 22 | function handle_POST_logout() { | ||
| 23 | RESPONSE=$(cat post-logout.http | \ | ||
| 24 | sed "s/{{cookie_name}}/$COOKIE_NAME/" | \ | ||
| 25 | sed "s/{{cookie_value}}/$COOKIE_VALUE/") | ||
| 26 | } | ||
| 27 | |||
| 28 | function handle_not_found() { | ||
| 29 | RESPONSE=$(cat 404.html) | ||
| 30 | } | ||
| 31 | |||
| 32 | function handleRequest() { | ||
| 33 | ## Read request | ||
| 34 | while read line; do | ||
| 35 | echo $line | ||
| 36 | trline=$(echo $line | tr -d '[\r\n]') | ||
| 37 | |||
| 38 | [ -z "$trline" ] && break | ||
| 39 | |||
| 40 | HEADLINE_REGEX='(.*?)\s(.*?)\sHTTP.*?' | ||
| 41 | [[ "$trline" =~ $HEADLINE_REGEX ]] && | ||
| 42 | REQUEST=$(echo $trline | sed -E "s/$HEADLINE_REGEX/\1 \2/") | ||
| 43 | |||
| 44 | CONTENT_LENGTH_REGEX='Content-Length:\s(.*?)' | ||
| 45 | [[ "$trline" =~ $CONTENT_LENGTH_REGEX ]] && | ||
| 46 | CONTENT_LENGTH=$(echo $trline | sed -E "s/$CONTENT_LENGTH_REGEX/\1/") | ||
| 47 | |||
| 48 | COOKIE_REGEX='Cookie:\s(.*?)\=(.*?).*?' | ||
| 49 | [[ "$trline" =~ $COOKIE_REGEX ]] && | ||
| 50 | read COOKIE_NAME COOKIE_VALUE <<< $(echo $trline | sed -E "s/$COOKIE_REGEX/\1 \2/") | ||
| 51 | done | ||
| 52 | |||
| 53 | ## Read body | ||
| 54 | if [ ! -z "$CONTENT_LENGTH" ]; then | ||
| 55 | BODY_REGEX='(.*?)=(.*?)' | ||
| 56 | |||
| 57 | while read -n$CONTENT_LENGTH -t1 line; do | ||
| 58 | echo $line | ||
| 59 | trline=`echo $line | tr -d '[\r\n]'` | ||
| 60 | |||
| 61 | [ -z "$trline" ] && break | ||
| 62 | |||
| 63 | read INPUT_NAME INPUT_VALUE <<< $(echo $trline | sed -E "s/$BODY_REGEX/\1 \2/") | ||
| 64 | done | ||
| 65 | fi | ||
| 66 | |||
| 67 | ## Route to the response handlers | ||
| 68 | case "$REQUEST" in | ||
| 69 | "GET /login") handle_GET_login ;; | ||
| 70 | "GET /") handle_GET_home ;; | ||
| 71 | "POST /login") handle_POST_login ;; | ||
| 72 | "POST /logout") handle_POST_logout ;; | ||
| 73 | *) handle_not_found ;; | ||
| 74 | esac | ||
| 75 | |||
| 76 | echo -e "$RESPONSE" > response | ||
| 77 | } | ||
| 78 | |||
| 79 | echo 'Listening on 3000...' | ||
| 80 | |||
| 81 | ## Keep server running forever | ||
| 82 | while true; do | ||
| 83 | ## 1. wait for FIFO | ||
| 84 | ## 2. creates a socket and listens to the port 3000 | ||
| 85 | ## 3. as soon as a request message arrives to the socket, pipes it to the handleRequest function | ||
| 86 | ## 4. the handleRequest function processes the request message and routes it to the response handler, which writes to the FIFO | ||
| 87 | ## 5. as soon as the FIFO receives a message, it's sent to the socket | ||
| 88 | ## 6. closes the connection (`-N`), closes the socket and repeat the loop | ||
| 89 | cat response | nc -lN 3000 | handleRequest | ||
| 90 | done | ||
diff --git a/snippets/dot_example b/snippets/dot_example new file mode 100644 index 0000000..fa95abc --- /dev/null +++ b/snippets/dot_example | |||
| @@ -0,0 +1,27 @@ | |||
| 1 | digraph G { | ||
| 2 | |||
| 3 | subgraph cluster_0 { | ||
| 4 | style=filled; | ||
| 5 | color=lightgrey; | ||
| 6 | node [style=filled,color=white]; | ||
| 7 | a0 -> a1 -> a2 -> a3; | ||
| 8 | label = "process #1"; | ||
| 9 | } | ||
| 10 | |||
| 11 | subgraph cluster_1 { | ||
| 12 | node [style=filled]; | ||
| 13 | b0 -> b1 -> b2 -> b3; | ||
| 14 | label = "process #2"; | ||
| 15 | color=blue | ||
| 16 | } | ||
| 17 | start -> a0; | ||
| 18 | start -> b0; | ||
| 19 | a1 -> b3; | ||
| 20 | b2 -> a3; | ||
| 21 | a3 -> a0; | ||
| 22 | a3 -> end; | ||
| 23 | b3 -> end; | ||
| 24 | |||
| 25 | start [shape=Mdiamond]; | ||
| 26 | end [shape=Msquare]; | ||
| 27 | } | ||
diff --git a/vim/init/basic.vim b/vim/init/basic.vim index c2996d2..5008b2f 100644 --- a/vim/init/basic.vim +++ b/vim/init/basic.vim | |||
| @@ -170,7 +170,10 @@ autocmd BufRead /dev/shm/*.txt call SetPasswordFile() | |||
| 170 | function SetPasswordFile() | 170 | function SetPasswordFile() |
| 171 | setlocal foldminlines=0 | 171 | setlocal foldminlines=0 |
| 172 | setlocal foldmethod=manual | 172 | setlocal foldmethod=manual |
| 173 | setlocal foldtext= | 173 | function s:custom() |
| 174 | return "Password" | ||
| 175 | endfunction | ||
| 176 | setlocal foldtext=s:custom() | ||
| 174 | norm! ggzfl | 177 | norm! ggzfl |
| 175 | endfunction | 178 | endfunction |
| 176 | 179 | ||
diff --git a/vim/init/keymaps.vim b/vim/init/keymaps.vim index f789ceb..245905a 100644 --- a/vim/init/keymaps.vim +++ b/vim/init/keymaps.vim | |||
| @@ -129,7 +129,7 @@ vnoremap so :source<CR> | |||
| 129 | " MANAGE_VIMRC | 129 | " MANAGE_VIMRC |
| 130 | "---------------------------------------------------------------------- | 130 | "---------------------------------------------------------------------- |
| 131 | nnoremap <leader>e :edit $MYVIMRC<CR> | 131 | nnoremap <leader>e :edit $MYVIMRC<CR> |
| 132 | autocmd! bufwritepost $MYVIMRC source $MYVIMRC | 132 | autocmd! BUFWRITEPOST $MYVIMRC source $MYVIMRC |
| 133 | 133 | ||
| 134 | 134 | ||
| 135 | "---------------------------------------------------------------------- | 135 | "---------------------------------------------------------------------- |
| @@ -245,18 +245,19 @@ endfunc | |||
| 245 | "---------------------------------------------------------------------- | 245 | "---------------------------------------------------------------------- |
| 246 | 246 | ||
| 247 | " Open a new buffer | 247 | " Open a new buffer |
| 248 | nmap <leader><leader>b :enew<CR> | ||
| 248 | nmap <leader>O :e /tmp/buffer<CR> | 249 | nmap <leader>O :e /tmp/buffer<CR> |
| 249 | 250 | ||
| 250 | " Next buffer | 251 | " Next buffer |
| 251 | noremap <leader>l :bn<CR> | 252 | noremap <leader>l :exe "buffer ".g:lastbuffer<CR> |
| 253 | " noremap <Tab> :exe 'buffer '.g:lastbuffer<CR> | ||
| 252 | 254 | ||
| 253 | " set filetype | 255 | " set filetype |
| 254 | noremap <leader><leader>ft :set filetype= | 256 | noremap <leader><leader>ft :set filetype= |
| 255 | noremap <leader><leader>fm :set foldmethod= | 257 | noremap <leader><leader>f :set foldmetho = |
| 256 | 258 | ||
| 257 | " Let <leader>l toggle between this and the last accessed buffer | 259 | " Let <leader>l toggle between this and the last accessed buffer |
| 258 | let g:lastbuffer = 1 | 260 | let g:lastbuffer = 1 |
| 259 | noremap <Tab> :exe "buffer ".g:lastbuffer<CR> | ||
| 260 | au BufLeave * let g:lastbuffer = bufnr() | 261 | au BufLeave * let g:lastbuffer = bufnr() |
| 261 | 262 | ||
| 262 | "---------------------------------------------------------------------- | 263 | "---------------------------------------------------------------------- |
| @@ -270,7 +271,7 @@ vnoremap [ <ESC>`<i[<ESC>`>la]<ESC> | |||
| 270 | vnoremap { <ESC>`<i{<ESC>`>la}<ESC> | 271 | vnoremap { <ESC>`<i{<ESC>`>la}<ESC> |
| 271 | vnoremap ` <ESC>`<i`<ESC>`>la`<ESC> | 272 | vnoremap ` <ESC>`<i`<ESC>`>la`<ESC> |
| 272 | vnoremap <space> <ESC>`<i<space><ESC>`>la<space><ESC> | 273 | vnoremap <space> <ESC>`<i<space><ESC>`>la<space><ESC> |
| 273 | vnoremap z <ESC>`<i「<ESC>`>la」<ESC> | 274 | vnoremap Q <ESC>`<i「<ESC>`>la」<ESC> |
| 274 | 275 | ||
| 275 | 276 | ||
| 276 | "---------------------------------------------------------------------- | 277 | "---------------------------------------------------------------------- |
diff --git a/vim/lua/chadrc.lua b/vim/lua/chadrc.lua index aa0d78c..aa9a78c 100644 --- a/vim/lua/chadrc.lua +++ b/vim/lua/chadrc.lua | |||
| @@ -41,6 +41,8 @@ if M.ui.tabufline.enabled then | |||
| 41 | vim.keymap.set("n", "<A-l>", function() require("nvchad.tabufline").move_buf(1) end) | 41 | vim.keymap.set("n", "<A-l>", function() require("nvchad.tabufline").move_buf(1) end) |
| 42 | vim.keymap.set("n", "<A-H>", function() vim.cmd("tabprevious") end) | 42 | vim.keymap.set("n", "<A-H>", function() vim.cmd("tabprevious") end) |
| 43 | vim.keymap.set("n", "<A-L>", function() vim.cmd("tabnext") end) | 43 | vim.keymap.set("n", "<A-L>", function() vim.cmd("tabnext") end) |
| 44 | vim.keymap.set("n", "<tab>", function() require("nvchad.tabufline").next() end, { desc = "buffer goto next" }) | ||
| 45 | vim.keymap.set("n", "<S-tab>", function() require("nvchad.tabufline").prev() end, { desc = "buffer goto prev" }) | ||
| 44 | end | 46 | end |
| 45 | 47 | ||
| 46 | 48 | ||
diff --git a/vim/lua/mappings.lua b/vim/lua/mappings.lua index 45c44ec..9151f17 100644 --- a/vim/lua/mappings.lua +++ b/vim/lua/mappings.lua | |||
| @@ -23,11 +23,6 @@ end, { desc = "format files" }) | |||
| 23 | -- global lsp mappings | 23 | -- global lsp mappings |
| 24 | vim.keymap.set("n", "<leader>ds", vim.diagnostic.setloclist, { desc = "lsp diagnostic loclist" }) | 24 | vim.keymap.set("n", "<leader>ds", vim.diagnostic.setloclist, { desc = "lsp diagnostic loclist" }) |
| 25 | 25 | ||
| 26 | -- tabufline | ||
| 27 | vim.keymap.set("n", "<leader>x", function() | ||
| 28 | require("nvchad.tabufline").close_buffer() | ||
| 29 | end, { desc = "buffer close" }) | ||
| 30 | |||
| 31 | -- Comment | 26 | -- Comment |
| 32 | vim.keymap.set("n", "<leader>/", "gcc", { desc = "comment toggle", remap = true }) | 27 | vim.keymap.set("n", "<leader>/", "gcc", { desc = "comment toggle", remap = true }) |
| 33 | vim.keymap.set("v", "<leader>/", "gc", { desc = "comment toggle", remap = true }) | 28 | vim.keymap.set("v", "<leader>/", "gc", { desc = "comment toggle", remap = true }) |
| @@ -66,8 +61,14 @@ vim.keymap.set('n', '<leader>ss', function() | |||
| 66 | require('telescope.actions').close(prompt_bufnr) | 61 | require('telescope.actions').close(prompt_bufnr) |
| 67 | vim.api.nvim_put(snippet_content, '', false, true) | 62 | vim.api.nvim_put(snippet_content, '', false, true) |
| 68 | end | 63 | end |
| 64 | local edit_selected_snippet = function() | ||
| 65 | local file = require('telescope.actions.state').get_selected_entry()[1] | ||
| 66 | require('telescope.actions').close(prompt_bufnr) | ||
| 67 | vim.cmd(":e " .. cwd .. "/" .. file) | ||
| 68 | end | ||
| 69 | 69 | ||
| 70 | map('i', '<CR>', insert_selected_snippet) | 70 | map('i', '<CR>', insert_selected_snippet) |
| 71 | map('i', '<C-T>', edit_selected_snippet) | ||
| 71 | map('n', '<CR>', insert_selected_snippet) | 72 | map('n', '<CR>', insert_selected_snippet) |
| 72 | 73 | ||
| 73 | return true | 74 | return true |
| @@ -115,17 +116,12 @@ end, { desc = "Create a new snippet" }) | |||
| 115 | -- map("t", "<C-x>", "<C-\\><C-N>", { desc = "terminal escape terminal mode" }) | 116 | -- map("t", "<C-x>", "<C-\\><C-N>", { desc = "terminal escape terminal mode" }) |
| 116 | 117 | ||
| 117 | -- new terminals | 118 | -- new terminals |
| 118 | vim.keymap.set("n", "<leader><leader>h", function() require("nvchad.term").new { pos = "sp" } end, | 119 | vim.keymap.set("n", "<leader><leader>h", function() require("nvchad.term").new { pos = "sp" } end, { desc = "terminal new horizontal term" }) |
| 119 | { desc = "terminal new horizontal term" }) | 120 | vim.keymap.set("n", "<leader>v", function() require("nvchad.term").new { pos = "vsp" } end, { desc = "terminal new vertical window" }) |
| 120 | vim.keymap.set("n", "<leader>v", function() require("nvchad.term").new { pos = "vsp" } end, | ||
| 121 | { desc = "terminal new vertical window" }) | ||
| 122 | -- toggleable | 121 | -- toggleable |
| 123 | vim.keymap.set({ "n", "t" }, "<A-v>", function() require("nvchad.term").toggle { pos = "vsp", id = "vtoggleTerm" } end, | 122 | vim.keymap.set({ "n", "t" }, "<A-v>", function() require("nvchad.term").toggle { pos = "vsp", id = "vtoggleTerm" } end, { desc = "terminal toggleable vertical term" }) |
| 124 | { desc = "terminal toggleable vertical term" }) | 123 | vim.keymap.set({ "n", "t" }, "<A-t>", function() require("nvchad.term").toggle { pos = "sp", id = "htoggleTerm" } end, { desc = "terminal new horizontal term" }) |
| 125 | vim.keymap.set({ "n", "t" }, "<A-t>", function() require("nvchad.term").toggle { pos = "sp", id = "htoggleTerm" } end, | 124 | vim.keymap.set({ "n", "t" }, "<A-i>", function() require("nvchad.term").toggle { pos = "float", id = "floatTerm" } end, { desc = "terminal toggle floating term" }) |
| 126 | { desc = "terminal new horizontal term" }) | ||
| 127 | vim.keymap.set({ "n", "t" }, "<A-i>", function() require("nvchad.term").toggle { pos = "float", id = "floatTerm" } end, | ||
| 128 | { desc = "terminal toggle floating term" }) | ||
| 129 | 125 | ||
| 130 | -- whichkey | 126 | -- whichkey |
| 131 | vim.keymap.set("n", "<leader>wK", "<cmd>WhichKey <CR>", { desc = "whichkey all keymaps" }) | 127 | vim.keymap.set("n", "<leader>wK", "<cmd>WhichKey <CR>", { desc = "whichkey all keymaps" }) |
| @@ -176,5 +172,5 @@ vim.keymap.set('n', '<C-.>', ':HopChar1<CR>') | |||
| 176 | -- [ Aerial ] | 172 | -- [ Aerial ] |
| 177 | vim.keymap.set("n", "{", "<cmd>AerialPrev<CR>", {}) | 173 | vim.keymap.set("n", "{", "<cmd>AerialPrev<CR>", {}) |
| 178 | vim.keymap.set("n", "}", "<cmd>AerialNext<CR>", {}) | 174 | vim.keymap.set("n", "}", "<cmd>AerialNext<CR>", {}) |
| 179 | vim.keymap.set("n", "<leader><leader>a", "<cmd>Telescope aerial<CR>") | 175 | vim.keymap.set("n", "gN", "<cmd>Telescope aerial<CR>") |
| 180 | vim.keymap.set("n", "<leader><leader>A", function() require("aerial").toggle({ direction = "left" }) end) | 176 | vim.keymap.set("n", "gn", function() require("aerial").toggle({ direction = "left" }) end) |
diff --git a/vim/lua/options.lua b/vim/lua/options.lua index c16ae64..1c2b881 100644 --- a/vim/lua/options.lua +++ b/vim/lua/options.lua | |||
| @@ -4,6 +4,8 @@ require "nvchad.options" | |||
| 4 | 4 | ||
| 5 | local o = vim.o | 5 | local o = vim.o |
| 6 | 6 | ||
| 7 | o.clipboard = '' | ||
| 8 | |||
| 7 | -- To enable cursorline! | 9 | -- To enable cursorline! |
| 8 | o.cursorlineopt ='both' | 10 | o.cursorlineopt ='both' |
| 9 | 11 | ||