summaryrefslogblamecommitdiff
path: root/emacs/custom/fcuny-navigation.el
blob: 44d7c3951a51303a9258f8ce7b8af22d44cdc667 (plain) (tree)
1
2
3
4
5
6

                     

                           
                    
           









                                                                        
 

                     
                                                                             

                         





                                            





                                    
                                              
                                        
                                        
 

                    
                                        
         




                                                                                            
 
                    
                             



                                       


                              
                                        

                                           



                                           



                                                    
                                          
                                           


                                           






                                                                                              

                    
                        
         
                                   
                                             

                                                                                 

               






















                                                 








                                            








                                  
                              

                            



                                          




























                                                                            
                          



                   







                                                                                     
                           
(require 'fcuny-vars)

(setq help-window-select t)

(use-package project
  :ensure t
  :bind-keymap ("C-c p" . project-prefix-map)
  :custom
  (project-list-file (expand-file-name "projects" fcuny/path-emacs-var))
  (project-switch-commands
   '((?f "File" project-find-file)
     (?d "Dired" project-dired)
     (?b "Buffer" project-switch-to-buffer)
     (?e "Eshell" project-eshell)
     (?m "Magit status" magit-project-status)
     (?r "Search" rg-project))))

(use-package bookmark
  :custom
  (bookmark-default-file (expand-file-name "bookmarks" fcuny/path-emacs-var))
  (bookmark-save-flag 1))

(use-package ls-lisp
  :ensure nil
  :custom
  (ls-lisp-use-insert-directory-program nil)
  (ls-lisp-dirs-first t))

(use-package dired
  :defer t
  :bind (("C-x C-d" . dired)
         ("C-x C-j" . dired-jump))
  :init
  (setq-default dired-dwim-target t)
  (setq-default dired-listing-switches "-alh")
  (setq dired-recursive-deletes 'always)
  (setq dired-recursive-copies 'always))

(use-package dired-x
  :ensure nil
  :hook ((dired-mode . dired-omit-mode))
  :config
  (setq dired-omit-verbose nil)
  ;; hide backup, autosave, *.*~ files
  ;; omit mode can be toggled using `C-x M-o' in dired buffer.
  (setq dired-omit-files
        (concat dired-omit-files "\\|^.DS_Store$\\|^.localized$\\|^.projectile$\\|^.git$")))

(use-package ibuffer
  :bind ("C-x C-b" . ibuffer)
  :commands
  ibuffer-auto-mode
  ibuffer-switch-to-saved-filter-groups
  ibuffer-do-sort-by-alphabetic
  :custom
  (ibuffer-saved-filter-groups
   (quote (("default"
            ("org"    (mode . org-mode))
            ("go"     (mode . go-mode))
            ("python" (mode . python-mode))
            ("config" (or
                       (name . "\\.conf$")
                       (name . "\\.json$")
                       (mode . yaml-mode)))
            ("scripts" (mode . sh-mode))
            ("documentation" (or
                              (mode . markdown-mode)
                              (mode . rst-mode)))
            ("dired"  (mode . dired-mode))
            ("shell"  (mode . eshell-mode))
            ("git"    (or
                       (name . "^\*magit")
                       (name . "^\magit")))
            ("Emacs"  (or
                       (mode . emacs-lisp-mode)
                       (name . "^\\*scratch\\*$")
                       (name . "^\\.emacs")
                       (name . "^\\*Messages\\*$")))))))
  :init
  (add-hook 'ibuffer-mode-hook (lambda () (ibuffer-switch-to-saved-filter-groups "default"))))

(use-package recentf
  :init (recentf-mode 1)
  :config
  (setq recentf-max-saved-items 500
        recentf-exclude '(".gz" ".xz" ".zip")
        recentf-save-file (expand-file-name "var/recentf" user-emacs-directory)))

(use-package rg
  :ensure t
  :config
  (rg-define-search fcuny/grep-git-or-dir
    :query ask
    :format regexp
    :files "everything"
    :confirm prefix
    :flags ("--hidden -g !.git")
    :dir (let ((vc (magit-toplevel)))
           (if vc
               vc
             default-directory)))
  (rg-define-search fcuny/grep-git-or-dir-todos
    :query "TODO\|FIXME\|XXX"
    :format regexp
    :files "everything"
    :confirm prefix
    :flags ("--hidden -g !.git")
    :dir (let ((vc (magit-toplevel)))
           (if vc
               vc
             default-directory)))
  :bind (("M-s g" . fcuny/grep-git-or-dir)
         ("M-s t" . fcuny/grep-git-or-dir-todos))
  :custom
  (rg-group-result t)
  (rg-show-columns t)
  (rg-align-position-numbers t)
  (rg-align-line-number-field-length 3)
  (rg-align-column-number-field-length 3)
  (rg-align-line-column-separator "#")
  (rg-align-position-content-separator "|"))

(use-package counsel
  :diminish counsel-mode
  :ensure t
  :after ivy
  :init (counsel-mode 1)
  :bind
  (("M-x"     . counsel-M-x)
   ("C-x C-f" . counsel-find-file)
   ("C-x C-r" . counsel-recentf)
   ("C-c i "  . counsel-imenu)
   ("C-c f"   . counsel-git)
   ("C-c /"   . counsel-rg)
   ("C-c m"   . counsel-mark-ring)
   ("C-c V"   . counsel-describe-variable)
   ("C-c C-l" . counsel-find-library)
   ("C-c U"   . counsel-unicode-char)
   ("C-x r l" . counsel-bookmark))
  :custom
  (counsel-find-file-ignore-regexp "\\.git\\|\\.DS_Store\\|\\.localized\\'")
  (counsel-find-file-at-point t))

(use-package ivy
  :ensure t
  :diminish ivy-mode
  :init (ivy-mode 1)
  :custom
  (ivy-use-virtual-buffers t)
  (ivy-count-format "(%d/%d) ")
  (ivy-height 20)
  (ivy-use-selectable-prompt t)
  :bind (("C-x b"   . ivy-switch-buffer)
         ("C-s"     . swiper)))

(use-package ivy-rich
  :ensure t
  :after (ivy)
  :config
  (ivy-rich-mode 1)
  :custom
  (ivy-extra-directories '("../" "./"))
  (ivy-virtual-abbreviate 'full)
  (ivy-rich-switch-buffer-align-virtual-buffer t)
  (ivy-rich-path-style 'abbrev))

(use-package which-key
  :diminish which-key-mode
  :ensure t
  :config
  (which-key-mode))

;; treemacs is being pulled by lsp/dap mode, so let's be explicit
;; about getting it installed, and ensure that it writes its own data
;; in our var directory.
(use-package treemacs
  :ensure t
  :custom
  (treemacs-persist-file (expand-file-name "treemacs-persist" fcuny/path-emacs-var)))

(provide 'fcuny-navigation)