Repository: craftzdog/dotfiles-public
Branch: master
Commit: accc00345455
Files: 40
Total size: 55.0 KB
Directory structure:
gitextract_9scmqroy/
├── .config/
│ ├── fish/
│ │ ├── conf.d/
│ │ │ └── tide.fish
│ │ ├── config-linux.fish
│ │ ├── config-osx.fish
│ │ ├── config-windows.fish
│ │ ├── config.fish
│ │ └── functions/
│ │ ├── fish_user_key_bindings.fish
│ │ └── fzf_change_directory.fish
│ ├── ghostty/
│ │ └── config
│ ├── lazygit/
│ │ └── config.yml
│ ├── mise/
│ │ └── config.toml
│ ├── nvim/
│ │ ├── init.lua
│ │ └── lua/
│ │ ├── config/
│ │ │ ├── autocmds.lua
│ │ │ ├── keymaps.lua
│ │ │ ├── lazy.lua
│ │ │ └── options.lua
│ │ ├── craftzdog/
│ │ │ ├── discipline.lua
│ │ │ ├── hsl.lua
│ │ │ └── lsp.lua
│ │ ├── plugins/
│ │ │ ├── coding.lua
│ │ │ ├── colorscheme.lua
│ │ │ ├── editor.lua
│ │ │ ├── lsp.lua
│ │ │ ├── treesitter.lua
│ │ │ └── ui.lua
│ │ └── util/
│ │ └── debug.lua
│ ├── powershell/
│ │ ├── takuya.omp.json
│ │ └── user_profile.ps1
│ └── tmux/
│ ├── macos.conf
│ ├── statusline.conf
│ ├── theme.conf
│ ├── tmux.conf
│ └── utility.conf
├── .czrc
├── .gitconfig
├── .github/
│ └── workflows/
│ ├── claude-code-review.yml
│ └── claude.yml
├── .gitignore
├── .scripts/
│ └── ide
├── ISSUE_TEMPLATE.md
└── README.md
================================================
FILE CONTENTS
================================================
================================================
FILE: .config/fish/conf.d/tide.fish
================================================
set -g tide_git_bg_color 268bd2
set -g tide_git_bg_color_unstable C4A000
set -g tide_git_bg_color_urgent CC0000
set -g tide_git_branch_color 000000
set -g tide_git_color_branch 000000
set -g tide_git_color_conflicted 000000
set -g tide_git_color_dirty 000000
set -g tide_git_color_operation 000000
set -g tide_git_color_staged 000000
set -g tide_git_color_stash 000000
set -g tide_git_color_untracked 000000
set -g tide_git_color_upstream 000000
set -g tide_git_conflicted_color 000000
set -g tide_git_dirty_color 000000
set -g tide_git_icon
set -g tide_git_operation_color 000000
set -g tide_git_staged_color 000000
set -g tide_git_stash_color 000000
set -g tide_git_untracked_color 000000
set -g tide_git_upstream_color 000000
set -g tide_pwd_bg_color 444444
================================================
FILE: .config/fish/config-linux.fish
================================================
if type -q eza
alias ll "eza -l -g --icons"
alias lla "ll -a"
end
================================================
FILE: .config/fish/config-osx.fish
================================================
if type -q eza
alias ll "eza -l -g --icons"
alias lla "ll -a"
end
# Inkdrop
set -gx INKDROP_HOME ~/.inkdrop
# Fzf
set -g FZF_PREVIEW_FILE_CMD "bat --style=numbers --color=always --line-range :500"
set -g FZF_LEGACY_KEYBINDINGS 0
================================================
FILE: .config/fish/config-windows.fish
================================================
================================================
FILE: .config/fish/config.fish
================================================
set fish_greeting ""
set -gx TERM xterm-256color
# theme
set -g theme_color_scheme terminal-dark
set -g fish_prompt_pwd_dir_length 1
set -g theme_display_user yes
set -g theme_hide_hostname no
set -g theme_hostname always
# aliases
alias ls "ls -p -G"
alias la "ls -A"
alias ll "ls -l"
alias lla "ll -A"
alias g git
alias c claude
alias claude-yolo "claude --dangerously-skip-permissions"
command -qv nvim && alias vim nvim
set -gx EDITOR nvim
set -gx PATH bin $PATH
set -gx PATH ~/bin $PATH
set -gx PATH ~/.local/bin $PATH
# NodeJS
set -gx PATH node_modules/.bin $PATH
# Go
set -g GOPATH $HOME/go
set -gx PATH $GOPATH/bin $PATH
switch (uname)
case Darwin
source (dirname (status --current-filename))/config-osx.fish
case Linux
source (dirname (status --current-filename))/config-linux.fish
case '*'
source (dirname (status --current-filename))/config-windows.fish
end
set LOCAL_CONFIG (dirname (status --current-filename))/config-local.fish
if test -f $LOCAL_CONFIG
source $LOCAL_CONFIG
end
================================================
FILE: .config/fish/functions/fish_user_key_bindings.fish
================================================
function fish_user_key_bindings
# fzf
bind \cf fzf_change_directory
# vim-like
bind \cl forward-char
# prevent iterm2 from closing when typing Ctrl-D (EOF)
bind \cd delete-char
end
# fzf plugin
fzf_configure_bindings --directory=\co
================================================
FILE: .config/fish/functions/fzf_change_directory.fish
================================================
function _fzf_change_directory
fzf | perl -pe 's/([ ()])/\\\\$1/g'|read foo
if [ $foo ]
builtin cd $foo
commandline -r ''
commandline -f repaint
else
commandline ''
end
end
function fzf_change_directory
begin
echo $HOME/.config
find $(ghq root) -maxdepth 4 -type d -name .git | sed 's/\/\.git//'
ls -ad */|perl -pe "s#^#$PWD/#"|grep -v \.git
ls -ad $HOME/Developments/*/* |grep -v \.git
end | sed -e 's/\/$//' | awk '!a[$0]++' | _fzf_change_directory $argv
end
================================================
FILE: .config/ghostty/config
================================================
theme = "Solarized Dark - Patched"
background-opacity = 0.9
background-blur-radius = 20
background = #031219
font-family = "PlemolJP Console NF"
cursor-style = block
cursor-style-blink = true
#keybind = global:cmd+ctrl+shift+j=toggle_visibility
macos-option-as-alt = left
keybind = alt+left=unbind
keybind = alt+right=unbind
================================================
FILE: .config/lazygit/config.yml
================================================
customCommands:
- key: "C"
command: "git cz"
description: "commit with commitizen"
context: "files"
loadingText: "opening commitizen commit tool"
output: terminal
gui:
mouseEvents: false
================================================
FILE: .config/mise/config.toml
================================================
[tools]
bun = "latest"
ghq = "latest"
node = "latest"
python = "latest"
ruby = "latest"
rust = "latest"
================================================
FILE: .config/nvim/init.lua
================================================
if vim.loader then
vim.loader.enable()
end
_G.dd = function(...)
require("util.debug").dump(...)
end
vim.print = _G.dd
require("config.lazy")
================================================
FILE: .config/nvim/lua/config/autocmds.lua
================================================
-- Turn off paste mode when leaving insert
vim.api.nvim_create_autocmd("InsertLeave", {
pattern = "*",
command = "set nopaste",
})
-- Disable the concealing in some file formats
-- The default conceallevel is 3 in LazyVim
vim.api.nvim_create_autocmd("FileType", {
pattern = { "json", "jsonc", "markdown" },
callback = function()
vim.opt.conceallevel = 0
end,
})
================================================
FILE: .config/nvim/lua/config/keymaps.lua
================================================
local discipline = require("craftzdog.discipline")
discipline.cowboy()
local keymap = vim.keymap
local opts = { noremap = true, silent = true }
-- Do things without affecting the registers
keymap.set("n", "x", '"_x')
keymap.set("n", "<Leader>p", '"0p')
keymap.set("n", "<Leader>P", '"0P')
keymap.set("v", "<Leader>p", '"0p')
keymap.set("n", "<Leader>c", '"_c')
keymap.set("n", "<Leader>C", '"_C')
keymap.set("v", "<Leader>c", '"_c')
keymap.set("v", "<Leader>C", '"_C')
keymap.set("n", "<Leader>d", '"_d')
keymap.set("n", "<Leader>D", '"_D')
keymap.set("v", "<Leader>d", '"_d')
keymap.set("v", "<Leader>D", '"_D')
-- Increment/decrement
keymap.set("n", "+", "<C-a>")
keymap.set("n", "-", "<C-x>")
-- Delete a word backwards
keymap.set("n", "dw", 'vb"_d')
-- Select all
keymap.set("n", "<C-a>", "gg<S-v>G")
-- Save with root permission (not working for now)
--vim.api.nvim_create_user_command('W', 'w !sudo tee > /dev/null %', {})
-- Disable continuations
keymap.set("n", "<Leader>o", "o<Esc>^Da", opts)
keymap.set("n", "<Leader>O", "O<Esc>^Da", opts)
-- Jumplist
keymap.set("n", "<C-m>", "<C-i>", opts)
-- New tab
keymap.set("n", "te", ":tabedit")
keymap.set("n", "<tab>", ":tabnext<Return>", opts)
keymap.set("n", "<s-tab>", ":tabprev<Return>", opts)
-- Split window
keymap.set("n", "ss", ":split<Return>", opts)
keymap.set("n", "sv", ":vsplit<Return>", opts)
-- Move window
keymap.set("n", "sh", "<C-w>h")
keymap.set("n", "sk", "<C-w>k")
keymap.set("n", "sj", "<C-w>j")
keymap.set("n", "sl", "<C-w>l")
-- Resize window
keymap.set("n", "<C-w><left>", "<C-w><")
keymap.set("n", "<C-w><right>", "<C-w>>")
keymap.set("n", "<C-w><up>", "<C-w>+")
keymap.set("n", "<C-w><down>", "<C-w>-")
-- Diagnostics
keymap.set("n", "<C-j>", function()
vim.diagnostic.goto_next()
end, opts)
keymap.set("n", "<leader>r", function()
require("craftzdog.hsl").replaceHexWithHSL()
end)
keymap.set("n", "<leader>i", function()
require("craftzdog.lsp").toggleInlayHints()
end)
vim.api.nvim_create_user_command("ToggleAutoformat", function()
require("craftzdog.lsp").toggleAutoformat()
end, {})
================================================
FILE: .config/nvim/lua/config/lazy.lua
================================================
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup({
spec = {
-- add LazyVim and import its plugins
{
"LazyVim/LazyVim",
import = "lazyvim.plugins",
opts = {
colorscheme = "solarized-osaka",
news = {
lazyvim = true,
neovim = true,
},
},
},
-- import any extras modules here
{ import = "lazyvim.plugins.extras.linting.eslint" },
{ import = "lazyvim.plugins.extras.formatting.prettier" },
{ import = "lazyvim.plugins.extras.lang.typescript" },
{ import = "lazyvim.plugins.extras.lang.json" },
-- { import = "lazyvim.plugins.extras.lang.markdown" },
{ import = "lazyvim.plugins.extras.lang.rust" },
{ import = "lazyvim.plugins.extras.lang.tailwind" },
-- { import = "lazyvim.plugins.extras.dap.core" },
-- { import = "lazyvim.plugins.extras.vscode" },
{ import = "lazyvim.plugins.extras.util.mini-hipatterns" },
-- { import = "lazyvim.plugins.extras.test.core" },
-- { import = "lazyvim.plugins.extras.coding.yanky" },
-- { import = "lazyvim.plugins.extras.editor.mini-files" },
-- { import = "lazyvim.plugins.extras.util.project" },
{ import = "plugins" },
},
defaults = {
-- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
-- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
lazy = false,
-- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
-- have outdated releases, which may break your Neovim install.
version = false, -- always use the latest git commit
-- version = "*", -- try installing the latest stable version for plugins that support semver
},
dev = {
path = "~/.ghq/github.com",
},
checker = { enabled = true }, -- automatically check for plugin updates
performance = {
cache = {
enabled = true,
-- disable_events = {},
},
rtp = {
-- disable some rtp plugins
disabled_plugins = {
"gzip",
-- "matchit",
-- "matchparen",
"netrwPlugin",
"rplugin",
"tarPlugin",
"tohtml",
"tutor",
"zipPlugin",
},
},
},
ui = {
custom_keys = {
["<localleader>d"] = function(plugin)
dd(plugin)
end,
},
},
debug = false,
})
================================================
FILE: .config/nvim/lua/config/options.lua
================================================
vim.g.mapleader = " "
vim.opt.encoding = "utf-8"
vim.opt.fileencoding = "utf-8"
vim.opt.number = true
vim.opt.title = true
vim.opt.autoindent = true
vim.opt.smartindent = true
vim.opt.hlsearch = true
vim.opt.backup = false
vim.opt.showcmd = true
vim.opt.cmdheight = 1
vim.opt.laststatus = 3
vim.opt.expandtab = true
vim.opt.scrolloff = 10
vim.opt.shell = "fish"
vim.opt.backupskip = { "/tmp/*", "/private/tmp/*" }
vim.opt.inccommand = "split"
vim.opt.ignorecase = true -- Case insensitive searching UNLESS /C or capital in search
vim.opt.smarttab = true
vim.opt.breakindent = true
vim.opt.shiftwidth = 2
vim.opt.tabstop = 2
vim.opt.wrap = false -- No Wrap lines
vim.opt.backspace = { "start", "eol", "indent" }
vim.opt.path:append({ "**" }) -- Finding files - Search down into subfolders
vim.opt.wildignore:append({ "*/node_modules/*" })
vim.opt.splitbelow = true -- Put new windows below current
vim.opt.splitright = true -- Put new windows right of current
vim.opt.splitkeep = "cursor"
vim.opt.mouse = ""
-- Undercurl
vim.cmd([[let &t_Cs = "\e[4:3m"]])
vim.cmd([[let &t_Ce = "\e[4:0m"]])
-- Add asterisks in block comments
vim.opt.formatoptions:append({ "r" })
vim.cmd([[au BufNewFile,BufRead *.astro setf astro]])
vim.cmd([[au BufNewFile,BufRead Podfile setf ruby]])
if vim.fn.has("nvim-0.8") == 1 then
vim.opt.cmdheight = 0
end
-- File types
vim.filetype.add({
extension = {
mdx = "mdx",
},
})
vim.g.lazyvim_prettier_needs_config = true
vim.g.lazyvim_picker = "telescope"
vim.g.lazyvim_cmp = "blink.cmp"
================================================
FILE: .config/nvim/lua/craftzdog/discipline.lua
================================================
local M = {}
function M.cowboy()
---@type table?
local ok = true
for _, key in ipairs({ "h", "j", "k", "l", "+", "-" }) do
local count = 0
local timer = assert(vim.uv.new_timer())
local map = key
vim.keymap.set("n", key, function()
if vim.v.count > 0 then
count = 0
end
if count >= 10 and vim.bo.buftype ~= "nofile" then
ok = pcall(vim.notify, "Hold it Cowboy!", vim.log.levels.WARN, {
icon = "🤠",
id = "cowboy",
keep = function()
return count >= 10
end,
})
if not ok then
return map
end
else
count = count + 1
timer:start(2000, 0, function()
count = 0
end)
return map
end
end, { expr = true, silent = true })
end
end
return M
================================================
FILE: .config/nvim/lua/craftzdog/hsl.lua
================================================
-- https://github.com/EmmanuelOga/columns/blob/master/utils/color.lua
local M = {}
local hexChars = "0123456789abcdef"
function M.hex_to_rgb(hex)
hex = string.lower(hex)
local ret = {}
for i = 0, 2 do
local char1 = string.sub(hex, i * 2 + 2, i * 2 + 2)
local char2 = string.sub(hex, i * 2 + 3, i * 2 + 3)
local digit1 = string.find(hexChars, char1) - 1
local digit2 = string.find(hexChars, char2) - 1
ret[i + 1] = (digit1 * 16 + digit2) / 255.0
end
return ret
end
--[[
* Converts an RGB color value to HSL. Conversion formula
* adapted from http://en.wikipedia.org/wiki/HSL_color_space.
* Assumes r, g, and b are contained in the set [0, 255] and
* returns h, s, and l in the set [0, 1].
*
* @param Number r The red color value
* @param Number g The green color value
* @param Number b The blue color value
* @return Array The HSL representation
]]
function M.rgbToHsl(r, g, b)
local max, min = math.max(r, g, b), math.min(r, g, b)
local h = 0
local s = 0
local l = 0
l = (max + min) / 2
if max == min then
h, s = 0, 0 -- achromatic
else
local d = max - min
if l > 0.5 then
s = d / (2 - max - min)
else
s = d / (max + min)
end
if max == r then
h = (g - b) / d
if g < b then
h = h + 6
end
elseif max == g then
h = (b - r) / d + 2
elseif max == b then
h = (r - g) / d + 4
end
h = h / 6
end
return h * 360, s * 100, l * 100
end
--[[
* Converts an HSL color value to RGB. Conversion formula
* adapted from http://en.wikipedia.org/wiki/HSL_color_space.
* Assumes h, s, and l are contained in the set [0, 1] and
* returns r, g, and b in the set [0, 255].
*
* @param Number h The hue
* @param Number s The saturation
* @param Number l The lightness
* @return Array The RGB representation
]]
function M.hslToRgb(h, s, l)
local r, g, b
if s == 0 then
r, g, b = l, l, l -- achromatic
else
function hue2rgb(p, q, t)
if t < 0 then
t = t + 1
end
if t > 1 then
t = t - 1
end
if t < 1 / 6 then
return p + (q - p) * 6 * t
end
if t < 1 / 2 then
return q
end
if t < 2 / 3 then
return p + (q - p) * (2 / 3 - t) * 6
end
return p
end
local q
if l < 0.5 then
q = l * (1 + s)
else
q = l + s - l * s
end
local p = 2 * l - q
r = hue2rgb(p, q, h + 1 / 3)
g = hue2rgb(p, q, h)
b = hue2rgb(p, q, h - 1 / 3)
end
return r * 255, g * 255, b * 255
end
function M.hexToHSL(hex)
local hsluv = require("solarized-osaka.hsluv")
local rgb = M.hex_to_rgb(hex)
local h, s, l = M.rgbToHsl(rgb[1], rgb[2], rgb[3])
return string.format("hsl(%d, %d, %d)", math.floor(h + 0.5), math.floor(s + 0.5), math.floor(l + 0.5))
end
--[[
* Converts an HSL color value to RGB in Hex representation.
* @param Number h The hue
* @param Number s The saturation
* @param Number l The lightness
* @return String The hex representation
]]
function M.hslToHex(h, s, l)
local r, g, b = M.hslToRgb(h / 360, s / 100, l / 100)
return string.format("#%02x%02x%02x", r, g, b)
end
function M.replaceHexWithHSL()
-- Get the current line number
local line_number = vim.api.nvim_win_get_cursor(0)[1]
-- Get the line content
local line_content = vim.api.nvim_buf_get_lines(0, line_number - 1, line_number, false)[1]
-- Find hex code patterns and replace them
for hex in line_content:gmatch("#[0-9a-fA-F]+") do
local hsl = M.hexToHSL(hex)
line_content = line_content:gsub(hex, hsl)
end
-- Set the line content back
vim.api.nvim_buf_set_lines(0, line_number - 1, line_number, false, { line_content })
end
return M
================================================
FILE: .config/nvim/lua/craftzdog/lsp.lua
================================================
local M = {}
local LazyvimUtil = require("lazyvim.util")
function M.toggleInlayHints()
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled())
end
function M.toggleAutoformat()
LazyvimUtil.format.toggle()
end
return M
================================================
FILE: .config/nvim/lua/plugins/coding.lua
================================================
return {
-- Incremental rename
{
"smjonas/inc-rename.nvim",
cmd = "IncRename",
config = true,
},
-- Go forward/backward with square brackets
{
"nvim-mini/mini.bracketed",
event = "BufReadPost",
config = function()
local bracketed = require("mini.bracketed")
bracketed.setup({
file = { suffix = "" },
window = { suffix = "" },
quickfix = { suffix = "" },
yank = { suffix = "" },
treesitter = { suffix = "n" },
})
end,
},
-- Better increase/descrease
{
"monaqa/dial.nvim",
-- stylua: ignore
keys = {
{ "<C-a>", function() return require("dial.map").inc_normal() end, expr = true, desc = "Increment" },
{ "<C-x>", function() return require("dial.map").dec_normal() end, expr = true, desc = "Decrement" },
},
config = function()
local augend = require("dial.augend")
require("dial.config").augends:register_group({
default = {
augend.integer.alias.decimal,
augend.integer.alias.hex,
augend.date.alias["%Y/%m/%d"],
augend.constant.alias.bool,
augend.semver.alias.semver,
augend.constant.new({ elements = { "let", "const" } }),
},
})
end,
},
-- copilot
{
"zbirenbaum/copilot.lua",
opts = {
suggestion = {
auto_trigger = true,
keymap = {
accept = "<C-l>",
accept_word = "<M-l>",
accept_line = "<M-S-l>",
next = "<M-]>",
prev = "<M-[>",
dismiss = "<C-]>",
},
},
filetypes = {
markdown = true,
help = true,
},
},
},
}
================================================
FILE: .config/nvim/lua/plugins/colorscheme.lua
================================================
return {
{
"craftzdog/solarized-osaka.nvim",
lazy = true,
priority = 1000,
opts = function()
return {
transparent = true,
}
end,
},
}
================================================
FILE: .config/nvim/lua/plugins/editor.lua
================================================
return {
{
enabled = false,
"folke/flash.nvim",
---@type Flash.Config
opts = {
search = {
forward = true,
multi_window = false,
wrap = false,
incremental = true,
},
},
},
{
"brenoprata10/nvim-highlight-colors",
event = "BufReadPre",
opts = {
render = "background",
enable_hex = true,
enable_short_hex = true,
enable_rgb = true,
enable_hsl = true,
enable_hsl_without_function = true,
enable_ansi = true,
enable_var_usage = true,
enable_tailwind = true,
},
},
{
"dinhhuy258/git.nvim",
event = "BufReadPre",
opts = {
keymaps = {
-- Open blame window
blame = "<Leader>gb",
-- Open file/folder in git repository
browse = "<Leader>go",
},
},
},
{
"nvim-telescope/telescope.nvim",
dependencies = {
{
"nvim-telescope/telescope-fzf-native.nvim",
build = "make",
},
"nvim-telescope/telescope-file-browser.nvim",
},
keys = {
{
"<leader>fP",
function()
require("telescope.builtin").find_files({
cwd = require("lazy.core.config").options.root,
})
end,
desc = "Find Plugin File",
},
{
";f",
function()
local builtin = require("telescope.builtin")
builtin.find_files({
no_ignore = false,
hidden = true,
})
end,
desc = "Lists files in your current working directory, respects .gitignore",
},
{
";r",
function()
local builtin = require("telescope.builtin")
builtin.live_grep({
additional_args = { "--hidden" },
})
end,
desc = "Search for a string in your current working directory and get results live as you type, respects .gitignore",
},
{
"\\\\",
function()
local builtin = require("telescope.builtin")
builtin.buffers()
end,
desc = "Lists open buffers",
},
{
";t",
function()
local builtin = require("telescope.builtin")
builtin.help_tags()
end,
desc = "Lists available help tags and opens a new window with the relevant help info on <cr>",
},
{
";;",
function()
local builtin = require("telescope.builtin")
builtin.resume()
end,
desc = "Resume the previous telescope picker",
},
{
";e",
function()
local builtin = require("telescope.builtin")
builtin.diagnostics()
end,
desc = "Lists Diagnostics for all open buffers or a specific buffer",
},
{
";s",
function()
local builtin = require("telescope.builtin")
builtin.treesitter()
end,
desc = "Lists Function names, variables, from Treesitter",
},
{
";c",
function()
local builtin = require("telescope.builtin")
builtin.lsp_incoming_calls()
end,
desc = "Lists LSP incoming calls for word under the cursor",
},
{
"sf",
function()
local telescope = require("telescope")
local function telescope_buffer_dir()
return vim.fn.expand("%:p:h")
end
telescope.extensions.file_browser.file_browser({
path = "%:p:h",
cwd = telescope_buffer_dir(),
respect_gitignore = false,
hidden = true,
grouped = true,
previewer = false,
initial_mode = "normal",
layout_config = { height = 40 },
})
end,
desc = "Open File Browser with the path of the current buffer",
},
},
config = function(_, opts)
local telescope = require("telescope")
local actions = require("telescope.actions")
local fb_actions = require("telescope").extensions.file_browser.actions
opts.defaults = vim.tbl_deep_extend("force", opts.defaults, {
wrap_results = true,
layout_strategy = "horizontal",
layout_config = { prompt_position = "top" },
sorting_strategy = "ascending",
winblend = 0,
mappings = {
n = {},
},
})
opts.pickers = {
diagnostics = {
theme = "ivy",
initial_mode = "normal",
layout_config = {
preview_cutoff = 9999,
},
},
}
opts.extensions = {
file_browser = {
theme = "dropdown",
-- disables netrw and use telescope-file-browser in its place
hijack_netrw = true,
mappings = {
-- your custom insert mode mappings
["n"] = {
-- your custom normal mode mappings
["N"] = fb_actions.create,
["h"] = fb_actions.goto_parent_dir,
["/"] = function()
vim.cmd("startinsert")
end,
["<C-u>"] = function(prompt_bufnr)
for i = 1, 10 do
actions.move_selection_previous(prompt_bufnr)
end
end,
["<C-d>"] = function(prompt_bufnr)
for i = 1, 10 do
actions.move_selection_next(prompt_bufnr)
end
end,
["<PageUp>"] = actions.preview_scrolling_up,
["<PageDown>"] = actions.preview_scrolling_down,
},
},
},
}
telescope.setup(opts)
require("telescope").load_extension("fzf")
require("telescope").load_extension("file_browser")
end,
},
{
"kazhala/close-buffers.nvim",
event = "VeryLazy",
keys = {
{
"<leader>th",
function()
require("close_buffers").delete({ type = "hidden" })
end,
"Close Hidden Buffers",
},
{
"<leader>tu",
function()
require("close_buffers").delete({ type = "nameless" })
end,
"Close Nameless Buffers",
},
},
},
{
"saghen/blink.cmp",
opts = {
completion = {
menu = {
winblend = vim.o.pumblend,
},
},
signature = {
window = {
winblend = vim.o.pumblend,
},
},
},
},
}
================================================
FILE: .config/nvim/lua/plugins/lsp.lua
================================================
return {
-- tools
{
"mason-org/mason.nvim",
opts = function(_, opts)
vim.list_extend(opts.ensure_installed, {
"stylua",
"selene",
"luacheck",
"shellcheck",
"shfmt",
"tailwindcss-language-server",
"typescript-language-server",
"css-lsp",
})
end,
},
-- lsp servers
{
"neovim/nvim-lspconfig",
opts = {
inlay_hints = { enabled = false },
---@type lspconfig.options
servers = {
cssls = {},
tailwindcss = {
root_dir = function(...)
return require("lspconfig.util").root_pattern(".git")(...)
end,
},
tsserver = {
root_dir = function(...)
return require("lspconfig.util").root_pattern(".git")(...)
end,
single_file_support = false,
settings = {
typescript = {
inlayHints = {
includeInlayParameterNameHints = "literal",
includeInlayParameterNameHintsWhenArgumentMatchesName = false,
includeInlayFunctionParameterTypeHints = true,
includeInlayVariableTypeHints = false,
includeInlayPropertyDeclarationTypeHints = true,
includeInlayFunctionLikeReturnTypeHints = true,
includeInlayEnumMemberValueHints = true,
},
},
javascript = {
inlayHints = {
includeInlayParameterNameHints = "all",
includeInlayParameterNameHintsWhenArgumentMatchesName = false,
includeInlayFunctionParameterTypeHints = true,
includeInlayVariableTypeHints = true,
includeInlayPropertyDeclarationTypeHints = true,
includeInlayFunctionLikeReturnTypeHints = true,
includeInlayEnumMemberValueHints = true,
},
},
},
},
html = {},
yamlls = {
settings = {
yaml = {
keyOrdering = false,
},
},
},
lua_ls = {
-- enabled = false,
single_file_support = true,
settings = {
Lua = {
workspace = {
checkThirdParty = false,
},
completion = {
workspaceWord = true,
callSnippet = "Both",
},
misc = {
parameters = {
-- "--log-level=trace",
},
},
hint = {
enable = true,
setType = false,
paramType = true,
paramName = "Disable",
semicolon = "Disable",
arrayIndex = "Disable",
},
doc = {
privateName = { "^_" },
},
type = {
castNumberToInteger = true,
},
diagnostics = {
disable = { "incomplete-signature-doc", "trailing-space" },
-- enable = false,
groupSeverity = {
strong = "Warning",
strict = "Warning",
},
groupFileStatus = {
["ambiguity"] = "Opened",
["await"] = "Opened",
["codestyle"] = "None",
["duplicate"] = "Opened",
["global"] = "Opened",
["luadoc"] = "Opened",
["redefined"] = "Opened",
["strict"] = "Opened",
["strong"] = "Opened",
["type-check"] = "Opened",
["unbalanced"] = "Opened",
["unused"] = "Opened",
},
unusedLocalExclude = { "_*" },
},
format = {
enable = false,
defaultConfig = {
indent_style = "space",
indent_size = "2",
continuation_indent_size = "2",
},
},
},
},
},
},
setup = {},
},
},
{
"neovim/nvim-lspconfig",
opts = function()
local keys = require("lazyvim.plugins.lsp.keymaps").get()
vim.list_extend(keys, {
{
"gd",
function()
-- DO NOT RESUSE WINDOW
require("telescope.builtin").lsp_definitions({ reuse_win = false })
end,
desc = "Goto Definition",
has = "definition",
},
})
end,
},
}
================================================
FILE: .config/nvim/lua/plugins/treesitter.lua
================================================
return {
{ "nvim-treesitter/playground", cmd = "TSPlaygroundToggle" },
{
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
opts = {
ensure_installed = {
"astro",
"cmake",
"cpp",
"css",
"fish",
"gitignore",
"go",
"graphql",
"http",
"java",
"php",
"rust",
"scss",
"sql",
"svelte",
},
-- matchup = {
-- enable = true,
-- },
-- https://github.com/nvim-treesitter/playground#query-linter
query_linter = {
enable = true,
use_virtual_text = true,
lint_events = { "BufWrite", "CursorHold" },
},
playground = {
enable = true,
disable = {},
updatetime = 25, -- Debounced time for highlighting nodes in the playground from source code
persist_queries = true, -- Whether the query persists across vim sessions
keybindings = {
toggle_query_editor = "o",
toggle_hl_groups = "i",
toggle_injected_languages = "t",
toggle_anonymous_nodes = "a",
toggle_language_display = "I",
focus_language = "f",
unfocus_language = "F",
update = "R",
goto_node = "<cr>",
show_help = "?",
},
},
},
config = function(_, opts)
local TS = require("nvim-treesitter")
TS.setup(opts)
-- MDX
vim.filetype.add({
extension = {
mdx = "mdx",
},
})
vim.treesitter.language.register("markdown", "mdx")
end,
},
}
================================================
FILE: .config/nvim/lua/plugins/ui.lua
================================================
return {
-- messages, cmdline and the popupmenu
{
"folke/noice.nvim",
opts = function(_, opts)
table.insert(opts.routes, {
filter = {
event = "notify",
find = "No information available",
},
opts = { skip = true },
})
local focused = true
vim.api.nvim_create_autocmd("FocusGained", {
callback = function()
focused = true
end,
})
vim.api.nvim_create_autocmd("FocusLost", {
callback = function()
focused = false
end,
})
table.insert(opts.routes, 1, {
filter = {
cond = function()
return not focused
end,
},
view = "notify_send",
opts = { stop = false },
})
opts.commands = {
all = {
-- options for the message history that you get with `:Noice`
view = "split",
opts = { enter = true, format = "details" },
filter = {},
},
}
vim.api.nvim_create_autocmd("FileType", {
pattern = "markdown",
callback = function(event)
vim.schedule(function()
require("noice.text.markdown").keys(event.buf)
end)
end,
})
opts.presets.lsp_doc_border = true
end,
},
{
"rcarriga/nvim-notify",
opts = {
timeout = 5000,
},
},
{
"snacks.nvim",
opts = {
scroll = { enabled = false },
},
keys = {},
},
-- buffer line
{
"akinsho/bufferline.nvim",
event = "VeryLazy",
keys = {
{ "<Tab>", "<Cmd>BufferLineCycleNext<CR>", desc = "Next tab" },
{ "<S-Tab>", "<Cmd>BufferLineCyclePrev<CR>", desc = "Prev tab" },
},
opts = {
options = {
mode = "tabs",
-- separator_style = "slant",
show_buffer_close_icons = false,
show_close_icon = false,
},
},
},
-- filename
{
"b0o/incline.nvim",
dependencies = { "craftzdog/solarized-osaka.nvim" },
event = "BufReadPre",
priority = 1200,
config = function()
local colors = require("solarized-osaka.colors").setup()
require("incline").setup({
highlight = {
groups = {
InclineNormal = { guibg = colors.magenta500, guifg = colors.base04 },
InclineNormalNC = { guifg = colors.violet500, guibg = colors.base03 },
},
},
window = { margin = { vertical = 0, horizontal = 1 } },
hide = {
cursorline = true,
},
render = function(props)
local filename = vim.fn.fnamemodify(vim.api.nvim_buf_get_name(props.buf), ":t")
if vim.bo[props.buf].modified then
filename = "[+] " .. filename
end
local icon, color = require("nvim-web-devicons").get_icon_color(filename)
return { { icon, guifg = color }, { " " }, { filename } }
end,
})
end,
},
-- statusline
{
"nvim-lualine/lualine.nvim",
opts = function(_, opts)
local LazyVim = require("lazyvim.util")
opts.sections.lualine_c[4] = {
LazyVim.lualine.pretty_path({
length = 0,
relative = "cwd",
modified_hl = "MatchParen",
directory_hl = "",
filename_hl = "Bold",
modified_sign = "",
readonly_icon = " ",
}),
}
end,
},
{
"folke/zen-mode.nvim",
cmd = "ZenMode",
opts = {
plugins = {
gitsigns = true,
tmux = true,
kitty = { enabled = false, font = "+2" },
},
},
keys = { { "<leader>z", "<cmd>ZenMode<cr>", desc = "Zen Mode" } },
},
{
"MeanderingProgrammer/render-markdown.nvim",
enabled = false,
},
{
"folke/snacks.nvim",
opts = {
dashboard = {
preset = {
header = [[
██████╗ ███████╗██╗ ██╗ █████╗ ███████╗██╗ ██╗███████╗███████╗
██╔══██╗██╔════╝██║ ██║██╔══██╗██╔════╝██║ ██║██╔════╝██╔════╝
██║ ██║█████╗ ██║ ██║███████║███████╗██║ ██║█████╗ █████╗
██║ ██║██╔══╝ ╚██╗ ██╔╝██╔══██║╚════██║██║ ██║██╔══╝ ██╔══╝
██████╔╝███████╗ ╚████╔╝ ██║ ██║███████║███████╗██║██║ ███████╗
╚═════╝ ╚══════╝ ╚═══╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚═╝╚═╝ ╚══════╝
]],
},
},
},
},
}
================================================
FILE: .config/nvim/lua/util/debug.lua
================================================
-- selene: allow(global_usage)
local M = {}
function M.get_loc()
local me = debug.getinfo(1, "S")
local level = 2
local info = debug.getinfo(level, "S")
while info and (info.source == me.source or info.source == "@" .. vim.env.MYVIMRC or info.what ~= "Lua") do
level = level + 1
info = debug.getinfo(level, "S")
end
info = info or me
local source = info.source:sub(2)
source = vim.loop.fs_realpath(source) or source
return source .. ":" .. info.linedefined
end
---@param value any
---@param opts? {loc:string}
function M._dump(value, opts)
opts = opts or {}
opts.loc = opts.loc or M.get_loc()
if vim.in_fast_event() then
return vim.schedule(function()
M._dump(value, opts)
end)
end
opts.loc = vim.fn.fnamemodify(opts.loc, ":~:.")
local msg = vim.inspect(value)
vim.notify(msg, vim.log.levels.INFO, {
title = "Debug: " .. opts.loc,
on_open = function(win)
vim.wo[win].conceallevel = 3
vim.wo[win].concealcursor = ""
vim.wo[win].spell = false
local buf = vim.api.nvim_win_get_buf(win)
if not pcall(vim.treesitter.start, buf, "lua") then
vim.bo[buf].filetype = "lua"
end
end,
})
end
function M.dump(...)
local value = { ... }
if vim.tbl_isempty(value) then
value = nil
else
value = vim.tbl_islist(value) and vim.tbl_count(value) <= 1 and value[1] or value
end
M._dump(value)
end
function M.extmark_leaks()
local nsn = vim.api.nvim_get_namespaces()
local counts = {}
for name, ns in pairs(nsn) do
for _, buf in ipairs(vim.api.nvim_list_bufs()) do
local count = #vim.api.nvim_buf_get_extmarks(buf, ns, 0, -1, {})
if count > 0 then
counts[#counts + 1] = {
name = name,
buf = buf,
count = count,
ft = vim.bo[buf].ft,
}
end
end
end
table.sort(counts, function(a, b)
return a.count > b.count
end)
dd(counts)
end
function estimateSize(value, visited)
if value == nil then
return 0
end
local bytes = 0
-- initialize the visited table if not already done
--- @type table<any, true>
visited = visited or {}
-- handle already-visited value to avoid infinite recursion
if visited[value] then
return 0
else
visited[value] = true
end
if type(value) == "boolean" or value == nil then
bytes = 4
elseif type(value) == "number" then
bytes = 8
elseif type(value) == "string" then
bytes = string.len(value) + 24
elseif type(value) == "function" then
bytes = 32 -- base size for a function
-- add size of upvalues
local i = 1
while true do
local name, val = debug.getupvalue(value, i)
if not name then
break
end
bytes = bytes + estimateSize(val, visited)
i = i + 1
end
elseif type(value) == "table" then
bytes = 40 -- base size for a table entry
for k, v in pairs(value) do
bytes = bytes + estimateSize(k, visited) + estimateSize(v, visited)
end
local mt = debug.getmetatable(value)
if mt then
bytes = bytes + estimateSize(mt, visited)
end
end
return bytes
end
function M.module_leaks(filter)
local sizes = {}
for modname, mod in pairs(package.loaded) do
if not filter or modname:match(filter) then
local root = modname:match("^([^%.]+)%..*$") or modname
-- root = modname
sizes[root] = sizes[root] or { mod = root, size = 0 }
sizes[root].size = sizes[root].size + estimateSize(mod) / 1024 / 1024
end
end
sizes = vim.tbl_values(sizes)
table.sort(sizes, function(a, b)
return a.size > b.size
end)
dd(sizes)
end
function M.get_upvalue(func, name)
local i = 1
while true do
local n, v = debug.getupvalue(func, i)
if not n then
break
end
if n == name then
return v
end
i = i + 1
end
end
return M
================================================
FILE: .config/powershell/takuya.omp.json
================================================
{
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
"blocks": [
{
"alignment": "left",
"segments": [
{
"background": "#0077c2",
"foreground": "#ffffff",
"leading_diamond": "\u256d\u2500\ue0b6",
"style": "diamond",
"template": " {{ .Name }} ",
"type": "shell"
},
{
"background": "#ef5350",
"foreground": "#FFFB38",
"properties": {
"root_icon": "\uf292"
},
"style": "diamond",
"template": "<parentBackground>\ue0b0</> \uf0e7 ",
"type": "root"
},
{
"background": "#444444",
"foreground": "#E4E4E4",
"powerline_symbol": "\ue0b0",
"properties": {
"style": "full"
},
"style": "powerline",
"template": " {{ .Path }} ",
"type": "path"
},
{
"background": "#FFFB38",
"background_templates": [
"{{ if or (.Working.Changed) (.Staging.Changed) }}#ffeb95{{ end }}",
"{{ if and (gt .Ahead 0) (gt .Behind 0) }}#c5e478{{ end }}",
"{{ if gt .Ahead 0 }}#C792EA{{ end }}",
"{{ if gt .Behind 0 }}#C792EA{{ end }}"
],
"foreground": "#011627",
"powerline_symbol": "\ue0b0",
"properties": {
"branch_icon": "\ue725 ",
"fetch_status": true,
"fetch_upstream_icon": true
},
"style": "powerline",
"template": " {{ .HEAD }} {{ if .Working.Changed }}{{ .Working.String }}{{ end }}{{ if and (.Working.Changed) (.Staging.Changed) }} |{{ end }}{{ if .Staging.Changed }}<#ef5350> \uf046 {{ .Staging.String }}</>{{ end }} ",
"type": "git"
}
],
"type": "prompt"
},
{
"alignment": "right",
"segments": [
{
"background": "#303030",
"foreground": "#3C873A",
"leading_diamond": " \ue0b6",
"properties": {
"fetch_package_manager": true,
"npm_icon": " <#cc3a3a>\ue5fa</> ",
"yarn_icon": " <#348cba>\ue6a7</>"
},
"style": "diamond",
"template": "\ue718 {{ if .PackageManagerIcon }}{{ .PackageManagerIcon }} {{ end }}{{ .Full }}",
"trailing_diamond": "\ue0b4",
"type": "node"
},
{
"background": "#40c4ff",
"foreground": "#ffffff",
"invert_powerline": true,
"leading_diamond": " \ue0b6",
"style": "diamond",
"template": " \ue641 {{ .CurrentDate | date .Format }} ",
"trailing_diamond": "\ue0b4",
"type": "time"
}
],
"type": "prompt"
},
{
"alignment": "left",
"newline": true,
"segments": [
{
"foreground": "#21c7c7",
"style": "plain",
"template": "\u2570\u2500",
"type": "text"
},
{
"foreground": "#e0f8ff",
"foreground_templates": [
"{{ if gt .Code 0 }}#ef5350{{ end }}"
],
"properties": {
"always_enabled": true
},
"style": "plain",
"template": "\u276f ",
"type": "status"
}
],
"type": "prompt"
}
],
"version": 3
}
================================================
FILE: .config/powershell/user_profile.ps1
================================================
Import-Module posh-git
$omp_config = Join-Path $PSScriptRoot ".\takuya.omp.json"
oh-my-posh init pwsh --config $omp_config | Invoke-Expression
Import-Module -Name Terminal-Icons
# PSReadLine
Set-PSReadLineOption -EditMode Emacs
Set-PSReadLineOption -BellStyle None
Set-PSReadLineKeyHandler -Chord 'Ctrl+d' -Function DeleteChar
Set-PSReadLineOption -PredictionSource History
# Fzf
Import-Module PSFzf
Set-PsFzfOption -PSReadlineChordProvider 'Ctrl+f' -PSReadlineChordReverseHistory 'Ctrl+r'
# Env
$env:GIT_SSH = "C:\Windows\system32\OpenSSH\ssh.exe"
# Alias
Set-Alias -Name vim -Value nvim
Set-Alias ll ls
Set-Alias g git
Set-Alias grep findstr
Set-Alias tig 'C:\Program Files\Git\usr\bin\tig.exe'
Set-Alias less 'C:\Program Files\Git\usr\bin\less.exe'
# Paths
$env:PATH += ';.\node_modules\.bin'
$env:PATH += ';C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64'
# Utilities
function which ($command) {
Get-Command -Name $command -ErrorAction SilentlyContinue |
Select-Object -ExpandProperty Path -ErrorAction SilentlyContinue
}
================================================
FILE: .config/tmux/macos.conf
================================================
# osx clipboard
set-option -g default-command "which reattach-to-user-namespace > /dev/null && reattach-to-user-namespace -l $SHELL || $SHELL"
# Undercurl
set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm' # undercurl support
set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m' # underscore colours - needs tmux-3.0
================================================
FILE: .config/tmux/statusline.conf
================================================
# vim: ft=tmux
set -g mode-style "fg=#eee8d5,bg=#073642"
set -g message-style "fg=#eee8d5,bg=#073642"
set -g message-command-style "fg=#eee8d5,bg=#073642"
set -g pane-border-style "fg=#073642"
set -g pane-active-border-style "fg=#eee8d5"
set -g status "on"
set -g status-interval 1
set -g status-justify "left"
set -g status-style "fg=#586e75,bg=#073642"
set -g status-bg "#002b36"
set -g status-left-length "100"
set -g status-right-length "100"
set -g status-left-style NONE
set -g status-right-style NONE
set -g status-left "#[fg=#073642,bg=#eee8d5,bold] #S:#I.#P #[fg=#eee8d5,bg=#93a1a1,nobold,nounderscore,noitalics]#[fg=#15161E,bg=#93a1a1,bold] #(whoami) #[fg=#93a1a1,bg=#002b36]"
set -g status-right "#[fg=#586e75,bg=#002b36,nobold,nounderscore,noitalics]#[fg=#93a1a1,bg=#586e75]#[fg=#657b83,bg=#586e75,nobold,nounderscore,noitalics]#[fg=#93a1a1,bg=#657b83]#[fg=#93a1a1,bg=#657b83,nobold,nounderscore,noitalics]#[fg=#15161E,bg=#93a1a1,bold] #h "
setw -g window-status-activity-style "underscore,fg=#839496,bg=#002b36"
setw -g window-status-separator ""
setw -g window-status-style "NONE,fg=#839496,bg=#002b36"
setw -g window-status-format '#[fg=#002b36,bg=#002b36]#[default] #I #{b:pane_current_path} #[fg=#002b36,bg=#002b36,nobold,nounderscore,noitalics]'
setw -g window-status-current-format '#[fg=#002b36,bg=#eee8d5]#[fg=#b58900,bg=#eee8d5] #I #[fg=#eee8d5,bg=#b58900] #{b:pane_current_path} #[fg=#b58900,bg=#002b36,nobold]'
================================================
FILE: .config/tmux/theme.conf
================================================
#### COLOUR (Solarized 256)
# default statusbar colors
set-option -g status-style bg=colour235,fg=colour136,default
# default window title colors
set-window-option -g window-status-style fg=colour244,bg=colour234,dim
# active window title colors
set-window-option -g window-status-current-style fg=colour166,bg=default,bright
# pane border
set-option -g pane-border-style fg=colour235 #base02
set-option -g pane-active-border-style fg=colour136,bg=colour235
# message text
set-option -g message-style bg=colour235,fg=colour166
# pane number display
set-option -g display-panes-active-colour colour33 #blue
set-option -g display-panes-colour colour166 #orange
# clock
set-window-option -g clock-mode-colour colour64 #green
================================================
FILE: .config/tmux/tmux.conf
================================================
#set -g default-terminal "tmux-256color"
set -g default-terminal "xterm-256color"
#set -ga terminal-overrides ",*256col*:Tc"
set -ga terminal-overrides ",xterm-256color:Tc"
# action key
unbind C-b
set-option -g prefix C-t
set-option -g repeat-time 0
set-option -g focus-events on
#### Key bindings
set-window-option -g mode-keys vi
#bind t send-key C-t
# Reload settings
bind r source-file ~/.config/tmux/tmux.conf \; display "Reloaded!"
# Open current directory
bind o run-shell "open '#{pane_current_path}'"
bind -r e kill-pane -a
# Moving window
bind-key -n C-S-Left swap-window -t -1 \; previous-window
bind-key -n C-S-Right swap-window -t +1 \; next-window
#### basic settings
set-option -g status-justify "left"
#set-option utf8-default on
#set-option -g mouse-select-pane
set-window-option -g mode-keys vi
#set-window-option -g utf8 on
# look'n feel
set-option -g status-fg cyan
set-option -g status-bg black
set -g pane-active-border-style fg=colour166,bg=default
set -g window-style fg=colour10,bg=default
set -g window-active-style fg=colour12,bg=default
set-option -g history-limit 64096
set -sg escape-time 10
# allow the title bar to adapt to whatever host you connect to
set -g set-titles on
set -g set-titles-string "#T"
# import
if-shell "uname -s | grep -q Darwin" "source ~/.config/tmux/macos.conf"
source ~/.config/tmux/theme.conf
source ~/.config/tmux/statusline.conf
source ~/.config/tmux/utility.conf
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-pain-control'
run '~/.config/tmux/plugins/tpm/tpm'
================================================
FILE: .config/tmux/utility.conf
================================================
# Display lazygit
bind -r g display-popup -d '#{pane_current_path}' -w80% -h80% -E lazygit
# Run Claude Code in a separate session
bind -r y run-shell '\
SESSION="claude-$(echo #{pane_current_path} | md5sum | cut -c1-8)"; \
tmux has-session -t "$SESSION" 2>/dev/null || \
tmux new-session -d -s "$SESSION" -c "#{pane_current_path}" "claude"; \
tmux display-popup -w80% -h80% -E "tmux attach-session -t $SESSION"'
================================================
FILE: .czrc
================================================
{ "path": "cz-git" }
================================================
FILE: .gitconfig
================================================
[core]
excludesfile = ~/.gitignore
editor = nvim
ignorecase = false
[push]
default = simple
[color]
status = auto
diff = auto
branch = auto
interactive = auto
grep = auto
ui = auto
[alias]
a = "!git status --short | peco | awk '{print $2}' | xargs git add"
d = diff
co = checkout
ci = commit
ca = commit -a
ps = "!git push origin $(git rev-parse --abbrev-ref HEAD)"
pl = "!git pull origin $(git rev-parse --abbrev-ref HEAD)"
st = status
br = branch
ba = branch -a
bm = branch --merged
bn = branch --no-merged
df = "!git hist | peco | awk '{print $2}' | xargs -I {} git diff {}^ {}"
hist = log --pretty=format:\"%Cgreen%h %Creset%cd %Cblue[%cn] %Creset%s%C(yellow)%d%C(reset)\" --graph --date=relative --decorate --all
llog = log --graph --name-status --pretty=format:\"%C(red)%h %C(reset)(%cd) %C(green)%an %Creset%s %C(yellow)%d%Creset\" --date=relative
open = "!hub browse"
type = cat-file -t
dump = cat-file -p
find = "!f() { git log --pretty=format:\"%h %cd [%cn] %s%d\" --date=relative -S'pretty' -S\"$@\" | peco | awk '{print $1}' | xargs -I {} git diff {}^ {}; }; f"
# edit conflicted file on merge
edit-unmerged = "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; vim `f`"
# add conflicted file on merge
add-unmerged = "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; git add `f`"
[hub]
protocol = https
[github]
user = craftzdog
[diff]
tool = nvimdiff
[difftool "nvimdiff"]
cmd = nvim -d \"$LOCAL\" \"$REMOTE\"
path =
[mergetool "nvimdiff"]
cmd = nvim -d \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
trustExitCode = true
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
required = true
process = git-lfs filter-process
[ghq]
root = ~/.ghq
================================================
FILE: .github/workflows/claude-code-review.yml
================================================
name: Claude Code Review
on:
pull_request:
types: [opened, synchronize]
# Optional: Only run on specific file changes
# paths:
# - "src/**/*.ts"
# - "src/**/*.tsx"
# - "src/**/*.js"
# - "src/**/*.jsx"
jobs:
claude-review:
# Optional: Filter by PR author
# if: |
# github.event.pull_request.user.login == 'external-contributor' ||
# github.event.pull_request.user.login == 'new-developer' ||
# github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR'
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
issues: read
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Run Claude Code Review
id: claude-review
uses: anthropics/claude-code-action@beta
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
# Optional: Specify model (defaults to Claude Sonnet 4, uncomment for Claude Opus 4)
# model: "claude-opus-4-20250514"
# Direct prompt for automated review (no @claude mention needed)
direct_prompt: |
Please review this pull request and provide feedback on:
- Code quality and best practices
- Potential bugs or issues
- Performance considerations
- Security concerns
- Test coverage
Be constructive and helpful in your feedback.
# Optional: Use sticky comments to make Claude reuse the same comment on subsequent pushes to the same PR
# use_sticky_comment: true
# Optional: Customize review based on file types
# direct_prompt: |
# Review this PR focusing on:
# - For TypeScript files: Type safety and proper interface usage
# - For API endpoints: Security, input validation, and error handling
# - For React components: Performance, accessibility, and best practices
# - For tests: Coverage, edge cases, and test quality
# Optional: Different prompts for different authors
# direct_prompt: |
# ${{ github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR' &&
# 'Welcome! Please review this PR from a first-time contributor. Be encouraging and provide detailed explanations for any suggestions.' ||
# 'Please provide a thorough code review focusing on our coding standards and best practices.' }}
# Optional: Add specific tools for running tests or linting
# allowed_tools: "Bash(npm run test),Bash(npm run lint),Bash(npm run typecheck)"
# Optional: Skip review for certain conditions
# if: |
# !contains(github.event.pull_request.title, '[skip-review]') &&
# !contains(github.event.pull_request.title, '[WIP]')
================================================
FILE: .github/workflows/claude.yml
================================================
name: Claude Code
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
issues:
types: [opened, assigned]
pull_request_review:
types: [submitted]
jobs:
claude:
if: |
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
issues: read
id-token: write
actions: read # Required for Claude to read CI results on PRs
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Run Claude Code
id: claude
uses: anthropics/claude-code-action@beta
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
# This is an optional setting that allows Claude to read CI results on PRs
additional_permissions: |
actions: read
# Optional: Specify model (defaults to Claude Sonnet 4, uncomment for Claude Opus 4)
# model: "claude-opus-4-20250514"
# Optional: Customize the trigger phrase (default: @claude)
# trigger_phrase: "/claude"
# Optional: Trigger when specific user is assigned to an issue
# assignee_trigger: "claude-bot"
# Optional: Allow Claude to run specific commands
# allowed_tools: "Bash(npm install),Bash(npm run build),Bash(npm run test:*),Bash(npm run lint:*)"
# Optional: Add custom instructions for Claude to customize its behavior for your project
# custom_instructions: |
# Follow our coding standards
# Ensure all new code has tests
# Use TypeScript for new files
# Optional: Custom environment variables for Claude
# claude_env: |
# NODE_ENV: test
================================================
FILE: .gitignore
================================================
*.o
\#*#
*#
.#*
.*~
*~
.DS_Store
*.sw[po]
tags
TAGS
.svn
*.dSYM
*.log
*.dvi
*.aux
*.elc
.zshrc.local
.python-version
samples
.netrwhist
.bundle
/vendor/bundle
Gemfile.lock
node_modules
bower_components
fishd.*
# Vim
Session.vim
.vim/bundle/
.vimrc_sample
.vim/ftdetect/Dockerfile.vim
.vim/syntax/Dockerfile.vim
.vim/snippets/
.luarc.json
# Xcode
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
*.xcworkspace/xcshareddata
# CocoaPods
Pods/
# Fish local config
.config/fish/config-local.fish
.config/fish/fish_variables.x86_64
# Karabiner
.config/karabiner/automatic_backups
# Tmux
.config/tmux/plugins
# Lazygit
.config/lazygit/state.yml
.config/nvim/lazy-lock.json
.config/nvim/lazyvim.json
# Zed
.config/zed/.tmp*
.config/zed/embeddings
.config/zed/prompts
# Claude Code
.claude/*.local.json
================================================
FILE: .scripts/ide
================================================
#!/bin/bash
tmux split-window -h -l 20%
tmux select-pane -L
tmux split-window -v -l 30%
tmux split-window -h -l 66%
tmux split-window -h -l 50%
================================================
FILE: ISSUE_TEMPLATE.md
================================================
<!--
Hi. Thanks for checking out my dotfiles.
Since it's just my personal configurations, I basically don't provide any user support or answer questions.
If you've got any issues with getting it to work, please try:
- Google with the error message
- Ask it on Stackoverflow
- Report it to the plugin author
-->
================================================
FILE: README.md
================================================


# Takuya's dotfiles
**Warning**: Don’t blindly use my settings unless you know what that entails. Use at your own risk!
### Looking for a Markdown note-taking app?
Check out my app called [Inkdrop](https://www.inkdrop.app/)
[](https://www.inkdrop.app/)
## Contents
- vim (Neovim) config
- tmux config
- git config
- fish config
- PowerShell config
## Neovim setup
### Requirements
- Neovim >= **0.9.0** (needs to be built with **LuaJIT**)
- Git >= **2.19.0** (for partial clones support)
- [LazyVim](https://www.lazyvim.org/)
- a [Nerd Font](https://www.nerdfonts.com/)(v3.0 or greater) **_(optional, but needed to display some icons)_**
- [lazygit](https://github.com/jesseduffield/lazygit) **_(optional)_**
- a **C** compiler for `nvim-treesitter`. See [here](https://github.com/nvim-treesitter/nvim-treesitter#requirements)
- for [telescope.nvim](https://github.com/nvim-telescope/telescope.nvim) **_(optional)_**
- **live grep**: [ripgrep](https://github.com/BurntSushi/ripgrep)
- **find files**: [fd](https://github.com/sharkdp/fd)
- a terminal that support true color and *undercurl*:
- [kitty](https://github.com/kovidgoyal/kitty) **_(Linux & Macos)_**
- [wezterm](https://github.com/wez/wezterm) **_(Linux, Macos & Windows)_**
- [alacritty](https://github.com/alacritty/alacritty) **_(Linux, Macos & Windows)_**
- [iterm2](https://iterm2.com/) **_(Macos)_**
- [Solarized Osaka](https://github.com/craftzdog/solarized-osaka.nvim)
## Shell setup (macOS & Linux)
- [Fish shell](https://fishshell.com/)
- [Fisher](https://github.com/jorgebucaran/fisher) - Plugin manager
- [Tide](https://github.com/IlanCosman/tide) - Shell theme
- [Nerd fonts](https://github.com/ryanoasis/nerd-fonts) - Patched fonts for development-use. I use [PlemolJP](https://github.com/yuru7/PlemolJP) and BlexMono.
- [z for fish](https://github.com/jethrokuan/z) - Directory jumping
- [Eza](https://github.com/eza-community/eza) - `ls` replacement
- [ghq](https://github.com/x-motemen/ghq) - Local Git repository organizer
- [fzf](https://github.com/PatrickF1/fzf.fish) - Interactive filtering
## PowerShell setup (Windows)
- [Scoop](https://scoop.sh/) - A command-line installer
- [Git for Windows](https://gitforwindows.org/)
- [Oh My Posh](https://ohmyposh.dev/) - Prompt theme engine
- [Terminal Icons](https://github.com/devblackops/Terminal-Icons) - Folder and file icons
- [PSReadLine](https://docs.microsoft.com/en-us/powershell/module/psreadline/) - Cmdlets for customizing the editing environment, used for autocompletion
- [z](https://www.powershellgallery.com/packages/z) - Directory jumper
- [PSFzf](https://github.com/kelleyma49/PSFzf) - Fuzzy finder
## How to use
Watch my video tutorials:
1. [My Neovim setup](https://www.youtube.com/watch?v=fFHlfbKVi30)
- [Article version](https://www.devas.life/effective-neovim-setup-for-web-development-towards-2024/)
1. [My dev workflow using tmux and vim](https://www.youtube.com/watch?v=sSOfr2MtRU8&list=PLxQA0uNgQDCICMRwlOzWAZBPL05XBC_br&index=10)
1. [A productive command-line Git workflow for indie app developers](https://www.youtube.com/watch?v=qKpY7t5m35k&list=PLxQA0uNgQDCICMRwlOzWAZBPL05XBC_br&index=4)
- [Blogpost](https://dev.to/craftzdog/a-productive-command-line-git-workflow-for-indie-app-developers-k7d)
1. [My Fish shell workflow for coding](https://www.youtube.com/watch?v=KKxhf50FIPI)
1. [How to set up PowerShell prompt with Oh My Posh on Windows 11](https://www.youtube.com/watch?v=5-aK2_WwrmM)
## About me
- [@inkdrop_app on X](https://twitter.com/inkdrop_app)
- [Newsletters](https://www.devas.life/)
- [My product: Inkdrop - Markdown note-taking app](https://www.inkdrop.app/)
gitextract_9scmqroy/ ├── .config/ │ ├── fish/ │ │ ├── conf.d/ │ │ │ └── tide.fish │ │ ├── config-linux.fish │ │ ├── config-osx.fish │ │ ├── config-windows.fish │ │ ├── config.fish │ │ └── functions/ │ │ ├── fish_user_key_bindings.fish │ │ └── fzf_change_directory.fish │ ├── ghostty/ │ │ └── config │ ├── lazygit/ │ │ └── config.yml │ ├── mise/ │ │ └── config.toml │ ├── nvim/ │ │ ├── init.lua │ │ └── lua/ │ │ ├── config/ │ │ │ ├── autocmds.lua │ │ │ ├── keymaps.lua │ │ │ ├── lazy.lua │ │ │ └── options.lua │ │ ├── craftzdog/ │ │ │ ├── discipline.lua │ │ │ ├── hsl.lua │ │ │ └── lsp.lua │ │ ├── plugins/ │ │ │ ├── coding.lua │ │ │ ├── colorscheme.lua │ │ │ ├── editor.lua │ │ │ ├── lsp.lua │ │ │ ├── treesitter.lua │ │ │ └── ui.lua │ │ └── util/ │ │ └── debug.lua │ ├── powershell/ │ │ ├── takuya.omp.json │ │ └── user_profile.ps1 │ └── tmux/ │ ├── macos.conf │ ├── statusline.conf │ ├── theme.conf │ ├── tmux.conf │ └── utility.conf ├── .czrc ├── .gitconfig ├── .github/ │ └── workflows/ │ ├── claude-code-review.yml │ └── claude.yml ├── .gitignore ├── .scripts/ │ └── ide ├── ISSUE_TEMPLATE.md └── README.md
Condensed preview — 40 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (65K chars).
[
{
"path": ".config/fish/conf.d/tide.fish",
"chars": 763,
"preview": "set -g tide_git_bg_color 268bd2\nset -g tide_git_bg_color_unstable C4A000\nset -g tide_git_bg_color_urgent CC0000\nset -g t"
},
{
"path": ".config/fish/config-linux.fish",
"chars": 70,
"preview": "if type -q eza\n alias ll \"eza -l -g --icons\"\n alias lla \"ll -a\"\nend\n"
},
{
"path": ".config/fish/config-osx.fish",
"chars": 235,
"preview": "if type -q eza\n alias ll \"eza -l -g --icons\"\n alias lla \"ll -a\"\nend\n\n# Inkdrop\nset -gx INKDROP_HOME ~/.inkdrop\n\n# Fzf\n"
},
{
"path": ".config/fish/config-windows.fish",
"chars": 0,
"preview": ""
},
{
"path": ".config/fish/config.fish",
"chars": 1041,
"preview": "set fish_greeting \"\"\n\nset -gx TERM xterm-256color\n\n# theme\nset -g theme_color_scheme terminal-dark\nset -g fish_prompt_pw"
},
{
"path": ".config/fish/functions/fish_user_key_bindings.fish",
"chars": 248,
"preview": "function fish_user_key_bindings\n # fzf\n bind \\cf fzf_change_directory\n\n # vim-like\n bind \\cl forward-char\n\n # preve"
},
{
"path": ".config/fish/functions/fzf_change_directory.fish",
"chars": 506,
"preview": "function _fzf_change_directory\n fzf | perl -pe 's/([ ()])/\\\\\\\\$1/g'|read foo\n if [ $foo ]\n builtin cd $foo\n comm"
},
{
"path": ".config/ghostty/config",
"chars": 330,
"preview": "theme = \"Solarized Dark - Patched\"\n\nbackground-opacity = 0.9\nbackground-blur-radius = 20\nbackground = #031219\n\nfont-fami"
},
{
"path": ".config/lazygit/config.yml",
"chars": 211,
"preview": "customCommands:\n - key: \"C\"\n command: \"git cz\"\n description: \"commit with commitizen\"\n context: \"files\"\n lo"
},
{
"path": ".config/mise/config.toml",
"chars": 104,
"preview": "[tools]\nbun = \"latest\"\nghq = \"latest\"\nnode = \"latest\"\npython = \"latest\"\nruby = \"latest\"\nrust = \"latest\"\n"
},
{
"path": ".config/nvim/init.lua",
"chars": 146,
"preview": "if vim.loader then\n\tvim.loader.enable()\nend\n\n_G.dd = function(...)\n\trequire(\"util.debug\").dump(...)\nend\nvim.print = _G.d"
},
{
"path": ".config/nvim/lua/config/autocmds.lua",
"chars": 370,
"preview": "-- Turn off paste mode when leaving insert\nvim.api.nvim_create_autocmd(\"InsertLeave\", {\n\tpattern = \"*\",\n\tcommand = \"set "
},
{
"path": ".config/nvim/lua/config/keymaps.lua",
"chars": 2087,
"preview": "local discipline = require(\"craftzdog.discipline\")\n\ndiscipline.cowboy()\n\nlocal keymap = vim.keymap\nlocal opts = { norema"
},
{
"path": ".config/nvim/lua/config/lazy.lua",
"chars": 2522,
"preview": "local lazypath = vim.fn.stdpath(\"data\") .. \"/lazy/lazy.nvim\"\nif not vim.loop.fs_stat(lazypath) then\n\tvim.fn.system({\n\t\t\""
},
{
"path": ".config/nvim/lua/config/options.lua",
"chars": 1522,
"preview": "vim.g.mapleader = \" \"\n\nvim.opt.encoding = \"utf-8\"\nvim.opt.fileencoding = \"utf-8\"\n\nvim.opt.number = true\n\nvim.opt.title ="
},
{
"path": ".config/nvim/lua/craftzdog/discipline.lua",
"chars": 737,
"preview": "local M = {}\n\nfunction M.cowboy()\n\t---@type table?\n\tlocal ok = true\n\tfor _, key in ipairs({ \"h\", \"j\", \"k\", \"l\", \"+\", \"-\""
},
{
"path": ".config/nvim/lua/craftzdog/hsl.lua",
"chars": 3672,
"preview": "-- https://github.com/EmmanuelOga/columns/blob/master/utils/color.lua\n\nlocal M = {}\n\nlocal hexChars = \"0123456789abcdef\""
},
{
"path": ".config/nvim/lua/craftzdog/lsp.lua",
"chars": 230,
"preview": "local M = {}\nlocal LazyvimUtil = require(\"lazyvim.util\")\n\nfunction M.toggleInlayHints()\n\tvim.lsp.inlay_hint.enable(not v"
},
{
"path": ".config/nvim/lua/plugins/coding.lua",
"chars": 1512,
"preview": "return {\n\t-- Incremental rename\n\t{\n\t\t\"smjonas/inc-rename.nvim\",\n\t\tcmd = \"IncRename\",\n\t\tconfig = true,\n\t},\n\n\t-- Go forwar"
},
{
"path": ".config/nvim/lua/plugins/colorscheme.lua",
"chars": 156,
"preview": "return {\n\t{\n\t\t\"craftzdog/solarized-osaka.nvim\",\n\t\tlazy = true,\n\t\tpriority = 1000,\n\t\topts = function()\n\t\t\treturn {\n\t\t\t\ttr"
},
{
"path": ".config/nvim/lua/plugins/editor.lua",
"chars": 5521,
"preview": "return {\n\t{\n\t\tenabled = false,\n\t\t\"folke/flash.nvim\",\n\t\t---@type Flash.Config\n\t\topts = {\n\t\t\tsearch = {\n\t\t\t\tforward = true"
},
{
"path": ".config/nvim/lua/plugins/lsp.lua",
"chars": 3762,
"preview": "return {\n\t-- tools\n\t{\n\t\t\"mason-org/mason.nvim\",\n\t\topts = function(_, opts)\n\t\t\tvim.list_extend(opts.ensure_installed, {\n\t"
},
{
"path": ".config/nvim/lua/plugins/treesitter.lua",
"chars": 1400,
"preview": "return {\n\t{ \"nvim-treesitter/playground\", cmd = \"TSPlaygroundToggle\" },\n\n\t{\n\t\t\"nvim-treesitter/nvim-treesitter\",\n\t\tbuild"
},
{
"path": ".config/nvim/lua/plugins/ui.lua",
"chars": 3878,
"preview": "return {\n\t-- messages, cmdline and the popupmenu\n\t{\n\t\t\"folke/noice.nvim\",\n\t\topts = function(_, opts)\n\t\t\ttable.insert(opt"
},
{
"path": ".config/nvim/lua/util/debug.lua",
"chars": 3856,
"preview": "-- selene: allow(global_usage)\n\nlocal M = {}\n\nfunction M.get_loc()\n local me = debug.getinfo(1, \"S\")\n local level = 2\n"
},
{
"path": ".config/powershell/takuya.omp.json",
"chars": 3425,
"preview": "{\n \"$schema\": \"https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json\",\n \"blocks\": [\n "
},
{
"path": ".config/powershell/user_profile.ps1",
"chars": 1052,
"preview": "Import-Module posh-git\n$omp_config = Join-Path $PSScriptRoot \".\\takuya.omp.json\"\noh-my-posh init pwsh --config $omp_conf"
},
{
"path": ".config/tmux/macos.conf",
"chars": 374,
"preview": "# osx clipboard\nset-option -g default-command \"which reattach-to-user-namespace > /dev/null && reattach-to-user-namespac"
},
{
"path": ".config/tmux/statusline.conf",
"chars": 1456,
"preview": "# vim: ft=tmux\nset -g mode-style \"fg=#eee8d5,bg=#073642\"\n\nset -g message-style \"fg=#eee8d5,bg=#073642\"\nset -g message-co"
},
{
"path": ".config/tmux/theme.conf",
"chars": 729,
"preview": "#### COLOUR (Solarized 256)\n\n# default statusbar colors\nset-option -g status-style bg=colour235,fg=colour136,default\n\n# "
},
{
"path": ".config/tmux/tmux.conf",
"chars": 1554,
"preview": "#set -g default-terminal \"tmux-256color\"\nset -g default-terminal \"xterm-256color\"\n#set -ga terminal-overrides \",*256col*"
},
{
"path": ".config/tmux/utility.conf",
"chars": 422,
"preview": "# Display lazygit\nbind -r g display-popup -d '#{pane_current_path}' -w80% -h80% -E lazygit\n\n# Run Claude Code in a separ"
},
{
"path": ".czrc",
"chars": 21,
"preview": "{ \"path\": \"cz-git\" }\n"
},
{
"path": ".gitconfig",
"chars": 1784,
"preview": "[core]\n\texcludesfile = ~/.gitignore\n\teditor = nvim\n\tignorecase = false\n[push]\n default = simple\n[color]\n status = auto"
},
{
"path": ".github/workflows/claude-code-review.yml",
"chars": 3039,
"preview": "name: Claude Code Review\n\non:\n pull_request:\n types: [opened, synchronize]\n # Optional: Only run on specific file"
},
{
"path": ".github/workflows/claude.yml",
"chars": 2309,
"preview": "name: Claude Code\n\non:\n issue_comment:\n types: [created]\n pull_request_review_comment:\n types: [created]\n issue"
},
{
"path": ".gitignore",
"chars": 958,
"preview": "*.o\n\\#*#\n*#\n.#*\n.*~\n*~\n.DS_Store\n*.sw[po]\ntags\nTAGS\n.svn\n*.dSYM\n*.log\n*.dvi\n*.aux\n*.elc\n.zshrc.local\n.python-version\nsam"
},
{
"path": ".scripts/ide",
"chars": 144,
"preview": "#!/bin/bash\ntmux split-window -h -l 20%\ntmux select-pane -L\ntmux split-window -v -l 30%\ntmux split-window -h -l 66%\ntmux"
},
{
"path": "ISSUE_TEMPLATE.md",
"chars": 314,
"preview": "<!--\nHi. Thanks for checking out my dotfiles.\nSince it's just my personal configurations, I basically don't provide any "
},
{
"path": "README.md",
"chars": 3812,
"preview": "\n\n\n\n# Takuya's dotfiles\n\n"
}
]
About this extraction
This page contains the full source code of the craftzdog/dotfiles-public GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 40 files (55.0 KB), approximately 18.4k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.