Lua - mode ์ฒ๋ฆฌ ํจ์
์๊ฐ lua์์ mode ์ธ์๋ฅผ ๋ฐ์ ๋ string, table ๋ชจ๋๋ฅผ ๊ตฌ๋ณํ์ง ์๊ณ ์ฒ๋ฆฌํ๊ธฐ ์ด๋ vim.keymap.set() ํจ์์์ ์ฌ์ฉ๋๊ณ ์๋ ๋ฐฉ๋ฒ์ด๋ค. ๋ด๋ถ์์ type์ด table์ด ์๋๋ฉด {mode}๋ก ํ์ด๋ธ๋ก ๋ฐ๊พธ๊ณ For๋ฌธ์ผ๋ก ์ฒ๋ฆฌํ๋ค. ์์ -- ํจ์ ์ ์ function my_map(mode, short, command, opts) local modes = type(mode) == 'table' and mode or { mode } for _, m in ipairs(modes) do vim.keymap.set(m, short, command, opts) end end -- ์ฌ์ฉ my_map('n','<leader>r', ':source %<CR>', {noremap=true}) my_map({ 'n','v' },'<leader>r', ':source %<CR>', {noremap=true})

Un Sueno en la Floresta - ์ฒ์์ ๊ฟ
์ ๋ชฉ: ์ฒ์์ ๊ฟ(Un Sueรฑo en la Floresta) ์๊ณก๊ฐ: ์๊ตฌ์คํด ๋ฐ๋ฆฌ์ค์ค ๋ง๊ณ ๋ (Agustรญn Barrios Mangorรฉ, 1885โ1944) ์ฐ์ฃผ: ๋ฐ๊ทํฌ ๊ธฐํ๊ณก์์ ๊ฐ์ฅ ์๋ฆ๋ค์ด ๊ณก์ค์ ํ๋๊ฐ ์๋๊นํ๋ค. ์ ํ๋ธ์ ์ฐพ์ ๋ณธ ๊ฒ ์ค ๊ฐ์ฅ ์๋ฒฝํ๊ณ ์๋ฆ๋ต๊ฒ ์ฐ์ฃผํ๋ค. ๋ฐ๊ทํฌ๋ ํ๊ตญ์ด ๋ณ์ ๋ณด๋ฌผ๊ฐ์ ๊ธฐํ๋ฆฌ์คํธ๋ค. ๋ง๊ณ ๋ ์ ๋ค๋ฅธ ์ํ์ผ๋ก๋ ๋์ฑ๋น(La Datedral), ์ ์ ์ฌ๋์ผ๋ก ํํผ์(Una Limosna por el Amor de Dios) ๋ฑ์ด ์๋ค. Links ๋ง๊ณ ๋ ์ ๋ํ ๊ธฐ๋ณธ ์ ๋ณด ๋ง๊ณ ๋ -๋๋ฌด์ํค ํ๋ผ๊ณผ์ด์ ๋ณ โ์๊ตฌ์คํด ๋ฐ๋ฆฌ์ค์ค ๋ง๊ณ ๋ โ - ๋ ธ์ตํธ์ ์์ ์นผ๋ผ https://happytownculturestory.tistory.com/735 ๋์ฑ๋น ์ข ์๋ฆฌ์์ ์๊ฐ ๋ฐ์ ๋ช ๊ณก - ์ฅ์ผ๋ฒ์ ์ ์พํ ํด๋์ https://news.cpbc.co.kr/article/819047

