Change-Id: I6c6847fac56f0a9a1a2209792e00a3aec5e672b9 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10809 Autosubmit: aspen <root@gws.fyi> Reviewed-by: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI Reviewed-by: lukegb <lukegb@tvl.fyi>
		
			
				
	
	
		
			149 lines
		
	
	
	
		
			5 KiB
		
	
	
	
		
			EmacsLisp
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
	
		
			5 KiB
		
	
	
	
		
			EmacsLisp
		
	
	
	
	
	
;; -*- lexical-binding: t; -*-
 | 
						|
 | 
						|
(defalias 'ex! 'evil-ex-define-cmd)
 | 
						|
 | 
						|
(defun delete-file-and-buffer ()
 | 
						|
  "Kill the current buffer and deletes the file it is visiting."
 | 
						|
  (interactive)
 | 
						|
  (let ((filename (buffer-file-name)))
 | 
						|
    (when filename
 | 
						|
      (if (vc-backend filename)
 | 
						|
          (vc-delete-file filename)
 | 
						|
        (progn
 | 
						|
          (delete-file filename)
 | 
						|
          (message "Deleted file %s" filename)
 | 
						|
          (kill-buffer))))))
 | 
						|
 | 
						|
;;; Commands defined elsewhere
 | 
						|
;;(ex! "al[ign]"      #'+evil:align)
 | 
						|
;;(ex! "g[lobal]"     #'+evil:global)
 | 
						|
 | 
						|
;;; Custom commands
 | 
						|
;; Editing
 | 
						|
(ex! "@"            #'+evil:macro-on-all-lines)   ; TODO Test me
 | 
						|
(ex! "al[ign]"      #'+evil:align)
 | 
						|
(ex! "enhtml"       #'+web:encode-html-entities)
 | 
						|
(ex! "dehtml"       #'+web:decode-html-entities)
 | 
						|
(ex! "mc"           #'+evil:mc)
 | 
						|
(ex! "iedit"        #'evil-multiedit-ex-match)
 | 
						|
(ex! "na[rrow]"     #'+evil:narrow-buffer)
 | 
						|
(ex! "retab"        #'+evil:retab)
 | 
						|
 | 
						|
(ex! "glog" #'magit-log-buffer-file)
 | 
						|
 | 
						|
;; External resources
 | 
						|
;; TODO (ex! "db"          #'doom:db)
 | 
						|
;; TODO (ex! "dbu[se]"     #'doom:db-select)
 | 
						|
;; TODO (ex! "go[ogle]"    #'doom:google-search)
 | 
						|
(ex! "lo[okup]"    #'+jump:online)
 | 
						|
(ex! "dash"        #'+lookup:dash)
 | 
						|
(ex! "dd"          #'+lookup:devdocs)
 | 
						|
(ex! "http"        #'httpd-start)            ; start http server
 | 
						|
(ex! "repl"        #'+eval:repl)             ; invoke or send to repl
 | 
						|
;; TODO (ex! "rx"          'doom:regex)             ; open re-builder
 | 
						|
(ex! "sh[ell]"     #'+eshell:run)
 | 
						|
(ex! "t[mux]"      #'+tmux:run)              ; send to tmux
 | 
						|
(ex! "tcd"         #'+tmux:cd-here)          ; cd to default-directory in tmux
 | 
						|
(ex! "x"           #'doom/open-project-scratch-buffer)
 | 
						|
 | 
						|
;; GIT
 | 
						|
(ex! "gist"        #'+gist:send)  ; send current buffer/region to gist
 | 
						|
(ex! "gistl"       #'+gist:list)  ; list gists by user
 | 
						|
(ex! "gbrowse"     #'+vcs/git-browse)        ; show file in github/gitlab
 | 
						|
(ex! "gissues"     #'+vcs/git-browse-issues) ; show github issues
 | 
						|
(ex! "git"         #'magit-status)           ; open magit status window
 | 
						|
(ex! "gstage"      #'magit-stage)
 | 
						|
(ex! "gunstage"    #'magit-unstage)
 | 
						|
(ex! "gblame"      #'magit-blame)
 | 
						|
(ex! "grevert"     #'git-gutter:revert-hunk)
 | 
						|
 | 
						|
;; Dealing with buffers
 | 
						|
(ex! "clean[up]"   #'doom/cleanup-buffers)
 | 
						|
(ex! "k[ill]"      #'doom/kill-this-buffer)
 | 
						|
(ex! "k[ill]all"   #'+hlissner:kill-all-buffers)
 | 
						|
(ex! "k[ill]m"     #'+hlissner:kill-matching-buffers)
 | 
						|
(ex! "k[ill]o"     #'doom/kill-other-buffers)
 | 
						|
(ex! "l[ast]"      #'doom/popup-restore)
 | 
						|
(ex! "m[sg]"       #'view-echo-area-messages)
 | 
						|
(ex! "pop[up]"     #'doom/popup-this-buffer)
 | 
						|
 | 
						|
;; Project navigation
 | 
						|
(ex! "a"           #'projectile-toggle-between-implementation-and-test)
 | 
						|
(ex! "as"          #'projectile-find-implementation-or-test-other-window)
 | 
						|
(ex! "av"          #'projectile-find-implementation-or-test-other-window)
 | 
						|
(ex! "cd"          #'+hlissner:cd)
 | 
						|
(cond ((featurep! :completion ivy)
 | 
						|
       (ex! "ag"       #'+ivy:ag)
 | 
						|
       (ex! "agc[wd]"  #'+ivy:ag-cwd)
 | 
						|
       (ex! "rg"       #'+ivy:rg)
 | 
						|
       (ex! "rgc[wd]"  #'+ivy:rg-cwd)
 | 
						|
       (ex! "sw[iper]" #'+ivy:swiper)
 | 
						|
       (ex! "todo"     #'+ivy:todo))
 | 
						|
      ((featurep! :completion helm)
 | 
						|
       (ex! "ag"       #'+helm:ag)
 | 
						|
       (ex! "agc[wd]"  #'+helm:ag-cwd)
 | 
						|
       (ex! "rg"       #'+helm:rg)
 | 
						|
       (ex! "rgc[wd]"  #'+helm:rg-cwd)
 | 
						|
       (ex! "sw[oop]"  #'+helm:swoop)
 | 
						|
       (ex! "todo"     #'+helm:todo)))
 | 
						|
 | 
						|
;; Project tools
 | 
						|
(ex! "build"       #'+eval/build)
 | 
						|
(ex! "debug"       #'+debug/run)
 | 
						|
(ex! "er[rors]"    #'flycheck-list-errors)
 | 
						|
 | 
						|
;; File operations
 | 
						|
(ex! "cp"          #'+evil:copy-this-file)
 | 
						|
(ex! "mv"          #'+evil:move-this-file)
 | 
						|
(ex! "rm"          #'+evil:delete-this-file)
 | 
						|
 | 
						|
;; Sessions/tabs
 | 
						|
(ex! "sclear"      #'+workspace/kill-session)
 | 
						|
(ex! "sl[oad]"     #'+workspace:load-session)
 | 
						|
(ex! "ss[ave]"     #'+workspace:save-session)
 | 
						|
(ex! "tabcl[ose]"  #'+workspace:delete)
 | 
						|
(ex! "tabclear"    #'doom/kill-all-buffers)
 | 
						|
(ex! "tabl[ast]"   #'+workspace/switch-to-last)
 | 
						|
(ex! "tabload"     #'+workspace:load)
 | 
						|
(ex! "tabn[ew]"    #'+workspace:new)
 | 
						|
(ex! "tabn[ext]"   #'+workspace:switch-next)
 | 
						|
(ex! "tabp[rev]"   #'+workspace:switch-previous)
 | 
						|
(ex! "tabr[ename]" #'+workspace:rename)
 | 
						|
(ex! "tabs"        #'+workspace/display)
 | 
						|
(ex! "tabsave"     #'+workspace:save)
 | 
						|
 | 
						|
(ex! "scr[atch]" #'cider-scratch)
 | 
						|
 | 
						|
;; Org-mode
 | 
						|
(ex! "cap"         #'+org-capture/dwim)
 | 
						|
 | 
						|
(evil-define-command evil-alembic-revision (args)
 | 
						|
  (interactive "<a>")
 | 
						|
  (apply
 | 
						|
   #'generate-alembic-migration
 | 
						|
   (read-string "Message: ")
 | 
						|
   (s-split "\\s+" (or args ""))))
 | 
						|
(ex! "arev[ision]" #'evil-alembic-revision)
 | 
						|
 | 
						|
(evil-define-command evil-alembic-upgrade (&optional revision)
 | 
						|
  (interactive "<a>")
 | 
						|
  (alembic-upgrade (or revision "head")))
 | 
						|
 | 
						|
(ex! "aup[grade]" #'evil-alembic-upgrade)
 | 
						|
 | 
						|
(evil-define-command evil-alembic-downgrade (&optional revision)
 | 
						|
  (interactive "<a>")
 | 
						|
  (alembic-downgrade revision))
 | 
						|
 | 
						|
(ex! "adown[grade]" #'evil-alembic-downgrade)
 | 
						|
 | 
						|
(evil-define-command evil-alembic (args)
 | 
						|
  (interactive "<a>")
 | 
						|
  (run-alembic args))
 | 
						|
 | 
						|
(ex! "alemb[ic]" #'evil-alembic)
 | 
						|
 | 
						|
;; Elixir
 | 
						|
(add-hook! elixir-mode
 | 
						|
  (ex! "AV" #'alchemist-project-toggle-file-and-tests-other-window)
 | 
						|
  (ex! "A" #'alchemist-project-toggle-file-and-tests))
 |