Skip to content

Commit

Permalink
add p10k, automatically install lsps
Browse files Browse the repository at this point in the history
  • Loading branch information
harryob committed Feb 26, 2024
1 parent b77918e commit b3e2d66
Show file tree
Hide file tree
Showing 7 changed files with 235 additions and 41 deletions.
5 changes: 5 additions & 0 deletions .chezmoiexternal.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@
url = "https://github.com/zsh-users/zsh-autosuggestions"
refreshPeriod = "168h"

[".oh-my-zsh/custom/themes/powerlevel"]
type = "git-repo"
url = "https://github.com/romkatv/powerlevel10k"
refreshPeriod = "168h"

[".theme/nightfox.nvim"]
type = "git-repo"
url = "https://github.com/EdenEast/nightfox.nvim"
Expand Down
28 changes: 19 additions & 9 deletions dot_config/nvim/lua/plugins/lsp.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,24 @@ return {
{
"neovim/nvim-lspconfig",
priority = 1,
config = function()
local lspconfig = require("lspconfig")
lspconfig.tsserver.setup({})
lspconfig.rust_analyzer.setup({})
lspconfig.html.setup({})
end,
},
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-path",
"hrsh7th/cmp-cmdline",
{ "williamboman/mason.nvim", priority = 51, opts = {} },
{ "williamboman/mason-lspconfig.nvim", opts = { automatic_installation = true } },
{ "williamboman/mason.nvim", priority = 50, opts = {} },
{
"williamboman/mason-lspconfig.nvim",
priority = 51,
opts = { automatic_installation = true },
init = function()
require("mason-lspconfig").setup_handlers({
function(server_name)
require("lspconfig")[server_name].setup({})
end,
})
end,
},
{
"hrsh7th/nvim-cmp",
config = function()
Expand Down Expand Up @@ -73,5 +78,10 @@ return {
})
end,
},
{ "nvim-treesitter/nvim-treesitter", build = ":TSUpdate" },
{
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
main = "nvim-treesitter.configs",
opts = { highlight = { enable = true } },
},
}
24 changes: 0 additions & 24 deletions dot_config/nvim/lua/plugins/theme.lua
Original file line number Diff line number Diff line change
@@ -1,32 +1,8 @@
return {
--[[
{ "Mofiqul/vscode.nvim",
lazy = false,
priority = 1000,
opts = {},
config = function()
require('vscode').setup({
style = "dark",
italic_comments = true,
})
require('vscode').load()
end },
]]
--
{
"EdenEast/nightfox.nvim",
init = function()
vim.cmd.colorscheme("nordfox")
end,
},
--[[
{ "catppuccin/nvim",
name = "catppuccin",
priority = 1000,
init = function() vim.cmd.colorscheme "catppuccin" end,
opts = { flavour = "frappe" }
}
]]
--
}
1 change: 1 addition & 0 deletions dot_config/nvim/lua/plugins/ui.lua
Original file line number Diff line number Diff line change
Expand Up @@ -105,4 +105,5 @@ return {
},
},
},
{ "akinsho/toggleterm.nvim", opts = { open_mapping = "<leader>t", winbar = { enabled = true } } },
}
14 changes: 7 additions & 7 deletions dot_config/wezterm/wezterm.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ local wezterm = require("wezterm")
local colors = wezterm.color.load_scheme(wezterm.home_dir .. "/.theme/nightfox.nvim/extra/nordfox/wezterm.toml")