๋ณด์ฐ ์ผ๋ญ - ์๋ฆ๋ค์ด ๊ผด์ง
์บ๋ณด๋์์ ์ฌ์ ์ก์ ์ ์๋ค. 2023๋ 5์ 8์ผ ์งํ๋ 2023 ํ๋ํ ๋๋จ์์์ ๊ฒ์ ์ฌ์ 5000m ์์ ํญ์ฐ๊ฐ ์์์ง๋ ์์ค์๋ ๋๊น์ง ๋ฌ๋ฆฌ๋ฉฐ ํ์ ๊ฐ ๋์๋ค. ์ฑ์ ์ 1๋ฑ์๊ฒ 6๋ถ์ด๋ ๋ค์ง 22๋ถ 54์ด๋ก ๊ผด์ฐ๋ฅผ ๊ธฐ๋กํ์ง๋ง, ํญ์ฐ์์๋ ์์ฃผ์ ์ฑ๊ณตํ์ ๊ด์ค๋ค์ด ํํธ๋ฅผ ๋ณด๋ด์ฃผ์๊ณ , ์ด ์ ์๋ ์บ๋ณด๋์ ๊ตญ๊ธฐ๋ฅผ ๋ค์ด ์ฌ๋ฆฌ๋ฉฐ ์๋ตํด ์ฃผ์๋ค. โ๋ฌผ๋ก ๊ฒฝ๊ธฐ๋ฅผ ํฌ๊ธฐํ ๊ถ๋ฆฌ๊ฐ ์์์ง๋ง ์บ๋ณด๋์๋ฅผ ๋ํํ๋ ์๋ฌด๊ฐ ๋จผ์ ์๋ค. " ...
Luajit - Nvim Lsp Config
์๊ฐ ๋ฆฌ๋ ์ค ํ๊ฒฝ(Alpine Linux)์์ lua-language-server ์ค์นํ๊ณ nvim์์ ์ค์ ๋ฐ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด ๋ณธ๋ค. alpine 3.2x ๊ธฐ์ค์ผ๋ก ์ค๋ช ํ๋ค. ๊ณผ๊ฑฐ alpine ๋ฒ์ ๋ค์ lua-language-server๊ฐ ์๊ฑฐ๋ nvim์ ๋ฒ์ ์ด ๋ฎ์ ํ๋ฌ๊ทธ์ธ ์ง์์ ๋ฌธ์ ๊ฐ ์์๋ค. ํ์ฌ ์์ ์ ๊ธฐ์ค์ผ๋ก ๋ชจ๋ ์ ์ ํ ๋ฒ์ ์ ์ง์ํ๊ณ ํจํค์ง๋ ๋์ด ์๊ธฐ ๋๋ฌธ์ ์์ค ์ปดํ์ผ ๋ฑ์ ๋ถ๋ด์ด ์์ด์ก๋ค. ์ค์น luajit๋ฐ lua-language-server ๊ทธ๋ฆฌ๊ณ neovim๊ด๋ จ ํจํค์ง ์ค์น ์๋์ ๊ฒฝ์ฐ nvim(neovim) ์ค์น์ lfs.so,penlight๋ฑ์ด ๊ธฐ๋ณธ ํฌํจํ๊ฒ ๋๋ค. (์ถ๊ฐ ์ค์น ๋ถํ์) apk add --no-cache luajit luajit-dev lua-language-server ldoc apk add --no-cache neovim neovim-doc nvim-treesitter \ tree-sitter tree-sitter-cli tree-sitter-lua tree-sitter-bash \ tree-sitter-c tree-sitter-markdown tree-sitter-vimdoc ์ค์ ~/.config/nvim/init.lua์ ๋ค์ ์ค์ ์ ์ถ๊ฐ my_project_path๋ ๊ฐ๋ณ ๋ชจ๋์ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ์ด๋ค. workspace์ library ๋ฒ์๊ฐ ํฌ๋ฉด ๋ถํ๊ฐ ์ปค์ง๋ฏ๋ก ์ ๋นํ ์กฐ์ ํด ์ฃผ์ด์ผ nvim์์ ๋ฌด๋ฆฌ๊ฐ ์๋ค. ์๋ ์ฃผ์ ํ์๋ ๋ถ๋ถ์ ์ฃผ์ํด์ ํ์ธํ๊ณ ์์ ์๊ฒ ๋ง๋ ํ๊ฒฝ์ ์ค์ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ณผ๊ฑฐ sumneko๋ผ๋ ์์ผ๋ก ์ค์ ํ๋๋ฐ ํ์ฌ lspconfig.lua_ls.setup์ผ๋ก ๋ฐ๋์๋ค. -- Now set capabilities on your LSP servers local lspconfig = require'lspconfig' local my_project_path = os.getenv('HOME') .. '/.local/lib/lua' print(my_project_path) lspconfig.lua_ls.setup { --capabilities = capabilities, root_dir = lspconfig.util.root_pattern(".git", ".luarc.json", ".luarc.js"), settings = { Lua = { runtime = { version = 'Luajit', path = vim.split(package.path, ";"), }, diagnostics = { globals = {'vim'}, update_in_insert = false, }, workspace = { library = { --// ๊ธฐ๋ณธ vim ๋ฐํ์ ํ๊ฒฝ ๋ชจ๋ ์ถ๊ฐ [vim.env.VIMRUNTIME] = true, --// ๋ชจ๋ vim์ ๋ฐํ์ ํ๊ฒฝ ๋ชจ๋ ์ถ๊ฐ --[vim.api.nvim_get_runtime_file("", true)] = true, --// my project ๋ชจ๋ ์ถ๊ฐ [vim.fn.expand(my_project_path)] = true, }, --// ์ 3์ ๋ชจ๋ ์ ์ธ checkThirdParty = false, }, telemetry = { enable = false, }, }, }, } ์ฐธ๊ณ lua-language-server - Getting Started https://github.com/sumneko/lua-language-server/wiki/Getting-Started#command-line
lua - Lazy Loading ์ง์ฐ ๋ก๋ฉ
์ง์ฐ ๋ก๋ฉ(lazy loading)์ ํ์ํ ๋๋ง ๋ฆฌ์์ค๋ฅผ ๋ก๋ํ๋ ๊ธฐ๋ฒ์ผ๋ก, ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ์ ์ค์ด๊ณ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ต์ ํํ๋ ๋ฐ ์ ์ฉํ๋ค. Lua์์ ์ง์ฐ ๋ก๋ฉ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค. ์ง์ฐ ๋ก๋ฉ ๊ตฌํ ๋ฐฉ๋ฒ ํจ์๋ก ๋ชจ๋ ๋ก๋: ๋ชจ๋์ ์ง์ ๋ก๋ํ๋ ๋์ , ํ์ํ ๋ ํธ์ถ๋๋ ํจ์๋ฅผ ์ ์ํ์ฌ ๋ชจ๋์ ๋ก๋ํ๋ค. ๋ณ์๋ก ๋ชจ๋ ์ ์ฅ: ๋ชจ๋์ ๋ก๋ํ ํ, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ณ์์ ์ ์ฅํ์ฌ ์ดํ์ ์ฌ์ฌ์ฉํ ์ ์๋๋ก ํ๋ค. ์์ mymodule.lua (๋ชจ๋ ํ์ผ) local M = {} function M.hello() print("Hello from mymodule!") end function M.goodbye() print("Goodbye from mymodule!") end return M main.lua (๋ฉ์ธ ํ๋ก๊ทธ๋จ) local mymodule -- ๋ชจ๋์ ๋ฏธ๋ฆฌ ์ ์ธํ์ง๋ง ๋ก๋ํ์ง ์์ local function loadModule() if not mymodule then mymodule = require 'mymodule' -- ํ์ํ ๋ ๋ชจ๋ ๋ก๋ end end -- ํน์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ชจ๋์ ํจ์๋ฅผ ํธ์ถ local condition = true if condition then loadModule() -- ๋ชจ๋ ๋ก๋ mymodule.hello() -- ๋ชจ๋์ ํจ์ ์ฌ์ฉ else print("๋ชจ๋์ ๋ก๋ํ์ง ์์์ต๋๋ค.") end ์ค๋ช ๋ชจ๋ ํ์ผ: mymodule.lua ํ์ผ์๋ ๋ ๊ฐ์ ํจ์ hello์ goodbye๊ฐ ์ ์๋์ด ์๋ค. ...