dotfiles

feels like ${HOME}
Log | Files | Refs | README

commit 70b47fcce790d489328e4e2a9e0773660a4528b5
parent 9fbf6055d91b8f2a1ff0636f38c1a9f86dea1adc
Author: Yohanes Bandung Bondowoso <hi@ybbond.dev>
Date:   Mon,  4 Jan 2021 16:21:38 +0700

change some settings to be dark-light variant

Diffstat:
R.config/kitty/kitty.conf -> .config/kitty/kitty-dark.conf | 0
A.config/kitty/kitty-light.conf | 1198+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
M.config/nvim/coc-settings.json | 26++++++++++++++++++++++++++
M.config/nvim/init.vim | 228++++++++++++++++++++++++++++++++++++++++++++++---------------------------------
M.gitconfig | 27+++++++++++++++++++++++----
A.tmux-dark.conf | 126+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A.tmux-light.conf | 126+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
D.tmux.conf | 105-------------------------------------------------------------------------------
M.vimrc | 8++++++++
M.zshrc | 22+++++++++++++++++++---

10 files changed, 1660 insertions(+), 206 deletions(-)

diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty-dark.conf
diff --git a/.config/kitty/kitty-light.conf b/.config/kitty/kitty-light.conf
@@ -0,0 +1,1198 @@
+# vim:fileencoding=utf-8:ft=conf:foldmethod=marker
+
+#: Fonts {{{
+
+#: kitty has very powerful font management. You can configure
+#: individual font faces and even specify special fonts for particular
+#: characters.
+
+font_family      IBM Plex Mono Regular
+bold_font        IBM Plex Mono Bold
+italic_font      IBM Plex Mono Italic
+bold_italic_font IBM Plex Mono Bold Italic
+
+# font_family      iA Writer Mono S Regular
+# bold_font        iA Writer Mono S Bold
+# italic_font      iA Writer Mono S Italic
+# bold_italic_font iA Writer Mono S Bold Italic
+
+# font_family      Hermit Light
+# bold_font        Hermit Bold
+# italic_font      Hermit LightItalic
+# bold_italic_font Hermit BoldItalic
+
+# font_family      Liga Cartograph Mono CF Thin
+# bold_font        Liga Cartograph Mono CF DemiBold
+# italic_font      Liga Cartograph Mono CF Thin Italic
+# bold_italic_font Liga Cartograph Mono CF DemiBold Italic
+
+#: You can specify different fonts for the bold/italic/bold-italic
+#: variants. To get a full list of supported fonts use the `kitty
+#: list-fonts` command. By default they are derived automatically, by
+#: the OSes font system. Setting them manually is useful for font
+#: families that have many weight variants like Book, Medium, Thick,
+#: etc. For example::
+
+#:     font_family      Operator Mono Book
+#:     bold_font        Operator Mono Medium
+#:     italic_font      Operator Mono Book Italic
+#:     bold_italic_font Operator Mono Medium Italic
+
+font_size 13.0
+
+#: Font size (in pts)
+
+adjust_line_height  0
+adjust_column_width 0
+
+#: Change the size of each character cell kitty renders. You can use
+#: either numbers, which are interpreted as pixels or percentages
+#: (number followed by %), which are interpreted as percentages of the
+#: unmodified values. You can use negative pixels or percentages less
+#: than 100% to reduce sizes (but this might cause rendering
+#: artifacts).
+
+# symbol_map U+E0A0-U+E0A2,U+E0B0-U+E0B3 PowerlineSymbols
+
+#: Map the specified unicode codepoints to a particular font. Useful
+#: if you need special rendering for some symbols, such as for
+#: Powerline. Avoids the need for patched fonts. Each unicode code
+#: point is specified in the form U+<code point in hexadecimal>. You
+#: can specify multiple code points, separated by commas and ranges
+#: separated by hyphens. symbol_map itself can be specified multiple
+#: times. Syntax is::
+
+#:     symbol_map codepoints Font Family Name
+
+disable_ligatures always
+
+#: Choose how you want to handle multi-character ligatures. The
+#: default is to always render them.  You can tell kitty to not render
+#: them when the cursor is over them by using cursor to make editing
+#: easier, or have kitty never render them at all by using always, if
+#: you don't like them. The ligature strategy can be set per-window
+#: either using the kitty remote control facility or by defining
+#: shortcuts for it in kitty.conf, for example::
+
+#:     map alt+1 disable_ligatures_in active always
+#:     map alt+2 disable_ligatures_in all never
+#:     map alt+3 disable_ligatures_in tab cursor
+
+box_drawing_scale 0.001, 1, 1.5, 2
+
+#: Change the sizes of the lines used for the box drawing unicode
+#: characters These values are in pts. They will be scaled by the
+#: monitor DPI to arrive at a pixel value. There must be four values
+#: corresponding to thin, normal, thick, and very thick lines.
+
+#: }}}
+
+#: Cursor customization {{{
+
+# gruvbox-dark
+# cursor #a89984
+
+# gruvbox-light
+cursor #4c4c4c
+
+#: Default cursor color
+
+cursor_text_color background
+
+#: Choose the color of text under the cursor. If you want it rendered
+#: with the background color of the cell underneath instead, use the
+#: special keyword: background
+
+cursor_shape block
+
+#: The cursor shape can be one of (block, beam, underline)
+
+cursor_blink_interval -1
+
+#: The interval (in seconds) at which to blink the cursor. Set to zero
+#: to disable blinking. Negative values mean use system default. Note
+#: that numbers smaller than repaint_delay will be limited to
+#: repaint_delay.
+
+cursor_stop_blinking_after 15.0
+
+#: Stop blinking cursor after the specified number of seconds of
+#: keyboard inactivity.  Set to zero to never stop blinking.
+
+#: }}}
+
+#: Scrollback {{{
+
+scrollback_lines 2000
+
+#: Number of lines of history to keep in memory for scrolling back.
+#: Memory is allocated on demand. Negative numbers are (effectively)
+#: infinite scrollback. Note that using very large scrollback is not
+#: recommended as it can slow down resizing of the terminal and also
+#: use large amounts of RAM.
+
+scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER
+
+#: Program with which to view scrollback in a new window. The
+#: scrollback buffer is passed as STDIN to this program. If you change
+#: it, make sure the program you use can handle ANSI escape sequences
+#: for colors and text formatting. INPUT_LINE_NUMBER in the command
+#: line above will be replaced by an integer representing which line
+#: should be at the top of the screen.
+
+scrollback_pager_history_size 0
+
+#: Separate scrollback history size, used only for browsing the
+#: scrollback buffer (in MB). This separate buffer is not available
+#: for interactive scrolling but will be piped to the pager program
+#: when viewing scrollback buffer in a separate window. The current
+#: implementation stores one character in 4 bytes, so approximatively
+#: 2500 lines per megabyte at 100 chars per line. A value of zero or
+#: less disables this feature. The maximum allowed size is 4GB.
+
+wheel_scroll_multiplier 5.0
+
+#: Modify the amount scrolled by the mouse wheel. Note this is only
+#: used for low precision scrolling devices, not for high precision
+#: scrolling on platforms such as macOS and Wayland. Use negative
+#: numbers to change scroll direction.
+
+touch_scroll_multiplier 1.0
+
+#: Modify the amount scrolled by a touchpad. Note this is only used
+#: for high precision scrolling devices on platforms such as macOS and
+#: Wayland. Use negative numbers to change scroll direction.
+
+#: }}}
+
+#: Mouse {{{
+
+mouse_hide_wait 0
+
+#: Hide mouse cursor after the specified number of seconds of the
+#: mouse not being used. Set to zero to disable mouse cursor hiding.
+#: Set to a negative value to hide the mouse cursor immediately when
+#: typing text. Disabled by default on macOS as getting it to work
+#: robustly with the ever-changing sea of bugs that is Cocoa is too
+#: much effort.
+
+url_color             #d65c0d
+url_style curly
+
+#: The color and style for highlighting URLs on mouse-over. url_style
+#: can be one of: none, single, double, curly
+
+open_url_modifiers kitty_mod
+
+#: The modifier keys to press when clicking with the mouse on URLs to
+#: open the URL
+
+open_url_with default
+
+#: The program with which to open URLs that are clicked on. The
+#: special value default means to use the operating system's default
+#: URL handler.
+
+copy_on_select no
+
+#: Copy to clipboard or a private buffer on select. With this set to
+#: clipboard, simply selecting text with the mouse will cause the text
+#: to be copied to clipboard. Useful on platforms such as macOS that
+#: do not have the concept of primary selections. You can instead
+#: specify a name such as a1 to copy to a private kitty buffer
+#: instead. Map a shortcut with the paste_from_buffer action to paste
+#: from this private buffer. For example::
+
+#:     map cmd+shift+v paste_from_buffer a1
+
+#: Note that copying to the clipboard is a security risk, as all
+#: programs, including websites open in your browser can read the
+#: contents of the system clipboard.
+
+strip_trailing_spaces never
+
+#: Remove spaces at the end of lines when copying to clipboard. A
+#: value of smart will do it when using normal selections, but not
+#: rectangle selections. always will always do it.
+
+rectangle_select_modifiers ctrl+alt
+
+#: The modifiers to use rectangular selection (i.e. to select text in
+#: a rectangular block with the mouse)
+
+terminal_select_modifiers shift
+
+#: The modifiers to override mouse selection even when a terminal
+#: application has grabbed the mouse
+
+select_by_word_characters :@-./_~?&=%+#
+
+#: Characters considered part of a word when double clicking. In
+#: addition to these characters any character that is marked as an
+#: alphanumeric character in the unicode database will be matched.
+
+click_interval -1.0
+
+#: The interval between successive clicks to detect double/triple
+#: clicks (in seconds). Negative numbers will use the system default
+#: instead, if available, or fallback to 0.5.
+
+focus_follows_mouse no
+
+#: Set the active window to the window under the mouse when moving the
+#: mouse around
+
+pointer_shape_when_grabbed arrow
+
+#: The shape of the mouse pointer when the program running in the
+#: terminal grabs the mouse.
+
+#: }}}
+
+#: Performance tuning {{{
+
+repaint_delay 10
+
+#: Delay (in milliseconds) between screen updates. Decreasing it,
+#: increases frames-per-second (FPS) at the cost of more CPU usage.
+#: The default value yields ~100 FPS which is more than sufficient for
+#: most uses. Note that to actually achieve 100 FPS you have to either
+#: set sync_to_monitor to no or use a monitor with a high refresh
+#: rate. Also, to minimize latency when there is pending input to be
+#: processed, repaint_delay is ignored.
+
+input_delay 3
+
+#: Delay (in milliseconds) before input from the program running in
+#: the terminal is processed. Note that decreasing it will increase
+#: responsiveness, but also increase CPU usage and might cause flicker
+#: in full screen programs that redraw the entire screen on each loop,
+#: because kitty is so fast that partial screen updates will be drawn.
+
+sync_to_monitor yes
+
+#: Sync screen updates to the refresh rate of the monitor. This
+#: prevents tearing (https://en.wikipedia.org/wiki/Screen_tearing)
+#: when scrolling. However, it limits the rendering speed to the
+#: refresh rate of your monitor. With a very high speed mouse/high
+#: keyboard repeat rate, you may notice some slight input latency. If
+#: so, set this to no.
+
+#: }}}
+
+#: Terminal bell {{{
+
+enable_audio_bell yes
+
+#: Enable/disable the audio bell. Useful in environments that require
+#: silence.
+
+visual_bell_duration 0.0
+
+#: Visual bell duration. Flash the screen when a bell occurs for the
+#: specified number of seconds. Set to zero to disable.
+
+window_alert_on_bell yes
+
+#: Request window attention on bell. Makes the dock icon bounce on
+#: macOS or the taskbar flash on linux.
+
+bell_on_tab yes
+
+#: Show a bell symbol on the tab if a bell occurs in one of the
+#: windows in the tab and the window is not the currently focused
+#: window
+
+command_on_bell none
+
+#: Program to run when a bell occurs.
+
+#: }}}
+
+#: Window layout {{{
+
+remember_window_size  yes
+initial_window_width  640
+initial_window_height 400
+
+#: If enabled, the window size will be remembered so that new
+#: instances of kitty will have the same size as the previous
+#: instance. If disabled, the window will initially have size
+#: configured by initial_window_width/height, in pixels. You can use a
+#: suffix of "c" on the width/height values to have them interpreted
+#: as number of cells instead of pixels.
+
+enabled_layouts *
+
+#: The enabled window layouts. A comma separated list of layout names.
+#: The special value all means all layouts. The first listed layout
+#: will be used as the startup layout. For a list of available
+#: layouts, see the
+#: https://sw.kovidgoyal.net/kitty/index.html#layouts.
+
+window_resize_step_cells 2
+window_resize_step_lines 2
+
+#: The step size (in units of cell width/cell height) to use when
+#: resizing windows. The cells value is used for horizontal resizing
+#: and the lines value for vertical resizing.
+
+window_border_width 1.0
+
+#: The width (in pts) of window borders. Will be rounded to the
+#: nearest number of pixels based on screen resolution. Note that
+#: borders are displayed only when more than one window is visible.
+#: They are meant to separate multiple windows.
+
+draw_minimal_borders yes
+
+#: Draw only the minimum borders needed. This means that only the
+#: minimum needed borders for inactive windows are drawn. That is only
+#: the borders that separate the inactive window from a neighbor. Note
+#: that setting a non-zero window margin overrides this and causes all
+#: borders to be drawn.
+
+window_margin_width 0.0
+
+#: The window margin (in pts) (blank area outside the border)
+
+single_window_margin_width -1000.0
+
+#: The window margin (in pts) to use when only a single window is
+#: visible. Negative values will cause the value of
+#: window_margin_width to be used instead.
+
+window_padding_width 0.0
+
+#: The window padding (in pts) (blank area between the text and the
+#: window border)
+
+placement_strategy top-left
+
+#: When the window size is not an exact multiple of the cell size, the
+#: cell area of the terminal window will have some extra padding on
+#: the sides. You can control how that padding is distributed with
+#: this option. Using a value of center means the cell area will be
+#: placed centrally. A value of top-left means the padding will be on
+#: only the bottom and right edges.
+
+active_border_color #00ff00
+
+#: The color for the border of the active window. Set this to none to
+#: not draw borders around the active window.
+
+inactive_border_color #cccccc
+
+#: The color for the border of inactive windows
+
+bell_border_color #ff5a00
+
+#: The color for the border of inactive windows in which a bell has
+#: occurred
+
+inactive_text_alpha 1.0
+
+#: Fade the text in inactive windows by the specified amount (a number
+#: between zero and one, with zero being fully faded).
+
+hide_window_decorations yes
+
+#: Hide the window decorations (title-bar and window borders). Whether
+#: this works and exactly what effect it has depends on the window
+#: manager/operating system.
+
+resize_debounce_time 0.1
+
+#: The time (in seconds) to wait before redrawing the screen when a
+#: resize event is received. On platforms such as macOS, where the
+#: operating system sends events corresponding to the start and end of
+#: a resize, this number is ignored.
+
+resize_draw_strategy static
+
+#: Choose how kitty draws a window while a resize is in progress. A
+#: value of static means draw the current window contents, mostly
+#: unchanged. A value of scale means draw the current window contents
+#: scaled. A value of blank means draw a blank window. A value of size
+#: means show the window size in cells.
+
+#: }}}
+
+#: Tab bar {{{
+
+tab_bar_edge bottom
+
+#: Which edge to show the tab bar on, top or bottom
+
+tab_bar_margin_width 0.0
+
+#: The margin to the left and right of the tab bar (in pts)
+
+tab_bar_style fade
+
+#: The tab bar style, can be one of: fade, separator, powerline, or
+#: hidden. In the fade style, each tab's edges fade into the
+#: background color, in the separator style, tabs are separated by a
+#: configurable separator, and the powerline shows the tabs as a
+#: continuous line.
+
+tab_bar_min_tabs 2
+
+#: The minimum number of tabs that must exist before the tab bar is
+#: shown
+
+tab_switch_strategy previous
+
+#: The algorithm to use when switching to a tab when the current tab
+#: is closed. The default of previous will switch to the last used
+#: tab. A value of left will switch to the tab to the left of the
+#: closed tab. A value of last will switch to the right-most tab.
+
+tab_fade 0.25 0.5 0.75 1
+
+#: Control how each tab fades into the background when using fade for
+#: the tab_bar_style. Each number is an alpha (between zero and one)
+#: that controls how much the corresponding cell fades into the
+#: background, with zero being no fade and one being full fade. You
+#: can change the number of cells used by adding/removing entries to
+#: this list.
+
+tab_separator " ┇"
+
+#: The separator between tabs in the tab bar when using separator as
+#: the tab_bar_style.
+
+tab_title_template {title}
+
+#: A template to render the tab title. The default just renders the
+#: title. If you wish to include the tab-index as well, use something
+#: like: {index}: {title}. Useful if you have shortcuts mapped for
+#: goto_tab N.
+
+# gruvbox-dark
+# active_tab_background #282828
+# active_tab_foreground #d4be98
+# active_tab_font_style bold
+# inactive_tab_background #282828
+# inactive_tab_foreground #a89984
+# inactive_tab_font_style normal
+
+# gruvbox-light
+active_tab_background #fbf1c7
+active_tab_foreground #654735
+active_tab_font_style bold
+inactive_tab_background #fbf1c7
+inactive_tab_foreground #7c6f64
+inactive_tab_font_style normal
+
+#: Tab bar colors and styles
+
+#: }}}
+
+#: Color scheme {{{
+
+# gruvbox-dark
+# background #272727
+# foreground #ebdbb2
+
+# gruvbox-light
+background #ffffff
+foreground #4c4c4c
+
+#: The foreground and background colors
+
+background_opacity 1.0
+
+#: The opacity of the background. A number between 0 and 1, where 1 is
+#: opaque and 0 is fully transparent.  This will only work if
+#: supported by the OS (for instance, when using a compositor under
+#: X11). Note that it only sets the default background color's
+#: opacity. This is so that things like the status bar in vim,
+#: powerline prompts, etc. still look good.  But it means that if you
+#: use a color theme with a background color in your editor, it will
+#: not be rendered as transparent.  Instead you should change the
+#: default background color in your kitty config and not use a
+#: background color in the editor color scheme. Or use the escape
+#: codes to set the terminals default colors in a shell script to
+#: launch your editor.  Be aware that using a value less than 1.0 is a
+#: (possibly significant) performance hit.  If you want to dynamically
+#: change transparency of windows set dynamic_background_opacity to
+#: yes (this is off by default as it has a performance cost)
+
+dynamic_background_opacity no
+
+#: Allow changing of the background_opacity dynamically, using either
+#: keyboard shortcuts (increase_background_opacity and
+#: decrease_background_opacity) or the remote control facility.
+
+dim_opacity 0.75
+
+#: How much to dim text that has the DIM/FAINT attribute set. One
+#: means no dimming and zero means fully dimmed (i.e. invisible).
+
+# gruvbox-dark
+# selection_foreground #655b53
+
+# gruvbox-light
+selection_foreground #ffffff
+
+#: The foreground for text selected with the mouse. A value of none
+#: means to leave the color unchanged.
+
+# gruvbox-dark
+# selection_background #ebdbb2
+
+# gruvbox-light
+selection_background #d6d6d6
+
+#: The background for text selected with the mouse.
+
+
+#: The 16 terminal colors. There are 8 basic colors, each color has a
+#: dull and bright version. You can also set the remaining colors from
+#: the 256 color table as color16 to color255.
+
+# Black
+
+# gruvbox-dark
+# color0   #272727
+# color8   #928373
+
+# gruvbox-light
+color0 #000000
+color8 #000000
+
+# Red
+
+# gruvbox-dark
+# color1   #cc231c
+# color9   #fb4833
+
+# gruvbox-light
+color1 #c82828
+color9 #c82828
+
+# Green
+
+# gruvbox-dark
+# color2   #989719
+# color10  #b8ba25
+
+# gruvbox-light
+color2 #708b00
+color10 #708b00
+
+# Yellow
+
+# gruvbox-dark
+# color3   #d79920
+# color11  #fabc2e
+
+# gruvbox-light
+color3 #e9b600
+color11 #e9b600
+
+# Blue
+
+# gruvbox-dark
+# color4  #448488
+# color12 #83a597
+
+# gruvbox-light
+color4 #4170ae
+color12 #4170ae
+
+# Magenta
+
+# gruvbox-dark
+# color5   #b16185
+# color13  #d3859a
+
+# gruvbox-light
+color5 #8958a7
+color13 #8958a7
+
+# Cyan
+
+# gruvbox-dark
+# color6   #689d69
+# color14  #8ec07b
+
+# gruvbox-light
+color6 #3d999f
+color14 #3d999f
+
+# White
+
+# gruvbox-dark
+# color7   #a89983
+# color15  #ebdbb2
+
+# gruvbox-light
+color7 #fffefe
+color15 #fffefe
+
+#: }}}
+
+#: Advanced {{{
+
+shell .
+
+#: The shell program to execute. The default value of . means to use
+#: whatever shell is set as the default shell for the current user.
+#: Note that on macOS if you change this, you might need to add
+#: --login to ensure that the shell starts in interactive mode and
+#: reads its startup rc files.
+
+editor .
+
+#: The console editor to use when editing the kitty config file or
+#: similar tasks. A value of . means to use the environment variables
+#: VISUAL and EDITOR in that order. Note that this environment
+#: variable has to be set not just in your shell startup scripts but
+#: system-wide, otherwise kitty will not see it.
+
+close_on_child_death no
+
+#: Close the window when the child process (shell) exits. If no (the
+#: default), the terminal will remain open when the child exits as
+#: long as there are still processes outputting to the terminal (for
+#: example disowned or backgrounded processes). If yes, the window
+#: will close as soon as the child process exits. Note that setting it
+#: to yes means that any background processes still using the terminal
+#: can fail silently because their stdout/stderr/stdin no longer work.
+
+allow_remote_control yes
+
+#: Allow other programs to control kitty. If you turn this on other
+#: programs can control all aspects of kitty, including sending text
+#: to kitty windows, opening new windows, closing windows, reading the
+#: content of windows, etc.  Note that this even works over ssh
+#: connections. You can chose to either allow any program running
+#: within kitty to control it, with yes or only programs that connect
+#: to the socket specified with the kitty --listen-on command line
+#: option, if you use the value socket-only. The latter is useful if
+#: you want to prevent programs running on a remote computer over ssh
+#: from controlling kitty.
+
+# env 
+
+#: Specify environment variables to set in all child processes. Note
+#: that environment variables are expanded recursively, so if you
+#: use::
+
+#:     env MYVAR1=a
+#:     env MYVAR2=${MYVAR1}/${HOME}/b
+
+#: The value of MYVAR2 will be a/<path to home directory>/b.
+
+update_check_interval 24
+
+#: Periodically check if an update to kitty is available. If an update
+#: is found a system notification is displayed informing you of the
+#: available update. The default is to check every 24 hrs, set to zero
+#: to disable.
+
+startup_session none
+
+#: Path to a session file to use for all kitty instances. Can be
+#: overridden by using the kitty --session command line option for
+#: individual instances. See
+#: https://sw.kovidgoyal.net/kitty/index.html#sessions in the kitty
+#: documentation for details. Note that relative paths are interpreted
+#: with respect to the kitty config directory. Environment variables
+#: in the path are expanded.
+
+clipboard_control write-clipboard write-primary
+
+#: Allow programs running in kitty to read and write from the
+#: clipboard. You can control exactly which actions are allowed. The
+#: set of possible actions is: write-clipboard read-clipboard write-
+#: primary read-primary. You can additionally specify no-append to
+#: disable kitty's protocol extension for clipboard concatenation. The
+#: default is to allow writing to the clipboard and primary selection
+#: with concatenation enabled. Note that enabling the read
+#: functionality is a security risk as it means that any program, even
+#: one running on a remote server via SSH can read your clipboard.
+
+term xterm-kitty
+
+#: The value of the TERM environment variable to set. Changing this
+#: can break many terminal programs, only change it if you know what
+#: you are doing, not because you read some advice on Stack Overflow
+#: to change it. The TERM variable is used by various programs to get
+#: information about the capabilities and behavior of the terminal. If
+#: you change it, depending on what programs you run, and how
+#: different the terminal you are changing it to is, various things
+#: from key-presses, to colors, to various advanced features may not
+#: work.
+
+#: }}}
+
+#: OS specific tweaks {{{
+
+macos_titlebar_color system
+
+#: Change the color of the kitty window's titlebar on macOS. A value
+#: of system means to use the default system color, a value of
+#: background means to use the background color of the currently
+#: active window and finally you can use an arbitrary color, such as
+#: #12af59 or red. WARNING: This option works by using a hack, as
+#: there is no proper Cocoa API for it. It sets the background color
+#: of the entire window and makes the titlebar transparent. As such it
+#: is incompatible with background_opacity. If you want to use both,
+#: you are probably better off just hiding the titlebar with
+#: hide_window_decorations.
+
+macos_option_as_alt yes
+
+#: Use the option key as an alt key. With this set to no, kitty will
+#: use the macOS native Option+Key = unicode character behavior. This
+#: will break any Alt+key keyboard shortcuts in your terminal
+#: programs, but you can use the macOS unicode input technique. You
+#: can use the values: left, right, or both to use only the left,
+#: right or both Option keys as Alt, instead.
+
+macos_hide_from_tasks no
+
+#: Hide the kitty window from running tasks (Option+Tab) on macOS.
+
+macos_quit_when_last_window_closed yes
+
+#: Have kitty quit when all the top-level windows are closed. By
+#: default, kitty will stay running, even with no open windows, as is
+#: the expected behavior on macOS.
+
+macos_window_resizable yes
+
+#: Disable this if you want kitty top-level (OS) windows to not be
+#: resizable on macOS.
+
+macos_thicken_font 0
+
+#: Draw an extra border around the font with the given width, to
+#: increase legibility at small font sizes. For example, a value of
+#: 0.75 will result in rendering that looks similar to sub-pixel
+#: antialiasing at common font sizes.
+
+macos_traditional_fullscreen no
+
+#: Use the traditional full-screen transition, that is faster, but
+#: less pretty.
+
+macos_show_window_title_in all
+
+#: Show or hide the window title in the macOS window or menu-bar. A
+#: value of window will show the title of the currently active window
+#: at the top of the macOS window. A value of menubar will show the
+#: title of the currently active window in the macOS menu-bar, making
+#: use of otherwise wasted space. all will show the title everywhere
+#: and none hides the title in the window and the menu-bar.
+
+macos_custom_beam_cursor no
+
+#: Enable/disable custom mouse cursor for macOS that is easier to see
+#: on both light and dark backgrounds. WARNING: this might make your
+#: mouse cursor invisible on dual GPU machines.
+
+linux_display_server auto
+
+#: Choose between Wayland and X11 backends. By default, an appropriate
+#: backend based on the system state is chosen automatically. Set it
+#: to x11 or wayland to force the choice.
+
+#: }}}
+
+#: Keyboard shortcuts {{{
+
+#: For a list of key names, see: GLFW keys
+#: <https://www.glfw.org/docs/latest/group__keys.html>. The name to
+#: use is the part after the GLFW_KEY_ prefix. For a list of modifier
+#: names, see: GLFW mods
+#: <https://www.glfw.org/docs/latest/group__mods.html>
+
+#: On Linux you can also use XKB key names to bind keys that are not
+#: supported by GLFW. See XKB keys
+#: <https://github.com/xkbcommon/libxkbcommon/blob/master/xkbcommon/xkbcommon-
+#: keysyms.h> for a list of key names. The name to use is the part
+#: after the XKB_KEY_ prefix. Note that you should only use an XKB key
+#: name for keys that are not present in the list of GLFW keys.
+
+#: Finally, you can use raw system key codes to map keys. To see the
+#: system key code for a key, start kitty with the kitty --debug-
+#: keyboard option. Then kitty will output some debug text for every
+#: key event. In that text look for ``native_code`` the value of that
+#: becomes the key name in the shortcut. For example:
+
+#: .. code-block:: none
+
+#:     on_key_input: glfw key: 65 native_code: 0x61 action: PRESS mods: 0x0 text: 'a'
+
+#: Here, the key name for the A key is 0x61 and you can use it with::
+
+#:     map ctrl+0x61 something
+
+#: to map ctrl+a to something.
+
+#: You can use the special action no_op to unmap a keyboard shortcut
+#: that is assigned in the default configuration::
+
+#:     map kitty_mod+space no_op
+
+#: You can combine multiple actions to be triggered by a single
+#: shortcut, using the syntax below::
+
+#:     map key combine <separator> action1 <separator> action2 <separator> action3 ...
+
+#: For example::
+
+#:     map kitty_mod+e combine : new_window : next_layout
+
+#: this will create a new window and switch to the next available
+#: layout
+
+#: You can use multi-key shortcuts using the syntax shown below::
+
+#:     map key1>key2>key3 action
+
+#: For example::
+
+#:     map ctrl+f>2 set_font_size 20
+
+kitty_mod ctrl+shift
+
+#: The value of kitty_mod is used as the modifier for all default
+#: shortcuts, you can change it in your kitty.conf to change the
+#: modifiers for all the default shortcuts.
+
+clear_all_shortcuts no
+
+#: You can have kitty remove all shortcut definition seen up to this
+#: point. Useful, for instance, to remove the default shortcuts.
+
+# kitten_alias hints hints --hints-offset=0
+
+#: You can create aliases for kitten names, this allows overriding the
+#: defaults for kitten options and can also be used to shorten
+#: repeated mappings of the same kitten with a specific group of
+#: options. For example, the above alias changes the default value of
+#: kitty +kitten hints --hints-offset to zero for all mappings,
+#: including the builtin ones.
+
+#: Clipboard {{{
+
+map kitty_mod+c copy_to_clipboard
+
+#: There is also a copy_or_interrupt action that can be optionally
+#: mapped to Ctrl+c. It will copy only if there is a selection and
+#: send an interrupt otherwise.
+
+map kitty_mod+v  paste_from_clipboard
+map kitty_mod+s  paste_from_selection
+map shift+insert paste_from_selection
+map kitty_mod+o  pass_selection_to_program
+
+#: You can also pass the contents of the current selection to any
+#: program using pass_selection_to_program. By default, the system's
+#: open program is used, but you can specify your own, the selection
+#: will be passed as a command line argument to the program, for
+#: example::
+
+#:     map kitty_mod+o pass_selection_to_program firefox
+
+#: You can pass the current selection to a terminal program running in
+#: a new kitty window, by using the @selection placeholder::
+
+#:     map kitty_mod+y new_window less @selection
+
+#: }}}
+
+#: Scrolling {{{
+
+map kitty_mod+up        scroll_line_up
+map kitty_mod+k         scroll_line_up
+map kitty_mod+down      scroll_line_down
+map kitty_mod+j         scroll_line_down
+map kitty_mod+page_up   scroll_page_up
+map kitty_mod+page_down scroll_page_down
+map kitty_mod+home      scroll_home
+map kitty_mod+end       scroll_end
+map kitty_mod+h         show_scrollback
+
+#: You can pipe the contents of the current screen + history buffer as
+#: STDIN to an arbitrary program using the ``launch`` function. For
+#: example, the following opens the scrollback buffer in less in an
+#: overlay window::
+
+#:     map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R
+
+#: For more details on piping screen and buffer contents to external
+#: programs, see launch.
+
+#: }}}
+
+#: Window management {{{
+
+map kitty_mod+enter new_window
+
+#: You can open a new window running an arbitrary program, for
+#: example::
+
+#:     map kitty_mod+y      launch mutt
+
+#: You can open a new window with the current working directory set to
+#: the working directory of the current window using::
+
+#:     map ctrl+alt+enter    launch --cwd=current
+
+#: You can open a new window that is allowed to control kitty via the
+#: kitty remote control facility by prefixing the command line with @.
+#: Any programs running in that window will be allowed to control
+#: kitty. For example::
+
+#:     map ctrl+enter launch --allow-remote-control some_program
+
+#: You can open a new window next to the currently active window or as
+#: the first window, with::
+
+#:     map ctrl+n launch --location=neighbor some_program
+#:     map ctrl+f launch --location=first some_program
+
+#: For more details, see launch.
+
+map kitty_mod+n new_os_window
+
+#: Works like new_window above, except that it opens a top level OS
+#: kitty window. In particular you can use new_os_window_with_cwd to
+#: open a window with the current working directory.
+
+map kitty_mod+w close_window
+map kitty_mod+] next_window
+map kitty_mod+[ previous_window
+map kitty_mod+f move_window_forward
+map kitty_mod+b move_window_backward
+map kitty_mod+` move_window_to_top
+map kitty_mod+r start_resizing_window
+map kitty_mod+1 first_window
+map kitty_mod+2 second_window
+map kitty_mod+3 third_window
+map kitty_mod+4 fourth_window
+map kitty_mod+5 fifth_window
+map kitty_mod+6 sixth_window
+map kitty_mod+7 seventh_window
+map kitty_mod+8 eighth_window
+map kitty_mod+9 ninth_window
+#: }}}
+
+#: Tab management {{{
+
+map cmd+] next_tab
+map cmd+[  previous_tab
+map kitty_mod+t     new_tab
+map kitty_mod+q     close_tab
+map kitty_mod+.     move_tab_forward
+map kitty_mod+,     move_tab_backward
+map kitty_mod+alt+t set_tab_title
+
+map kitty_mod+right next_tab
+map kitty_mod+left  previous_tab
+map kitty_mod+t     new_tab
+map kitty_mod+q     close_tab
+map kitty_mod+.     move_tab_forward
+map kitty_mod+,     move_tab_backward
+map kitty_mod+alt+t set_tab_title
+
+#: You can also create shortcuts to go to specific tabs, with 1 being
+#: the first tab, 2 the second tab and -1 being the previously active
+#: tab::
+
+#:     map ctrl+alt+1 goto_tab 1
+#:     map ctrl+alt+2 goto_tab 2
+
+#: Just as with new_window above, you can also pass the name of
+#: arbitrary commands to run when using new_tab and use
+#: new_tab_with_cwd. Finally, if you want the new tab to open next to
+#: the current tab rather than at the end of the tabs list, use::
+
+#:     map ctrl+t new_tab !neighbor [optional cmd to run]
+#: }}}
+
+#: Layout management {{{
+
+map kitty_mod+l next_layout
+map cmd+l next_layout
+
+#: You can also create shortcuts to switch to specific layouts::
+
+#:     map ctrl+alt+t goto_layout tall
+#:     map ctrl+alt+s goto_layout stack
+
+#: Similarly, to switch back to the previous layout::
+
+#:    map ctrl+alt+p last_used_layout
+#: }}}
+
+#: Font sizes {{{
+
+#: You can change the font size for all top-level kitty OS windows at
+#: a time or only the current one.
+
+map kitty_mod+equal     change_font_size all +1.0
+map kitty_mod+minus     change_font_size all -1.0
+map kitty_mod+0 change_font_size all 0
+
+#: To setup shortcuts for specific font sizes::
+
+#:     map kitty_mod+f6 change_font_size all 10.0
+
+#: To setup shortcuts to change only the current OS window's font
+#: size::
+
+#:     map kitty_mod+f6 change_font_size current 10.0
+#: }}}
+
+#: Select and act on visible text {{{
+
+#: Use the hints kitten to select text and either pass it to an
+#: external program or insert it into the terminal or copy it to the
+#: clipboard.
+
+map kitty_mod+e kitten hints
+
+#: Open a currently visible URL using the keyboard. The program used
+#: to open the URL is specified in open_url_with.
+
+map kitty_mod+p>f kitten hints --type path --program -
+
+#: Select a path/filename and insert it into the terminal. Useful, for
+#: instance to run git commands on a filename output from a previous
+#: git command.
+
+map kitty_mod+p>shift+f kitten hints --type path
+
+#: Select a path/filename and open it with the default open program.
+
+map kitty_mod+p>l kitten hints --type line --program -
+
+#: Select a line of text and insert it into the terminal. Use for the
+#: output of things like: ls -1
+
+map kitty_mod+p>w kitten hints --type word --program -
+
+#: Select words and insert into terminal.
+
+map kitty_mod+p>h kitten hints --type hash --program -
+
+#: Select something that looks like a hash and insert it into the
+#: terminal. Useful with git, which uses sha1 hashes to identify
+#: commits
+
+
+#: The hints kitten has many more modes of operation that you can map
+#: to different shortcuts. For a full description see kittens/hints.
+#: }}}
+
+#: Miscellaneous {{{
+
+# map kitty_mod+f11    toggle_fullscreen
+# map kitty_mod+f10    toggle_maximized
+# map kitty_mod+u      kitten unicode_input
+# map kitty_mod+f2     edit_config_file
+# map kitty_mod+escape kitty_shell window
+
+#: Open the kitty shell in a new window/tab/overlay/os_window to
+#: control kitty using commands.
+
+# map kitty_mod+a>m    set_background_opacity +0.1
+# map kitty_mod+a>l    set_background_opacity -0.1
+# map kitty_mod+a>1    set_background_opacity 1
+# map kitty_mod+a>d    set_background_opacity default
+# map kitty_mod+delete clear_terminal reset active
+
+#: You can create shortcuts to clear/reset the terminal. For example::
+
+map super+w no_op
+map super+r no_op
+map super+t no_op
+map super+1 no_op
+map super+2 no_op
+map super+3 no_op
+map super+4 no_op
+map super+5 no_op
+map super+6 no_op
+map super+7 no_op
+map super+8 no_op
+map super+9 no_op
+map ctrl+shift+tab no_op
+map ctrl+tab no_op
+map super+shift+left no_op
+map super+shift+right no_op
+map super+shift+; no_op
+
+#: tmux close
+map super+w send_text all \x00x
+#: tmux rename tab
+map super+r send_text all \x00,
+#: tmux new tab
+map super+t send_text all \x00c
+map super+1 send_text all \x001
+map super+2 send_text all \x002
+map super+3 send_text all \x003
+map super+4 send_text all \x004
+map super+5 send_text all \x005
+map super+6 send_text all \x006
+map super+7 send_text all \x007
+map super+8 send_text all \x008
+map super+9 send_text all \x009
+map ctrl+shift+tab send_text all \x00_
+map ctrl+tab send_text all \x00+
+map super+shift+left send_text all \x00p
+map super+shift+right send_text all \x00n
+map super+shift+; send_text all \x00:
+
+
+#:     # Reset the terminal
+#:     map kitty_mod+f9 clear_terminal reset active
+#:     # Clear the terminal screen by erasing all contents
+#:     map kitty_mod+f10 clear_terminal clear active
+#:     # Clear the terminal scrollback by erasing it
+#:     map kitty_mod+f11 clear_terminal scrollback active
+#:     # Scroll the contents of the screen into the scrollback
+#:     map kitty_mod+f12 clear_terminal scroll active
+
+#: If you want to operate on all windows instead of just the current
+#: one, use all instead of active.
+
+#: It is also possible to remap Ctrl+L to both scroll the current
+#: screen contents into the scrollback buffer and clear the screen,
+#: instead of just clearing the screen::
+
+#:     map ctrl+l combine : clear_terminal scroll active : send_text normal,application \x0c
+
+
+#: You can tell kitty to send arbitrary (UTF-8) encoded text to the
+#: client program when pressing specified shortcut keys. For example::
+
+#:     map ctrl+alt+a send_text all Special text
+
+#: This will send "Special text" when you press the ctrl+alt+a key
+#: combination.  The text to be sent is a python string literal so you
+#: can use escapes like \x1b to send control codes or \u21fb to send
+#: unicode characters (or you can just input the unicode characters
+#: directly as UTF-8 text). The first argument to send_text is the
+#: keyboard modes in which to activate the shortcut. The possible
+#: values are normal or application or kitty or a comma separated
+#: combination of them.  The special keyword all means all modes. The
+#: modes normal and application refer to the DECCKM cursor key mode
+#: for terminals, and kitty refers to the special kitty extended
+#: keyboard protocol.
+
+#: Another example, that outputs a word and then moves the cursor to
+#: the start of the line (same as pressing the Home key)::
+
+#:     map ctrl+alt+a send_text normal Word\x1b[H
+#:     map ctrl+alt+a send_text application Word\x1bOH
+
+#: }}}
+
+# }}}
diff --git a/.config/nvim/coc-settings.json b/.config/nvim/coc-settings.json
@@ -1,4 +1,5 @@
 {
+  "coc.preferences.bracketEnterImprove": false,
   "coc.preferences.formatOnSaveFiletypes": [
     "javascript",
     "javascriptreact",
@@ -8,13 +9,38 @@
     "reason",
     "reasonreact"
   ],
+
+  "diagnostic.errorSign": "█",
+  "diagnostic.hintSign": "█",
+  "diagnostic.infoSign": "█",
+  "diagnostic.warningSign": "█",
+
   "flow.pathToFlow": "${workspaceRoot}/node_modules/.bin/flow",
+
+  "git.command": "hub",
+  "git.gitlab.hosts": ["gitlab.kumparan.com", "gitlab.com"],
+  // "git.addGBlameToBufferVar": true,
+  // "git.addGBlameToVirtualText": true,
+  "git.addedSign.text": "█",
+  "git.changedSign.text": "█",
+  "git.removedSign.text": "▂",
+  "git.topRemovedSign.text": "▀",
+  "git.changeRemovedSign.text": "█",
+  "git.addedSign.hlGroup": "Signify",
+  "git.changedSign.hlGroup": "Signify",
+  "git.removedSign.hlGroup": "Signify",
+  "git.topRemovedSign.hlGroup": "Signify",
+  "git.changeRemovedSign.hlGroup": "Signify",
+
   "javascript.validate.enable": false,
+
   "prettier.eslintIntegration": true,
   "prettier.tslintIntegration": true,
   "prettier.ignorePath": ".prettierignore",
+
   "tsserver.npm": "/usr/local/bin/npm",
   "tsserver.locale": "/usr/local/bin/tsserver",
+
   "languageserver": {
     "reason": {
       "command": "~/bin/reason-language-server",
diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim
@@ -11,28 +11,38 @@ endif
 call plug#begin(s:plugin_location)
   Plug 'morhetz/gruvbox'
     let g:gruvbox_italic = 1
+  Plug 'arzg/vim-colors-xcode'
+    let g:xcodelighthc_match_paren_style = 1
 
   " *fzf.vim*
   Plug '/usr/local/opt/fzf'
-  Plug 'ybbond/fzf.vim'
+  Plug 'junegunn/fzf.vim'
+    let g:fzf_preview_window = ['down:50%', 'ctrl-/']
+  source ~/.vim/scripts/fzf_js_import.vim
 
   " *bufkill*
   Plug 'qpkorr/vim-bufkill'
 
-  Plug 'junegunn/goyo.vim'
-  Plug 'junegunn/limelight.vim'
-    let g:limelight_conceal_ctermfg = 'gray'
-    let g:limelight_conceal_ctermfg = 240
+  " Plug 'junegunn/goyo.vim'
+  " Plug 'junegunn/limelight.vim'
+  "   let g:limelight_conceal_ctermfg = 'gray'
+  "   let g:limelight_conceal_ctermfg = 240
 
   " *vim-fugitive*
   Plug 'tpope/vim-fugitive'
   Plug 'tpope/vim-rhubarb'
-  Plug 'mhinz/vim-signify'
-    let g:signify_realtime = 1
-    let g:signify_cursorhold_normal = 0
-    let g:signify_cursorhold_insert = 0
+  " Plug 'mhinz/vim-signify'
+  "   let g:signify_realtime = 1
+  "   let g:signify_cursorhold_normal = 0
+  "   let g:signify_cursorhold_insert = 0
+  "   let g:signify_sign_add    = '█'
+  "   let g:signify_sign_change = '█'
+  "   let g:signify_sign_delete = '▂'
+  "   let g:signify_sign_show_count = 0
+  "   let g:signify_line_highlight = 0
   Plug 'shumphrey/fugitive-gitlab.vim'
     let g:fugitive_gitlab_domains = ['https://gitlab.kumparan.com']
+
   " *git-messenger*
   Plug 'rhysd/git-messenger.vim'
     let g:git_messenger_git_command = 'hub'
@@ -55,6 +65,13 @@ call plug#begin(s:plugin_location)
     let g:airline#extensions#tabline#buffer_nr_show = 1
     let g:airline#extensions#tabline#formatter = 'jsformatter'
 
+    " to enable these, set git.addGBlameToBufferVar true on CocConfig
+    " function! s:update_git_blame()
+    "   let g:airline_section_x = "%{get(b:,'coc_git_blame','')}"
+    " endfunction
+    " let g:airline_section_x = "%{get(b:,'coc_git_blame','')}"
+    " autocmd User CocGitStatusChange call s:update_git_blame()
+
     let g:airline_section_x = []
     let g:airline_section_y = []
 
@@ -62,7 +79,7 @@ call plug#begin(s:plugin_location)
     " use error & warning count of diagnostics form coc.nvim
     let g:airline_section_error = '%{airline#util#wrap(airline#extensions#coc#get_error(),0)}'
     let g:airline_section_warning = '%{airline#util#wrap(airline#extensions#coc#get_warning(),0)}'
-    let g:airline_theme = 'gruvbox'
+    let g:airline_theme = 'xcodelighthc'
 
   " *tmux*
   Plug 'tmux-plugins/vim-tmux'
@@ -90,15 +107,15 @@ call plug#begin(s:plugin_location)
         call CocAction('doHover')
       endif
     endfunction
-    au BufNewFile,BufRead *.c setlocal tabstop=4
-    au BufNewFile,BufRead *.c setlocal shiftwidth=4
-    au BufNewFile,BufRead *.c setlocal set noexpandtab
+    au BufNewFile,BufRead *.(c|v|py) setlocal tabstop=4
+    au BufNewFile,BufRead *.(c|v|py) setlocal shiftwidth=4
+    au BufNewFile,BufRead *.(c|v|py) setlocal set noexpandtab
 
   " *vim-clap*
-  Plug 'liuchengxu/vim-clap', { 'do': ':Clap install-binary!' }
-    let g:clap_provider_grep_delay = 100
-    let g:clap_disable_run_rooter = v:true
-    let g:clap_layout = { 'relative': 'editor' }
+  " Plug 'liuchengxu/vim-clap', { 'do': ':Clap install-binary!' }
+  "   let g:clap_provider_grep_delay = 100
+  "   let g:clap_disable_run_rooter = v:true
+  "   let g:clap_layout = { 'relative': 'editor' }
 
   " JavaScript
   Plug 'pangloss/vim-javascript'
@@ -117,16 +134,16 @@ call plug#begin(s:plugin_location)
   Plug 'HerringtonDarkholme/yats.vim'
 
   " Markdown
-  Plug 'ybbond/vim-markdown'
-    let g:vim_markdown_folding_disabled = 1
-    let g:vim_markdown_conceal = 0
-    let g:vim_markdown_strikethrough = 1
-    let g:vim_markdown_math = 1
-    let g:vim_markdown_frontmatter = 1  " for YAML format
-    let g:vim_markdown_toml_frontmatter = 1  " for TOML format
-    let g:vim_markdown_json_frontmatter = 1  " for JSON format
-  Plug 'itspriddle/vim-marked'
-  Plug 'godlygeek/tabular'
+  " Plug 'ybbond/vim-markdown'
+  "   let g:vim_markdown_folding_disabled = 1
+  "   let g:vim_markdown_conceal = 0
+  "   let g:vim_markdown_strikethrough = 1
+  "   let g:vim_markdown_math = 1
+  "   let g:vim_markdown_frontmatter = 1  " for YAML format
+  "   let g:vim_markdown_toml_frontmatter = 1  " for TOML format
+  "   let g:vim_markdown_json_frontmatter = 1  " for JSON format
+  " " Plug 'itspriddle/vim-marked'
+  " Plug 'godlygeek/tabular'
 
   Plug 'cespare/vim-toml'
   Plug 'stephpy/vim-yaml'
@@ -138,24 +155,20 @@ call plug#begin(s:plugin_location)
   Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
 
   " Rust
-  Plug 'rust-lang/rust.vim'
-    let g:rustfmt_autosave = 1
+  " Plug 'rust-lang/rust.vim'
+  "   let g:rustfmt_autosave = 1
 
   " Reason
   Plug 'reasonml-editor/vim-reason-plus'
     autocmd BufNewFile,BufRead *.re nnoremap <leader>w :!refmt --in-place %<cr>
 
-  " vlang
-  Plug 'cheap-glitch/vim-v'
-    let g:v_warnings=1
-    au BufNewFile,BufRead *.(v|py) setlocal tabstop=4
-    au BufNewFile,BufRead *.(v|py) setlocal shiftwidth=4
-    au BufNewFile,BufRead *.(v|py) setlocal set noexpandtab
+  " " vlang
+  Plug 'ollykel/v-vim'
 
 call plug#end()
 
-colorscheme gruvbox
-" set background=dark
+colorscheme xcodelighthc
+set background=light
 set termguicolors
 
 syntax enable
@@ -246,8 +259,8 @@ nnoremap <silent> <LEADER><SPACE> :nohlsearch<cr>
 " Toggle check spelling
 nnoremap <leader>s :set spell! spelllang=en_us<cr>
 
-" Marked toggle
-nnoremap <leader>m :MarkedToggle!<cr>
+" " Marked toggle
+" nnoremap <leader>m :MarkedToggle!<cr>
 
 map <silent> <A-h> <C-w><
 map <silent> <A-k> <C-W>-
@@ -286,12 +299,18 @@ nnoremap gB :bprevious<cr>
   nmap gh :call <SID>show_documentation()<cr>
   nmap <2-LeftMouse> :call <SID>show_documentation()<cr>
   nmap <leader>gd <Plug>(coc-diagnostics-info)
+  nmap [c <Plug>(coc-git-prevchunk)
+  nmap ]c <Plug>(coc-git-nextchunk)
+  nmap <C-w>g <Plug>(coc-git-chunkinfo)
+  nmap <C-w><C-g> <Plug>(coc-git-chunkinfo)
   nmap ]C <Plug>(coc-diagnostic-next)
   nmap [C <Plug>(coc-diagnostic-prev)
   nmap gi <Plug>(coc-implementation)
   nmap gr <Plug>(coc-references)
   nmap <leader>. :call CocAction("codeAction")<cr>
 
+  command! GC CocList gstatus
+
 " |git-messenger|
   nmap <C-w>m <Plug>(git-messenger)
   nmap <C-w><C-m> <Plug>(git-messenger)
@@ -304,22 +323,47 @@ nnoremap gB :bprevious<cr>
     \ rg --column --line-number --no-heading --fixed-strings --ignore-case --hidden --follow --color "always"
     \ -g "*.{css,js,jsx,ts,tsx,json,re,php,md,styl,jade,html,config,py,cpp,c,go,hs,rb,conf}"
     \ -g "!{.git,node_modules,coverage,vendor,build}/*" '
-  " :F for Ripgrep
-  command! -bang -nargs=* Strings call fzf#vim#grep(g:rg_command .shellescape(<q-args>), 1, <bang>0)
-  " nnoremap <C-p> <C-o>
+  " command! -bang -nargs=* Strings call fzf#vim#grep(g:rg_command .shellescape(<q-args>), 1, <bang>0)
+  command! -bang -nargs=* StringsAll
+  \ call fzf#vim#grep(
+  \   'rg --column --line-number --hidden --no-ignore --no-heading --color=always --smart-case -- '.shellescape(<q-args>), 1,
+  \   fzf#vim#with_preview({'options': '--preview-window=down:50% --layout=reverse --delimiter : --nth 4..'}), <bang>0)
+  command! -bang -nargs=* Strings
+  \ call fzf#vim#grep(
+  \   'rg --column --line-number --hidden --glob "!{.git,node_modules,flow-typed,operation-types.flow.js,generatedTypes}" --no-heading --color=always --smart-case -- '.shellescape(<q-args>), 1,
+  \   fzf#vim#with_preview({'options': '--preview-window=down:50% --layout=reverse --delimiter : --nth 4..'}), <bang>0)
+  command! -bang -nargs=* StringsAndFile
+  \ call fzf#vim#grep(
+  \   'rg --column --line-number --hidden --glob "!{.git,node_modules,flow-typed,operation-types.flow.js,generatedTypes}" --no-heading --color=always --smart-case -- '.shellescape(<q-args>), 1,
+  \   fzf#vim#with_preview({'options': '--preview-window=down:50% --layout=reverse'}), <bang>0)
+  " the {'options': '--delimiter : --nth 4..'} option limit the string search
+  " only for file content
+
+  command! -bang -nargs=? -complete=dir FilesAll
+    \ call fzf#vim#files(<q-args>, fzf#vim#with_preview({'options': ['--preview-window=down:50%', '--layout=reverse', '--info=inline']}), <bang>0)
+  command! -bang -nargs=? -complete=dir Files
+    \ call fzf#vim#gitfiles(<q-args>, fzf#vim#with_preview({'options': ['--preview-window=down:50%', '--layout=reverse', '--info=inline']}), <bang>0)
+
   " nnoremap <C-o> :Strings<cr>
   " nnoremap <C-i> :Files<cr>
+  noremap <C-i> :Strings<cr>
+  noremap <C-s> :StringsAndFile<cr>
+  noremap <leader><C-i> :StringsAll<cr>
+  noremap <C-p> :Files --cached --others --exclude-standard<cr>
+  noremap <leader><C-p> :FilesAll<cr>
+  noremap <C-b> :Buffers<CR>
+  noremap <C-g> :GC<CR>
 
 " |vim-clap|
-  nnoremap <C-i> :Clap!! grep ++opt=--hidden ++opt=-g=!.git<cr>
-  nnoremap <leader><C-i> :Clap grep ++opt=--hidden ++opt=-g=!.git<cr>
-  nnoremap <C-p> :Clap!! files --hidden<cr>
-  nnoremap <leader><C-p> :Clap files --hidden<cr>
-  nnoremap <leader>* :Clap!! grep ++query=<cword> ++opt=--hidden ++opt=-g=!.git<cr>
-  nnoremap <leader><leader>* :Clap grep ++query=<cword> ++opt=--hidden ++opt=-g=!.git<cr>
-  vnoremap <leader>* :Clap!! grep ++query=@visual ++opt=--hidden ++opt=-g=!.git<cr>
-  vnoremap <leader><leader>* :Clap grep ++query=@visual ++opt=--hidden ++opt=-g=!.git<cr>
-  nnoremap <C-b> :Clap buffers<cr>
+  " nnoremap <C-i> :Clap!! grep ++opt=--hidden ++opt=-g=!.git<cr>
+  " nnoremap <leader><C-i> :Clap grep ++opt=--hidden ++opt=-g=!.git<cr>
+  " nnoremap <C-p> :Clap!! files --hidden<cr>
+  " nnoremap <leader><C-p> :Clap files --hidden<cr>
+  " nnoremap <leader>* :Clap!! grep ++query=<cword> ++opt=--hidden ++opt=-g=!.git<cr>
+  " nnoremap <leader><leader>* :Clap grep ++query=<cword> ++opt=--hidden ++opt=-g=!.git<cr>
+  " vnoremap <leader>* :Clap!! grep ++query=@visual ++opt=--hidden ++opt=-g=!.git<cr>
+  " vnoremap <leader><leader>* :Clap grep ++query=@visual ++opt=--hidden ++opt=-g=!.git<cr>
+  " nnoremap <C-b> :Clap buffers<cr>
 
 " |nerdtree|
   map <leader>e :NERDTreeToggle<cr>
@@ -330,8 +374,8 @@ nnoremap gB :bprevious<cr>
 "                      INSERT MODE
 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
-" Remap <c-f> to delete
-inoremap <C-f> <Del>
+" Remap <c-d> to delete
+inoremap <C-d> <Del>
 
 " Remap <c-b> to delete within word
 inoremap <C-b> <ESC>lcw
@@ -340,10 +384,6 @@ inoremap <C-b> <ESC>lcw
 inoremap jk <ESC>
 inoremap <C-c> <ESC>
 
-" |fzf.vim|
-  inoremap <expr> <C-x><C-h> fzf#vim#complete#path_relative('rg --files')
-
-
 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 "                      APPEARANCE
 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
@@ -374,38 +414,38 @@ function ToggleNumberToggle(numberVar)
   endif
 endfunction
 
-function! s:goyo_enter()
-  if executable('tmux') && strlen($TMUX)
-    silent !tmux set status off
-    silent !tmux list-panes -F '\#F' | grep -q Z || tmux resize-pane -Z
-  endif
-  set noshowcmd
-  set wrap
-  set nonumber
-  set norelativenumber
-  set eventignore=FocusGained,BufEnter
-  set nocursorline
-  Limelight
-  :call ToggleNumberToggle(0)
-endfunction
-
-function! s:goyo_leave()
-  if executable('tmux') && strlen($TMUX)
-    silent !tmux set status on
-    silent !tmux list-panes -F '\#F' | grep -q Z && tmux resize-pane -Z
-  endif
-  set showcmd
-  set nowrap
-  set number
-  set relativenumber
-  set eventignore=
-  set cursorline
-  Limelight!
-  :call ToggleNumberToggle(1)
-endfunction
-
-autocmd! User GoyoEnter nested call <SID>goyo_enter()
-autocmd! User GoyoLeave nested call <SID>goyo_leave()
+" function! s:goyo_enter()
+"   if executable('tmux') && strlen($TMUX)
+"     silent !tmux set status off
+"     silent !tmux list-panes -F '\#F' | grep -q Z || tmux resize-pane -Z
+"   endif
+"   set noshowcmd
+"   set wrap
+"   set nonumber
+"   set norelativenumber
+"   set eventignore=FocusGained,BufEnter
+"   set nocursorline
+"   Limelight
+"   :call ToggleNumberToggle(0)
+" endfunction
+
+" function! s:goyo_leave()
+"   if executable('tmux') && strlen($TMUX)
+"     silent !tmux set status on
+"     silent !tmux list-panes -F '\#F' | grep -q Z && tmux resize-pane -Z
+"   endif
+"   set showcmd
+"   set nowrap
+"   set number
+"   set relativenumber
+"   set eventignore=
+"   set cursorline
+"   Limelight!
+"   :call ToggleNumberToggle(1)
+" endfunction
+
+" autocmd! User GoyoEnter nested call <SID>goyo_enter()
+" autocmd! User GoyoLeave nested call <SID>goyo_leave()
 
 " change cursor in different mode
 if has('nvim')
@@ -447,8 +487,8 @@ set diffopt+=vertical
 " Change comment color
 " hi Comment guifg=LightBlue
 hi Comment gui=italic cterm=italic
-hi htmlStrike gui=strikethrough cterm=strikethrough guibg=Black ctermbg=Black
-hi Todo guibg=White ctermbg=White guifg=Black ctermfg=Black gui=bold,italic cterm=bold,italic
-hi NonText guifg=#4a4a59 ctermfg=Gray
-hi SpecialKey guifg=#4a4a59 ctermfg=Gray
-hi SignColumn ctermbg=NONE cterm=NONE guibg=NONE gui=NONE
+" hi htmlStrike gui=strikethrough cterm=strikethrough guibg=Black ctermbg=Black
+hi Todo guibg=Black ctermbg=Black guifg=White ctermfg=White gui=bold,italic cterm=bold,italic
+" hi NonText guifg=#4a4a59 ctermfg=Gray
+" hi SpecialKey guifg=#4a4a59 ctermfg=Gray
+" hi SignColumn ctermbg=NONE cterm=NONE guibg=NONE gui=NONE
diff --git a/.gitconfig b/.gitconfig
@@ -6,27 +6,46 @@
   cb = checkout -B
   cm = checkout master
   cane = commit --amend --no-edit
-  pumr = pull upstream master --rebase
-  pomr = pull origin master --rebase
-  pum = pull upstream master
-  pom = pull origin master
+  ; pomr = pull origin master --rebase --stat
+  pom = pull origin master --stat
   histi = "--no-pager log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short --max-count=20"
+  histi40 = "--no-pager log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short --max-count=40"
   ; histi = "log --pretty=format:'%C(yellow)[%ad]%C(reset) %C(green)[%h]%C(reset) | %C(red)%s %C(bold red){{%an}}%C(reset) %C(blue)%d%C(reset)' --graph --date=short --max-count=20"
   hist = "--no-pager log --pretty=format:'%C(yellow)%h%C(reset) %C(green)%ad%C(reset) | %C(reset)%s %C(bold)[%an]%C(reset) %C(blue)%d%C(reset)' --graph --date=short --max-count=20"
+  hist40 = "--no-pager log --pretty=format:'%C(yellow)%h%C(reset) %C(green)%ad%C(reset) | %C(reset)%s %C(bold)[%an]%C(reset) %C(blue)%d%C(reset)' --graph --date=short --max-count=40"
+
 [user]
   name = Yohanes Bandung Bondowoso
   email = hi@ybbond.dev
   signingkey = 56DAADB152461C806792DBAB84773B93988681A0
+
 [filter "lfs"]
   clean = git-lfs clean -- %f
   smudge = git-lfs smudge -- %f
   process = git-lfs filter-process
   required = true
+
 [gpg]
   program = /usr/local/bin/gpg
+
 [core]
   excludesfile = /Users/yohanesbandung/.gitignore_global
+  pager = delta --light
+
 [commit]
   template = /Users/yohanesbandung/.stCommitMsg
+
 [fetch]
   prune = false
+
+[interactive]
+  diffFilter = delta --color-only --light
+
+[delta]
+  features = side-by-side line-numbers decorations
+  whitespace-error-style = 22 reverse
+
+[delta "decorations"]
+  commit-decoration-style = bold yellow box ul
+  file-style = bold yellow ul
+  file-decoration-style = none
diff --git a/.tmux-dark.conf b/.tmux-dark.conf
@@ -0,0 +1,126 @@
+unbind C-b
+set -g prefix C-space
+
+set -g default-terminal 'screen-256color' # replace this with your custom term-info name
+set -ga terminal-overrides ',*:Tc' # this is for 256 color
+set -ga terminal-overrides '*:Ss=\E[%p1%d q:Se=\E[ q' # this is for the cursor shape
+set -as terminal-overrides ',xterm*:sitm=\E[3m' # this is for italics https://thekennethlove.com/2017/10/my-quest-for-italic-comments-in-vim/
+
+bind -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "pbcopy"
+
+set-option -sg escape-time 10
+
+set -g focus-events on
+
+set-option -g renumber-windows on
+
+# reload config file (change file location to your the tmux.conf you want to use)
+bind r source-file ~/.tmux.conf
+
+# split panes using v and s
+# while change command to choose tree to a
+# also set default command for new session to use same pwd
+unbind '"'
+unbind %
+unbind s
+unbind c
+bind v split-window -hc '#{pane_current_path}'
+bind s split-window -vc '#{pane_current_path}'
+bind c new-window -c '#{pane_current_path}'
+bind a choose-tree -Zs
+
+# swap window with ctrl+shift+left/right
+bind-key M-Left { swap-window -t -1; previous-window }
+bind-key M-Right { swap-window -t +1; next-window }
+bind-key _ { swap-window -t -1; previous-window }
+bind-key + { swap-window -t +1; next-window }
+
+set -g mouse on
+
+# switch panes using Alt-arrow without prefix
+# bind -n ˙ select-pane -L
+# bind -n ¬ select-pane -R
+# bind -n ˚ select-pane -U
+# bind -n ∆ select-pane -D
+unbind l
+bind h select-pane -L
+bind l select-pane -R
+bind k select-pane -U
+bind j select-pane -D
+
+# [J]oin or [S]eparate current pane
+# bind -n M-J command-prompt -p "send pane to:"  "join-pane -t '%%'"
+# bind -n M-S break-pane
+bind J command-prompt -p "send pane to:"  "join-pane -t '%%'"
+bind S break-pane
+
+# reposition current active pane to be of
+# [H]orizontal or [V]ertical position relative to other pane
+bind V move-pane -t '.-'
+bind H move-pane -h -t '.-'
+
+# bind -n Ó resize-pane -L
+# bind -n Ò resize-pane -R
+# bind -n  resize-pane -U
+# bind -n Ô resize-pane -D
+bind C-h resize-pane -L
+bind C-l resize-pane -R
+bind C-k resize-pane -U
+bind C-j resize-pane -D
+
+#  modes
+setw -g clock-mode-colour colour5
+setw -g mode-style 'fg=colour1 bg=colour18 bold'
+
+# panes
+set -g pane-border-style 'fg=colour22 bg=colour0'
+set -g pane-active-border-style 'bg=colour0 fg=colour46'
+
+# statusbar
+set -g base-index 1
+setw -g pane-base-index 1
+set-option -g status-interval 1
+
+set -g status-position bottom
+set -g status-justify left
+
+# dark
+set -g status-style 'bg=colour236 fg=colour255 dim'
+
+# light
+# set -g status-style 'bg=#ebdbb2 fg=#282828 dim'
+
+set -g status-left ''
+
+# set -g status-right '#[fg=colour247,bg=colour239] %d/%m/%y #[fg=colour233,bg=colour245] %H:%M:%S '
+# set -g status-right '#[fg=colour250 bg=colour238] #{pane_current_path} '
+# dark
+set -g status-right '#[bg=#5a524c] #[bg=colour236] #(sh ~/.config/pane-border-format.sh --pane-current-path=#{pane_current_path} --pane-active=#{pane_active}) #[fg=#282828 bg=#a89984 bold] :D '
+
+# light
+# set -g status-right '#[bg=#ebdbb2] #[bg=#7c6f64] #(sh ~/.config/pane-border-format.sh --pane-current-path=#{pane_current_path} --pane-active=#{pane_active}) #[fg=#282828 bg=#a89984 bold] :D '
+
+set -g status-right-length 150
+set -g status-left-length 20
+
+# dark
+setw -g window-status-current-style 'fg=colour40 bg=#5a5254 bold'
+setw -g window-status-current-format ' #I#[fg=#d1bc99]:#[fg=#d1bc99]#W#[fg=#d6c19c]#F '
+
+# light
+# setw -g window-status-current-style 'fg=colour40 bg=#7c6f64 bold'
+# setw -g window-status-current-format ' #I#[fg=#fbf1c7]:#[fg=#fbf1c7]#W#[fg=#fbf1c7]#F '
+
+# dark
+setw -g window-status-style 'fg=colour28 bg=#32302f'
+setw -g window-status-format ' #I#[fg=#d4be98]:#[fg=#d4be98]#W#[fg=#cab591]#F '
+
+# light
+# setw -g window-status-style 'fg=colour40 bg=#32302f'
+# setw -g window-status-format ' #I#[fg=#d4be98]:#[fg=#d4be98]#W#[fg=#cab591]#F '
+
+set-option -g bell-action other
+setw -g window-status-bell-style 'fg=colour255 bg=colour1 bold'
+
+# messages
+set -g message-style 'fg=colour226 bg=colour235 bold'
diff --git a/.tmux-light.conf b/.tmux-light.conf
@@ -0,0 +1,126 @@
+unbind C-b
+set -g prefix C-space
+
+set -g default-terminal 'screen-256color' # replace this with your custom term-info name
+set -ga terminal-overrides ',*:Tc' # this is for 256 color
+set -ga terminal-overrides '*:Ss=\E[%p1%d q:Se=\E[ q' # this is for the cursor shape
+set -as terminal-overrides ',xterm*:sitm=\E[3m' # this is for italics https://thekennethlove.com/2017/10/my-quest-for-italic-comments-in-vim/
+
+bind -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "pbcopy"
+
+set-option -sg escape-time 10
+
+set -g focus-events on
+
+set-option -g renumber-windows on
+
+# reload config file (change file location to your the tmux.conf you want to use)
+bind r source-file ~/.tmux.conf
+
+# split panes using v and s
+# while change command to choose tree to a
+# also set default command for new session to use same pwd
+unbind '"'
+unbind %
+unbind s
+unbind c
+bind v split-window -hc '#{pane_current_path}'
+bind s split-window -vc '#{pane_current_path}'
+bind c new-window -c '#{pane_current_path}'
+bind a choose-tree -Zs
+
+# swap window with ctrl+shift+left/right
+bind-key M-Left { swap-window -t -1; previous-window }
+bind-key M-Right { swap-window -t +1; next-window }
+bind-key _ { swap-window -t -1; previous-window }
+bind-key + { swap-window -t +1; next-window }
+
+set -g mouse on
+
+# switch panes using Alt-arrow without prefix
+# bind -n ˙ select-pane -L
+# bind -n ¬ select-pane -R
+# bind -n ˚ select-pane -U
+# bind -n ∆ select-pane -D
+unbind l
+bind h select-pane -L
+bind l select-pane -R
+bind k select-pane -U
+bind j select-pane -D
+
+# [J]oin or [S]eparate current pane
+# bind -n M-J command-prompt -p "send pane to:"  "join-pane -t '%%'"
+# bind -n M-S break-pane
+bind J command-prompt -p "send pane to:"  "join-pane -t '%%'"
+bind S break-pane
+
+# reposition current active pane to be of
+# [H]orizontal or [V]ertical position relative to other pane
+bind V move-pane -t '.-'
+bind H move-pane -h -t '.-'
+
+# bind -n Ó resize-pane -L
+# bind -n Ò resize-pane -R
+# bind -n  resize-pane -U
+# bind -n Ô resize-pane -D
+bind C-h resize-pane -L
+bind C-l resize-pane -R
+bind C-k resize-pane -U
+bind C-j resize-pane -D
+
+#  modes
+setw -g clock-mode-colour colour5
+setw -g mode-style 'fg=colour1 bg=colour18 bold'
+
+# panes
+set -g pane-border-style 'fg=colour22 bg=colour0'
+set -g pane-active-border-style 'bg=colour0 fg=colour46'
+
+# statusbar
+set -g base-index 1
+setw -g pane-base-index 1
+set-option -g status-interval 1
+
+set -g status-position bottom
+set -g status-justify left
+
+# dark
+# set -g status-style 'bg=colour236 fg=colour255 dim'
+
+# light
+set -g status-style bg=default
+
+set -g status-left ''
+
+# set -g status-right '#[fg=colour247,bg=colour239] %d/%m/%y #[fg=colour233,bg=colour245] %H:%M:%S '
+# set -g status-right '#[fg=colour250 bg=colour238] #{pane_current_path} '
+# dark
+# set -g status-right '#[bg=#5a524c] #[bg=colour236] #(sh ~/.config/pane-border-format.sh --pane-current-path=#{pane_current_path} --pane-active=#{pane_active}) #[fg=#282828 bg=#a89984 bold] :D '
+
+# light
+set -g status-right '#[bg=#000000] #(sh ~/.config/pane-border-format.sh --pane-current-path=#{pane_current_path} --pane-active=#{pane_active}) #[fg=#000000 bg=#ffffff bold] :D '
+
+set -g status-right-length 150
+set -g status-left-length 20
+
+# dark
+# setw -g window-status-current-style 'fg=colour40 bg=#5a5254 bold'
+# setw -g window-status-current-format ' #I#[fg=#d1bc99]:#[fg=#d1bc99]#W#[fg=#d6c19c]#F '
+
+# light
+setw -g window-status-current-style 'fg=colour40 bg=#000000 bold'
+setw -g window-status-current-format ' #I#[fg=#ffffff]:#[fg=#ffffff]#W#[fg=#ffffff]#F '
+
+# dark
+# setw -g window-status-style 'fg=colour28 bg=#32302f'
+# setw -g window-status-format ' #I#[fg=#d4be98]:#[fg=#d4be98]#W#[fg=#cab591]#F '
+
+# light
+setw -g window-status-style 'fg=colour40 bg=#efefef'
+setw -g window-status-format ' #I#[fg=#000000]:#[fg=#000000]#W#[fg=#000000]#F '
+
+set-option -g bell-action other
+setw -g window-status-bell-style 'fg=colour255 bg=colour1 bold'
+
+# messages
+set -g message-style 'fg=colour226 bg=colour235 bold'
diff --git a/.tmux.conf b/.tmux.conf
@@ -1,105 +0,0 @@
-unbind C-b
-set -g prefix C-space
-
-set -g default-terminal 'tmux-256color' # replace this with your custom term-info name
-set -ga terminal-overrides ',*:Tc' # this is for 256 color
-set -ga terminal-overrides '*:Ss=\E[%p1%d q:Se=\E[ q' # this is for the cursor shape
-set -as terminal-overrides ',xterm*:sitm=\E[3m' # this is for italics https://thekennethlove.com/2017/10/my-quest-for-italic-comments-in-vim/
-
-bind -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "pbcopy"
-
-set-option -sg escape-time 10
-
-set -g focus-events on
-
-set-option -g renumber-windows on
-
-# reload config file (change file location to your the tmux.conf you want to use)
-bind r source-file ~/.tmux.conf
-
-# split panes using v and s
-# while change command to choose tree to a
-# also set default command for new session to use same pwd
-unbind '"'
-unbind %
-unbind s
-unbind c
-bind v split-window -hc '#{pane_current_path}'
-bind s split-window -vc '#{pane_current_path}'
-bind c new-window -c '#{pane_current_path}'
-bind a choose-tree -Zs
-
-# swap window with ctrl+shift+left/right
-bind-key M-Left { swap-window -t -1; previous-window }
-bind-key M-Right { swap-window -t +1; next-window }
-bind-key _ { swap-window -t -1; previous-window }
-bind-key + { swap-window -t +1; next-window }
-
-set -g mouse on
-
-# switch panes using Alt-arrow without prefix
-# bind -n ˙ select-pane -L
-# bind -n ¬ select-pane -R
-# bind -n ˚ select-pane -U
-# bind -n ∆ select-pane -D
-unbind l
-bind h select-pane -L
-bind l select-pane -R
-bind k select-pane -U
-bind j select-pane -D
-
-# [J]oin or [S]eparate current pane
-# bind -n M-J command-prompt -p "send pane to:"  "join-pane -t '%%'"
-# bind -n M-S break-pane
-bind J command-prompt -p "send pane to:"  "join-pane -t '%%'"
-bind S break-pane
-
-# reposition current active pane to be of
-# [H]orizontal or [V]ertical position relative to other pane
-bind V move-pane -t '.-'
-bind H move-pane -h -t '.-'
-
-# bind -n Ó resize-pane -L
-# bind -n Ò resize-pane -R
-# bind -n  resize-pane -U
-# bind -n Ô resize-pane -D
-bind C-h resize-pane -L
-bind C-l resize-pane -R
-bind C-k resize-pane -U
-bind C-j resize-pane -D
-
-#  modes
-setw -g clock-mode-colour colour5
-setw -g mode-style 'fg=colour1 bg=colour18 bold'
-
-# panes
-set -g pane-border-style 'fg=colour22 bg=colour0'
-set -g pane-active-border-style 'bg=colour0 fg=colour46'
-
-# statusbar
-set -g base-index 1
-setw -g pane-base-index 1
-set-option -g status-interval 1
-
-set -g status-position bottom
-set -g status-justify left
-# set -g status-style 'bg=colour236 fg=colour255 dim'
-set -g status-style 'bg=#32302f fg=#282828 dim'
-set -g status-left ''
-# set -g status-right '#[fg=colour247,bg=colour239] %d/%m/%y #[fg=colour233,bg=colour245] %H:%M:%S '
-# set -g status-right '#[fg=colour250 bg=colour238] #{pane_current_path} '
-set -g status-right '#[bg=#5a524c] #[bg=colour236] #(sh ~/.config/pane-border-format.sh --pane-current-path=#{pane_current_path} --pane-active=#{pane_active}) #[fg=#282828 bg=#a89984 bold] :D '
-set -g status-right-length 150
-set -g status-left-length 20
-
-setw -g window-status-current-style 'fg=colour40 bg=#5a5254 bold'
-setw -g window-status-current-format ' #I#[fg=#d1bc99]:#[fg=#d1bc99]#W#[fg=#d6c19c]#F '
-
-setw -g window-status-style 'fg=colour28 bg=#32302f'
-setw -g window-status-format ' #I#[fg=#d4be98]:#[fg=#d4be98]#W#[fg=#cab591]#F '
-
-set-option -g bell-action other
-setw -g window-status-bell-style 'fg=colour255 bg=colour1 bold'
-
-# messages
-set -g message-style 'fg=colour226 bg=colour235 bold'
diff --git a/.vimrc b/.vimrc
@@ -2,6 +2,7 @@ syntax enable
 syntax on
 filetype plugin indent on
 
+set background=dark
 set number
 set relativenumber
 
@@ -10,6 +11,8 @@ set softtabstop=2
 set shiftwidth=2
 set expandtab
 
+set laststatus=2
+
 set ruler
 
 set incsearch
@@ -19,7 +22,12 @@ set smartcase
 set hlsearch
 
 nnoremap <LEADER><SPACE> :nohlsearch<CR>
+nnoremap <LEADER>% :source %<CR>
 inoremap jk <ESC>
+nnoremap j gj
+nnoremap k gk
+vnoremap j gj
+vnoremap k gk
 
 if !isdirectory($HOME."/.vim")
   call mkdir($HOME."/.vim", "", 0770)
diff --git a/.zshrc b/.zshrc
@@ -5,7 +5,7 @@
 export EDITOR=nvim
 export SHELL=zsh
 export LANG=en_US.UTF-8
-export TERM=xterm-256color
+export TERM=screen-256color
 
 export PATH=$HOME/bin:/usr/local/bin:$PATH
 export PATH="/usr/local/sbin:$PATH"
@@ -25,6 +25,8 @@ export PATH="$HOME/.emacs.d/bin:$PATH"
 # export INITVIM=$HOME/.config/nvim/init.vim
 # export PATH=$HOME/bin:$PATH
 
+export BAT_THEME="gruvbox-light"
+
 export ANDROID_HOME=${HOME}/Library/Android/sdk
 export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home
 export PATH=${PATH}:${ANDROID_HOME}/emulator
@@ -151,6 +153,7 @@ alias lg="lazygit"
 alias ld="lazydocker"
 alias r="ranger"
 alias pixel3a="~/Library/Android/sdk/emulator/emulator -avd Pixel_3a_API_29 -netdelay none -netspeed full"
+alias pixelxl="~/Library/Android/sdk/emulator/emulator -avd Pixel_XL_API_30 -netdelay none -netspeed full"
 
 alias cdb="cd .."
 alias konak="kantal 10 yarn add"
@@ -158,7 +161,7 @@ alias konak="kantal 10 yarn add"
 # better cli
 alias ls='exa'
 alias top='htop'
-alias cat='bat'
+alias cat='alias cat="bat --theme=\$(defaults read -globalDomain AppleInterfaceStyle &> /dev/null && echo default || echo GitHub)"'
 alias find='fd'
 alias du='ncdu --color dark -rr'
 
@@ -205,6 +208,7 @@ SPACESHIP_TIME_SHOW=true
 SPACESHIP_TIME_PREFIX='['
 SPACESHIP_TIME_SUFFIX=']'
 SPACESHIP_VI_MODE_PREFIX=''
+SPACESHIP_VI_MODE_COLOR='gray'
 
 ########################################################################
 #                     ZINIT
@@ -236,6 +240,7 @@ zinit light-mode for \
 
 zplugin light zsh-users/zsh-autosuggestions
   bindkey -M viins '^F' autosuggest-accept
+  ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#d6d6d6"
 
 zplugin light zsh-users/zsh-history-substring-search
   bindkey -M viins '^P' history-substring-search-up
@@ -290,9 +295,20 @@ precmd () {
 #     echo -ne '\e[5 q'
 #   fi
 # }
-zle -N zle-keymap-select
+# zle -N zle-keymap-select
 # _fix_cursor() {
 #    echo -ne '\e[5 q'
 # }
 # precmd_functions+=(_fix_cursor)
+
+
+#   * To start using RVM you need to run `source /Users/yohanesbandung/.rvm/scripts/rvm`
+#     in all your open shell windows, in rare cases you need to reopen all shell windows.
+#   * To start using rails you need to run `rails new <project_dir>`.
+
+
+
 alias config=$CONFTREE
+
+# Add RVM to PATH for scripting. Make sure this is the last PATH variable change.
+export PATH="$PATH:$HOME/.rvm/bin"