return {
window_decorations = "RESIZE",
font = wezterm.font("JetBrains Mono"),
initial_cols = 100,
initial_rows = 25,
colors = colors,
use_fancy_tab_bar = false,
hide_tab_bar_if_only_one_tab = true,
window_decorations = "RESIZE",
font = wezterm.font("JetBrains Mono"),
initial_cols = 160,
initial_rows = 45,
colors = colors,
use_fancy_tab_bar = false,
hide_tab_bar_if_only_one_tab = true,
}
193 changes: 193 additions & 0 deletions dot_p10k.zsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,193 @@
# Generated by Powerlevel10k configuration wizard on 2024-02-26 at 10:34 GMT.
# Based on romkatv/powerlevel10k/config/p10k-pure.zsh, checksum 35142.
# Wizard options: nerdfont-v3 + powerline, small icons, pure, original, 1 line, compact,
# instant_prompt=verbose.
# Type `p10k configure` to generate another config.
#
# Config file for Powerlevel10k with the style of Pure (https://github.com/sindresorhus/pure).
#
# Differences from Pure:
#
# - Git:
# - `@c4d3ec2c` instead of something like `v1.4.0~11` when in detached HEAD state.
# - No automatic `git fetch` (the same as in Pure with `PURE_GIT_PULL=0`).
#
# Apart from the differences listed above, the replication of Pure prompt is exact. This includes
# even the questionable parts. For example, just like in Pure, there is no indication of Git status
# being stale; prompt symbol is the same in command, visual and overwrite vi modes; when prompt
# doesn't fit on one line, it wraps around with no attempt to shorten it.
#
# If you like the general style of Pure but not particularly attached to all its quirks, type
# `p10k configure` and pick "Lean" style. This will give you slick minimalist prompt while taking
# advantage of Powerlevel10k features that aren't present in Pure.

# Temporarily change options.
'builtin' 'local' '-a' 'p10k_config_opts'
[[ ! -o 'aliases' ]] || p10k_config_opts+=('aliases')
[[ ! -o 'sh_glob' ]] || p10k_config_opts+=('sh_glob')
[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand')
'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand'

() {
emulate -L zsh -o extended_glob

# Unset all configuration options.
unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR'

# Zsh >= 5.1 is required.
[[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return

# Prompt colors.
local grey='242'
local red='1'
local yellow='3'
local blue='4'
local magenta='5'
local cyan='6'
local white='7'

# Left prompt segments.
typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
context # user@host
dir # current directory
vcs # git status
command_execution_time # previous command duration
virtualenv # python virtual environment
prompt_char # prompt symbol
)

# Right prompt segments.
typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
# command_execution_time # previous command duration
# virtualenv # python virtual environment
# context # user@host
# time # current time
)

# Basic style options that define the overall prompt look.
typeset -g POWERLEVEL9K_BACKGROUND= # transparent background
typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE= # no surrounding whitespace
typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' ' # separate segments with a space
typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR= # no end-of-line symbol
typeset -g POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION= # no segment icons

# Add an empty line before each prompt except the first. This doesn't emulate the bug
# in Pure that makes prompt drift down whenever you use the Alt-C binding from fzf or similar.
typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=false

# Magenta prompt symbol if the last command succeeded.
typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS}_FOREGROUND=$magenta
# Red prompt symbol if the last command failed.
typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS}_FOREGROUND=$red
# Default prompt symbol.
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION=''
# Prompt symbol in command vi mode.
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION=''
# Prompt symbol in visual vi mode is the same as in command mode.
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION=''
# Prompt symbol in overwrite vi mode is the same as in command mode.
typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=false

# Grey Python Virtual Environment.
typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=$grey
# Don't show Python version.
typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false
typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER=

# Blue current directory.
typeset -g POWERLEVEL9K_DIR_FOREGROUND=$blue

# Context format when root: user@host. The first part white, the rest grey.
typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE="%F{$white}%n%f%F{$grey}@%m%f"
# Context format when not root: user@host. The whole thing grey.
typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE="%F{$grey}%n@%m%f"
# Don't show context unless root or in SSH.
typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_CONTENT_EXPANSION=

# Show previous command duration only if it's >= 5s.
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=5
# Don't show fractional seconds. Thus, 7s rather than 7.3s.
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
# Duration format: 1d 2h 3m 4s.
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s'
# Yellow previous command duration.
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=$yellow

# Grey Git prompt. This makes stale prompts indistinguishable from up-to-date ones.
typeset -g POWERLEVEL9K_VCS_FOREGROUND=$grey

