Exercism stuff. Bunch of enhancements to vterm and some to dired
This commit is contained in:
parent
ea7f456334
commit
598d1696a6
54
.config/fish/completions/exercism.fish
Normal file
54
.config/fish/completions/exercism.fish
Normal file
@ -0,0 +1,54 @@
|
||||
# Configure
|
||||
complete -f -c exercism -n "__fish_use_subcommand" -a "configure" -d "Writes config values to a JSON file."
|
||||
complete -f -c exercism -n "__fish_seen_subcommand_from configure" -s t -l token -d "Set token"
|
||||
complete -f -c exercism -n "__fish_seen_subcommand_from configure" -s w -l workspace -d "Set workspace"
|
||||
complete -f -c exercism -n "__fish_seen_subcommand_from configure" -s a -l api -d "set API base url"
|
||||
complete -f -c exercism -n "__fish_seen_subcommand_from configure" -s s -l show -d "show settings"
|
||||
|
||||
# Download
|
||||
complete -f -c exercism -n "__fish_use_subcommand" -a "download" -d "Downloads and saves a specified submission into the local system"
|
||||
complete -f -c exercism -n "__fish_seen_subcommand_from download" -s e -l exercise -d "the exercise slug"
|
||||
complete -f -c exercism -n "__fish_seen_subcommand_from download" -s h -l help -d "help for download"
|
||||
complete -f -c exercism -n "__fish_seen_subcommand_from download" -s T -l team -d "the team slug"
|
||||
complete -f -c exercism -n "__fish_seen_subcommand_from download" -s t -l track -d "the track ID"
|
||||
complete -f -c exercism -n "__fish_seen_subcommand_from download" -s u -l uuid -d "the solution UUID"
|
||||
|
||||
# Help
|
||||
complete -f -c exercism -n "__fish_use_subcommand" -a "help" -d "Shows a list of commands or help for one command"
|
||||
complete -f -c exercism -n "__fish_seen_subcommand_from help" -a "configure download help open submit troubleshoot upgrade version workspace"
|
||||
|
||||
# Open
|
||||
complete -f -c exercism -n "__fish_use_subcommand" -a "open" -d "Opens a browser to exercism.io for the specified submission."
|
||||
complete -f -c exercism -n "__fish_seen_subcommand_from open" -s h -l help -d "help for open"
|
||||
|
||||
# Submit
|
||||
complete -f -c exercism -n "__fish_use_subcommand" -a "submit" -d "Submits a new iteration to a problem on exercism.io."
|
||||
complete -f -c exercism -n "__fish_seen_subcommand_from submit" -s h -l help -d "help for submit"
|
||||
|
||||
# Troubleshoot
|
||||
complete -f -c exercism -n "__fish_use_subcommand" -a "troubleshoot" -d "Outputs useful debug information."
|
||||
complete -f -c exercism -n "__fish_seen_subcommand_from troubleshoot" -s f -l full-api-key -d "display full API key (censored by default)"
|
||||
complete -f -c exercism -n "__fish_seen_subcommand_from troubleshoot" -s h -l help -d "help for troubleshoot"
|
||||
|
||||
# Upgrade
|
||||
complete -f -c exercism -n "__fish_use_subcommand" -a "upgrade" -d "Upgrades to the latest available version."
|
||||
complete -f -c exercism -n "__fish_seen_subcommand_from help" -s h -l help -d "help for help"
|
||||
|
||||
# Version
|
||||
complete -f -c exercism -n "__fish_use_subcommand" -a "version" -d "Outputs version information."
|
||||
complete -f -c exercism -n "__fish_seen_subcommand_from version" -s l -l latest -d "check latest available version"
|
||||
complete -f -c exercism -n "__fish_seen_subcommand_from version" -s h -l help -d "help for version"
|
||||
|
||||
# Workspace
|
||||
complete -f -c exercism -n "__fish_use_subcommand" -a "workspace" -d "Outputs the root directory for Exercism exercises."
|
||||
complete -f -c exercism -n "__fish_seen_subcommand_from workspace" -s h -l help -d "help for workspace"
|
||||
|
||||
# Options
|
||||
complete -f -c exercism -s h -l help -d "show help"
|
||||
complete -f -c exercism -l timeout -a "10" -d "10 seconds"
|
||||
complete -f -c exercism -l timeout -a "30" -d "30 seconds"
|
||||
complete -f -c exercism -l timeout -a "60" -d "1 minute"
|
||||
complete -f -c exercism -l timeout -a "300" -d "5 minutes"
|
||||
complete -f -c exercism -l timeout -a "600" -d "10 minutes"
|
||||
complete -f -c exercism -l timeout -a "" -d "override default HTTP timeout"
|
||||
complete -f -c exercism -s v -l verbose -d "turn on verbose logging"
|
@ -17,8 +17,23 @@ if [ (uname -r | sed -n 's/.*\( *Microsoft *\).*/\1/ip') ]
|
||||
alias xdg-open wsl-open
|
||||
end
|
||||
|
||||
set -gx forgit_reset_head grf
|
||||
set -gx forgit_diff gdi
|
||||
function vterm_printf;
|
||||
printf "\e]%s\e\\" "$argv"
|
||||
end
|
||||
|
||||
function vterm_prompt_end;
|
||||
vterm_printf '51;A'(whoami)'@'(hostname)':'(pwd)
|
||||
end
|
||||
|
||||
functions --copy fish_prompt vterm_old_fish_prompt
|
||||
|
||||
function fish_prompt --description 'Write out the prompt; do not replace this. Instead, put this at end of your file.'
|
||||
# Remove the trailing newline from the original prompt. This is done
|
||||
# using the string builtin from fish, but to make sure any escape codes
|
||||
# are correctly interpreted, use %b for printf.
|
||||
printf "%b" (string join "\n" (vterm_old_fish_prompt))
|
||||
vterm_prompt_end
|
||||
end
|
||||
|
||||
abbr -a -g gs "git status --untracked-files"
|
||||
abbr -a -g gl "git lop -10"
|
||||
|
3
.config/fish/functions/exer.fish
Normal file
3
.config/fish/functions/exer.fish
Normal file
@ -0,0 +1,3 @@
|
||||
function exer --wraps='exercism --token=4d706f28-1697-432c-beec-565a707b51da' --description 'alias exer exercism --token=4d706f28-1697-432c-beec-565a707b51da'
|
||||
exercism --token=4d706f28-1697-432c-beec-565a707b51da $argv;
|
||||
end
|
3
.config/fish/functions/exercism.fish
Normal file
3
.config/fish/functions/exercism.fish
Normal file
@ -0,0 +1,3 @@
|
||||
function exercism --description 'alias exercism exercism --token=4d706f28-1697-432c-beec-565a707b51da'
|
||||
command exercism --token=4d706f28-1697-432c-beec-565a707b51da $argv;
|
||||
end
|
6
.config/fish/functions/fish_title.fish
Normal file
6
.config/fish/functions/fish_title.fish
Normal file
@ -0,0 +1,6 @@
|
||||
function fish_title
|
||||
hostname
|
||||
echo ":"
|
||||
set -g fish_prompt_pwd_dir_length 0
|
||||
echo -n (prompt_pwd)
|
||||
end
|
104
.emacs.d/init.el
104
.emacs.d/init.el
@ -19,6 +19,10 @@
|
||||
(define-key key-translation-map (kbd "ESC") (kbd "C-g"))
|
||||
(auto-fill-mode)
|
||||
(setq fill-column 80)
|
||||
(put 'narrow-to-region 'disabled nil)
|
||||
|
||||
(require 'server)
|
||||
(if (not (server-running-p)) (server-start))
|
||||
|
||||
;; Visuals
|
||||
(scroll-bar-mode -1)
|
||||
@ -36,7 +40,6 @@
|
||||
(add-hook mode (lambda () (display-line-numbers-mode 0))))
|
||||
|
||||
(make-variable-buffer-local 'global-hl-line-mode)
|
||||
(add-hook 'vterm-mode-hook (lambda () (setq global-hl-line-mode nil)))
|
||||
|
||||
(setq scroll-margin 0
|
||||
scroll-conservatively 100000
|
||||
@ -48,8 +51,10 @@
|
||||
(set-face-attribute 'default nil :font "FiraCode Nerd Font" :height 120)
|
||||
|
||||
;; Text Settings
|
||||
(setq tab-width 4)
|
||||
(setq-default c-basic-offset 4) ;; This is annoying
|
||||
(setq-default indent-tabs-mode nil)
|
||||
(setq-default tab-width 4)
|
||||
(setq indent-line-function 'insert-tab)
|
||||
(set-default 'truncate-lines t)
|
||||
(set-default 'truncate-partial-width-windows nil)
|
||||
|
||||
@ -119,7 +124,7 @@ all of the evil keybindings in buffers like magit, without compromises."
|
||||
'(flycheck-color-mode-line-face-to-color 'mode-line-buffer-id)
|
||||
'(frame-background-mode 'dark)
|
||||
'(package-selected-packages
|
||||
'(magit ranger multi-vterm evil-collection smartparens vterm all-the-icons-dired all-the-icons org-bullets sudoku select-themes fsharp-mode eglot-fsharp fish-mode find-file-in-project helpful ahk-mode rainbow-delimiters csharp-mode doom-themes marginalia eglot selectrum-prescient prescient selectrum avy evil-commentary evil-embrace evil-snipe evil-surround undo-tree which-key dashboard))
|
||||
'(mini-frame magit ranger multi-vterm evil-collection smartparens vterm all-the-icons-dired all-the-icons org-bullets sudoku select-themes fsharp-mode eglot-fsharp fish-mode find-file-in-project helpful ahk-mode rainbow-delimiters csharp-mode doom-themes marginalia eglot selectrum-prescient prescient selectrum avy evil-commentary evil-embrace evil-snipe evil-surround undo-tree which-key dashboard))
|
||||
'(window-divider-mode nil))
|
||||
(custom-set-faces
|
||||
;; custom-set-faces was added by Custom.
|
||||
@ -161,17 +166,32 @@ all of the evil keybindings in buffers like magit, without compromises."
|
||||
"In Dired, visit this file or directory in another window."
|
||||
(interactive)
|
||||
(find-file-other-window (dired-get-file-for-visit)))
|
||||
|
||||
(defun joe/dired-open-file ()
|
||||
"In dired, open the file named on this line."
|
||||
(interactive)
|
||||
(let* ((file (dired-get-filename nil t)))
|
||||
(call-process "xdg-open" nil 0 nil file)))
|
||||
|
||||
(defun joe/bookmark-set-and-save ()
|
||||
"In dired, open the file named on this line."
|
||||
(interactive)
|
||||
(bookmark-set)
|
||||
(bookmark-save))
|
||||
|
||||
|
||||
(add-hook 'dired-mode-hook
|
||||
(lambda ()
|
||||
;; (evil-define-key 'normal dired-mode-map (kbd "j") 'peep-dired-next-file)
|
||||
;; (evil-define-key 'normal dired-mode-map (kbd "k") 'peep-dired-prev-file)
|
||||
;; (evil-define-key 'normal dired-mode-map (kbd "-")
|
||||
;; (lambda () (interactive) (find-alternate-file "..")))
|
||||
;; (lambda () (interactive) (find-alternate-file "..")))
|
||||
(rename-buffer (concat "Dired - " dired-directory))
|
||||
(all-the-icons-dired-mode)
|
||||
(evil-define-key 'normal dired-mode-map (kbd "o")
|
||||
(lambda () (interactive) (joe/dired-open-file)))
|
||||
(evil-define-key 'normal dired-mode-map (kbd "s")
|
||||
(lambda () (interactive) (dired-sort-toggle-or-edit)))
|
||||
(evil-define-key 'normal dired-mode-map (kbd "<return>")
|
||||
(lambda () (interactive) (dired-find-alternate-file)))))
|
||||
|
||||
|
||||
(evil-define-key 'normal 'global (kbd "-") 'dired-jump)
|
||||
;; (evil-define-key 'normal 'global (kbd "-") 'ranger)
|
||||
|
||||
@ -189,42 +209,55 @@ all of the evil keybindings in buffers like magit, without compromises."
|
||||
"<leader>g" '("Git")
|
||||
"<leader>t" '("Tabs")
|
||||
"<leader>p" '("Packages")
|
||||
"<leader>s" '("Shell (vterm)")
|
||||
"<leader>h" '("Help"))
|
||||
|
||||
(evil-set-leader 'normal (kbd "SPC"))
|
||||
|
||||
;; To disable a keybinding just bind it to nil
|
||||
(evil-define-key 'normal 'global (kbd "<leader>w") 'save-buffer)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>q") 'kill-buffer-and-window)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>h") 'help-command)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>k") 'kill-this-buffer)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>hf") 'helpful-callable)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>hv") 'helpful-variable)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>hk") 'helpful-key)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>ho") 'helpful-symbol)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>hg") 'helpful-at-point)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>ff") 'bookmark-jump)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>fb") 'bookmark-jump)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>fr") 'joe/recentf-open-files)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>ff") 'ffip)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>fi") 'joe/edit-init)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>bl") 'mode-line-other-buffer)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>bb") 'switch-to-buffer)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>k") 'kill-this-buffer)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>bi") 'ibuffer)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>bm") 'joe/toggle-buffer-mode)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>br") 'joe/revert-buffer-no-confirm)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>gg") 'magit-status)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>gr") 'joe/revert-buffer-no-confirm )
|
||||
(evil-define-key 'normal 'global (kbd "<leader>pi") 'package-install)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>pd") 'package-delete)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>pf") 'package-refresh-contents)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>pl") 'package-list-packages)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>pr") 'package-reinstall)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>ss") 'multi-vterm)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>sp") 'multi-vterm-prev)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>sn") 'multi-vterm-next)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>sP") 'multi-vterm-project)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>st") 'multi-vterm-dedicated-toggle)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>sf") 'multi-vterm-dedicated-select)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>Ba") 'joe/bookmark-set-and-save)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>Bd") 'bookmark-delete)
|
||||
|
||||
(evil-define-key 'normal 'global (kbd "C-h") 'evil-window-left)
|
||||
(evil-define-key 'normal 'global (kbd "C-j") 'evil-window-down)
|
||||
(evil-define-key 'normal 'global (kbd "C-k") 'evil-window-up)
|
||||
(evil-define-key 'normal 'global (kbd "C-l") 'evil-window-right)
|
||||
;; (evil-define-key 'normal 'global (kbd "M-h") 'tab-line-switch-to-prev-tab)
|
||||
;; (evil-define-key 'normal 'global (kbd "M-l") 'tab-line-switch-to-next-tab)
|
||||
(evil-define-key 'normal 'global (kbd "M-h") 'tab-previous)
|
||||
(evil-define-key 'normal 'global (kbd "M-l") 'tab-next)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>tn") 'tab-new)
|
||||
(evil-define-key 'normal 'global (kbd "<leader>tc") 'tab-close)
|
||||
;; (evil-define-key 'normal 'global (kbd "M-h") 'tab-line-switch-to-prev-tab)
|
||||
;; (evil-define-key 'normal 'global (kbd "M-l") 'tab-line-switch-to-next-tab)
|
||||
|
||||
;; TODO figure out how to create these kinds of aliases
|
||||
;; (evil-define-key 'normal 'global (kbd "<leader>gg") 'magit-status)
|
||||
@ -315,33 +348,42 @@ all of the evil keybindings in buffers like magit, without compromises."
|
||||
(let ((files (mapcar 'abbreviate-file-name recentf-list)))
|
||||
(find-file (completing-read "Find recent file: " files nil t))))
|
||||
|
||||
(evil-define-key 'normal 'global (kbd "<leader>fr") 'joe/recentf-open-files)
|
||||
|
||||
(require 'smartparens)
|
||||
(smartparens-global-mode +1)
|
||||
(show-paren-mode +1)
|
||||
|
||||
(require 'vterm)
|
||||
(setq vterm-shell "/bin/fish")
|
||||
(setq vterm-timer-delay 0.01)
|
||||
(setq vterm-buffer-name-string "VTerm - %s")
|
||||
(setq vterm-max-scrollback 100000)
|
||||
|
||||
(add-hook 'vterm-mode-hook
|
||||
(lambda () (setq global-hl-line-mode nil))
|
||||
(evil-define-key 'normal vterm-mode-map (kbd "(") 'vterm-previous-prompt)
|
||||
(evil-define-key 'normal vterm-mode-map (kbd ")") 'vterm-next-prompt))
|
||||
|
||||
(require 'find-file-in-project)
|
||||
(setq ffip-use-rust-fd 't)
|
||||
|
||||
;;
|
||||
;; Mini-frame doesn't seem to be working on Wayland,
|
||||
;; a window just pops up over emacs, it's annoying
|
||||
;;
|
||||
|
||||
;; (require 'mini-frame)
|
||||
;; (setq mini-frame-show-parameters
|
||||
;; '((top . 0.3) (width . 0.7)
|
||||
;; (left . 0.5) (left-fringe . 10) (right-fringe . 10) ))
|
||||
;; (setq mini-frame-color-shift-step 25)
|
||||
;; (setq mini-frame-color-shift-step 40)
|
||||
|
||||
;; (setq mini-frame-internal-border-color "dark")
|
||||
;; (mini-frame-mode)
|
||||
;; (setq x-gtk-resize-child-frames 'resize-mode)
|
||||
|
||||
(require 'vterm)
|
||||
(setq vterm-shell "/bin/fish")
|
||||
(setq vterm-timer-delay 0.01)
|
||||
|
||||
(require 'eglot)
|
||||
(require 'eglot-fsharp)
|
||||
|
||||
;; (require 'ranger)
|
||||
;; (setq ranger-show-literal nil)
|
||||
|
||||
;; Workaround for the initial candidates of mini frame not being shown
|
||||
;; https://github.com/raxod502/selectrum/issues/169
|
||||
;; ;; Workaround for the initial candidates of mini frame not being shown
|
||||
;; ;; https://github.com/raxod502/selectrum/issues/169
|
||||
;; (define-advice fit-frame-to-buffer (:around (f &rest args) dont-skip-ws-for-mini-frame)
|
||||
;; (cl-letf* ((orig (symbol-function #'window-text-pixel-size))
|
||||
;; ((symbol-function #'window-text-pixel-size)
|
||||
@ -356,11 +398,11 @@ all of the evil keybindings in buffers like magit, without compromises."
|
||||
;; args)))))
|
||||
;; (apply f args)))
|
||||
|
||||
(require 'find-file-in-project)
|
||||
(setq ffip-use-rust-fd 't)
|
||||
;; (require 'eglot)
|
||||
;; (require 'eglot-fsharp)
|
||||
|
||||
(require 'server)
|
||||
(if (not (server-running-p)) (server-start))
|
||||
;; (require 'ranger)
|
||||
;; (setq ranger-show-literal nil)
|
||||
|
||||
;; TODO: Packages to check out
|
||||
;; expand-region
|
||||
|
Loading…
x
Reference in New Issue
Block a user