# Disable async loading indicator to make directories that aren't Git repositories
# indistinguishable from large Git repositories without known state.
typeset -g POWERLEVEL9K_VCS_LOADING_TEXT=

# Don't wait for Git status even for a millisecond, so that prompt always updates
# asynchronously when Git state changes.
typeset -g POWERLEVEL9K_VCS_MAX_SYNC_LATENCY_SECONDS=0

# Cyan ahead/behind arrows.
typeset -g POWERLEVEL9K_VCS_{INCOMING,OUTGOING}_CHANGESFORMAT_FOREGROUND=$cyan
# Don't show remote branch, current tag or stashes.
typeset -g POWERLEVEL9K_VCS_GIT_HOOKS=(vcs-detect-changes git-untracked git-aheadbehind)
# Don't show the branch icon.
typeset -g POWERLEVEL9K_VCS_BRANCH_ICON=
# When in detached HEAD state, show @commit where branch normally goes.
typeset -g POWERLEVEL9K_VCS_COMMIT_ICON='@'
# Don't show staged, unstaged, untracked indicators.
typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED}_ICON=
# Show '*' when there are staged, unstaged or untracked files.
typeset -g POWERLEVEL9K_VCS_DIRTY_ICON='*'
# Show '⇣' if local branch is behind remote.
typeset -g POWERLEVEL9K_VCS_INCOMING_CHANGES_ICON=':⇣'
# Show '⇡' if local branch is ahead of remote.
typeset -g POWERLEVEL9K_VCS_OUTGOING_CHANGES_ICON=':⇡'
# Don't show the number of commits next to the ahead/behind arrows.
typeset -g POWERLEVEL9K_VCS_{COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=1
# Remove space between '⇣' and '⇡' and all trailing spaces.
typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${${${P9K_CONTENT/⇣* :⇡/⇣⇡}// }//:/ }'

# Grey current time.
typeset -g POWERLEVEL9K_TIME_FOREGROUND=$grey
# Format for the current time: 09:51:02. See `man 3 strftime`.
typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}'
# If set to true, time will update when you hit enter. This way prompts for the past
# commands will contain the start times of their commands rather than the end times of
# their preceding commands.
typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false

# Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt
# when accepting a command line. Supported values:
#
# - off: Don't change prompt when accepting a command line.
# - always: Trim down prompt when accepting a command line.
# - same-dir: Trim down prompt when accepting a command line unless this is the first command
# typed after changing current working directory.
typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=off

# Instant prompt mode.
#
# - off: Disable instant prompt. Choose this if you've tried instant prompt and found
# it incompatible with your zsh configuration files.
# - quiet: Enable instant prompt and don't print warnings when detecting console output
# during zsh initialization. Choose this if you've read and understood
# https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt.
# - verbose: Enable instant prompt and print a warning when detecting console output during
# zsh initialization. Choose this if you've never tried instant prompt, haven't
# seen the warning, or if you are unsure what this all means.
typeset -g POWERLEVEL9K_INSTANT_PROMPT=verbose

# Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized.
# For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload
# can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you
# really need it.
typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true

# If p10k is already loaded, reload configuration.
# This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true.
(( ! $+functions[p10k] )) || p10k reload
}

# Tell `p10k configure` which file it should overwrite.
typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a}

(( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]}
'builtin' 'unset' 'p10k_config_opts'
11 changes: 10 additions & 1 deletion dot_zshrc
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi

export ZSH="$HOME/.oh-my-zsh"

zstyle ':omz:update' mode auto # update automatically without asking

ZSH_THEME=robbyrussell
ZSH_THEME="powerlevel/powerlevel10k"

VSCODE=code-insiders

Expand Down Expand Up @@ -34,3 +41,5 @@ export PATH="/opt/homebrew/lib/ruby/gems/3.2.0/bin:$PATH"

export DOTNET_ROOT="/opt/homebrew/opt/dotnet/libexec"

# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

0 comments on commit b3e2d66

Please sign in to comment.