Skip to content

Latest commit

 

History

History
371 lines (327 loc) · 11.4 KB

config-bak.org

File metadata and controls

371 lines (327 loc) · 11.4 KB

Common packages

Helpful

(use-package helpful
  :ensure t
  :custom
  (counsel-describe-function-function #'helpful-callable)
  (counsel-describe-variable-function #'helpful-variable)
  :bind
  ([remap describe-function] . counsel-describe-function)
  ([remap describe-command] . helpful-command)
  ([remap describe-variable] . counsel-describe-variable)
  ([remap describe-key] . helpful-key))

Restart emacs

(use-package restart-emacs
  :ensure t)

Show command log

(use-package command-log-mode
  :ensure t)

Posframe

(use-package posframe
  :ensure t)

manage minor mode

In case I want to see all the minor modes

(use-package manage-minor-mode
  :ensure t)

Pop win

(use-package popwin
  :ensure t
  :config
  (global-set-key (kbd "M-p") popwin:keymap))

Mini frame

Place minibuffer at the top of the current frame

(use-package mini-frame
  :ensure t
  :config
  (mini-frame-mode t)
  (custom-set-variables
   '(mini-frame-show-parameters
     '((top . 10)
       (width . 0.7)
       (left . 0.5)))))

Transpose frame

(use-package transpose-frame
  :ensure t)

Reasonable default settings

Popup managment

Taken from https://emacs.stackexchange.com/questions/46210/reuse-help-window

(setq display-buffer-alist
      `((,(rx bos (or "*Apropos*" "*Help*" "*helpful" "*info*" "*Summary*") (0+ not-newline))
         (display-buffer-reuse-mode-window display-buffer-below-selected)
         (window-height . 0.33)
         (mode apropos-mode help-mode helpful-mode Info-mode Man-mode))))

Minibuffer recursive

(setq enable-recursive-minibuffers t)

Misc

Highlight Indent guides

(use-package indent-guide
  :ensure t)
(use-package highlight-indent-guides
  :ensure t
  :hook (prog-mode . highlight-indent-guides-mode)
  :init
  ;; (setq highlight-indent-guides-method 'column)
  (setq highlight-indent-guides-method 'bitmap)
  ;; (setq highlight-indent-guides-character ?|)
  ;; (setq highlight-indent-guides-character ?❚)
  ;;(setq highlight-indent-guides-character ?‖)
  ;; (setq highlight-indent-guides-responsive 'stack)
  ;;(setq highlight-indent-guides-responsive 'top)
  ;; (setq highlight-indent-guides-auto-enabled nil)
  ;; (set-face-background 'highlight-indent-guides-odd-face "darkgray")
  ;; (set-face-background 'highlight-indent-guides-even-face "dimgray")
  ;; (set-face-foreground 'highlight-indent-guides-character-face "dimgray")
  )

Display battery

;; (display-battery-mode 1)
;; (setq battery-mode-line-format "[%b%p%% %t]")

Dired icons

(use-package all-the-icons-dired
  :ensure t
  :config
  (add-hook 'dired-mode-hook 'all-the-icons-dired-mode))

Info colors

(use-package info-colors
  :ensure t
  :config
  (add-hook 'Info-selection-hook 'info-colors-fontify-node))

Tab bar

(use-package centaur-tabs
  :ensure t
  :init
  (setq centaur-tabs-set-icons t)
  (setq ccentaur-tabs-set-modified-marker t
        centaur-tabs-modified-marker "M"
        centaur-tabs-cycle-scope 'tabs)
  (setq centaur-tabs-set-close-button nil)
  :config
  (centaur-tabs-group-by-projectile-project)
  )

Magnifying mode

(defun magnifying-current-line ()
  (setq magnifying-overlay (make-overlay (line-beginning-position) (line-end-position)))
  (overlay-put magnifying-overlay 'font-lock-face '(:height 2.5)))

(defun magnifying-delete-line ()
  (dolist (o (overlays-in  (line-beginning-position) (line-end-position)))
    (delete-overlay o)))

(define-minor-mode magnifying-mode
  "Toggles global magnifying-mode."
  nil   ; Initial value, nil for disabled
  :global t
  :group 'magnifying
  :lighter " magnifying"
  :keymap
  (list
   (cons (kbd "C-c t") (lambda ()
                         (interactive)
                         (magnifying-current-line)))

   (cons (kbd "C-c m") (lambda ()
                         (interactive)
                         (magnifying-delete-line)))
   )

  (if magnifying-mode
      (message "magnifying-mode activated!")
    (message "magnifying-mode deactivated!")))

(add-hook 'magnifying-mode-hook (lambda () (message "magnifying hook was executed!")))
(add-hook 'magnifying-mode-on-hook (lambda () (message "magnifying turned on!")))
(add-hook 'magnifying-mode-off-hook (lambda () (message "magnifying turned off!")))

Command completion

ivy is a generic completion framework which uses the minibuffer. Turning on ivy-mode with fuzzy support enables replacement of lots of built in ido functionality.

(use-package smex
  :ensure t)
(use-package ivy
  :ensure t
  :config
  (ivy-mode t))

(use-package ivy-rich
  :ensure t
  :init
  (ivy-rich-mode 1))

counsel is a collection of ivy enhanced versions of common Emacs commands. I haven’t bound much as ivy-mode takes care of most things.

(use-package counsel
  :ensure t
  :bind
  (("M-x" . counsel-M-x))
  :config
   (setq ivy-re-builders-alist
         '(
           ;; no need to support fuzzy when use swiper and ivy-switch-buffer
           (ivy-switch-buffer . ivy--regex-plus)
           (swiper . ivy--regex-plus)
           (t . ivy--regex-fuzzy)
           ))
  (setq ivy-initial-inputs-alist nil))

swiper is an ivy enhanced version of isearch.

(use-package swiper
  :ensure t
  :bind (("M-s" . swiper)))

hydra presents menus for ivy commands.

(use-package hydra
  :ensure t)

(use-package ivy-hydra
  :ensure t
  :after (ivy hydra))

Folding

https://github.com/Schnouki/dotfiles/blob/master/emacs/init-20-dev.el#L90

(use-package origami
  :ensure t
  :commands origami-mode
  :bind (:map origami-mode-map
              ("C-: :" . origami-recursively-toggle-node)
              ("C-: a" . origami-toggle-all-nodes)
              ("C-: t" . origami-toggle-node)
              ("C-: o" . origami-show-only-node)
              ("C-: u" . origami-undo)
              ("C-: U" . origami-redo)
              ("C-: C-r" . origami-reset)
              ))

Dired

preview file

(define-minor-mode dired-follow-mode
  "Diplay file at point in dired after a move."
  :lighter " dired-f"
  :global t
  (if dired-follow-mode (advice-add 'dired-next-line
                                    :after (lambda (arg)
                                             (dired-display-file)))
    (advice-remove 'dired-next-line (lambda (arg)
                                      (dired-display-file)))))

dired hacks

(use-package dired-rainbow
  :ensure t
  :config
  (progn
    (dired-rainbow-define-chmod directory "#6cb2eb" "d.*")
    (dired-rainbow-define html "#eb5286" ("css" "less" "sass" "scss" "htm" "html" "jhtm" "mht" "eml" "mustache" "xhtml"))
    (dired-rainbow-define xml "#f2d024" ("xml" "xsd" "xsl" "xslt" "wsdl" "bib" "json" "msg" "pgn" "rss" "yaml" "yml" "rdata"))
    (dired-rainbow-define document "#9561e2" ("docm" "doc" "docx" "odb" "odt" "pdb" "pdf" "ps" "rtf" "djvu" "epub" "odp" "ppt" "pptx"))
    (dired-rainbow-define markdown "#ffed4a" ("org" "etx" "info" "markdown" "md" "mkd" "nfo" "pod" "rst" "tex" "textfile" "txt"))
    (dired-rainbow-define database "#6574cd" ("xlsx" "xls" "csv" "accdb" "db" "mdb" "sqlite" "nc"))
    (dired-rainbow-define media "#de751f" ("mp3" "mp4" "MP3" "MP4" "avi" "mpeg" "mpg" "flv" "ogg" "mov" "mid" "midi" "wav" "aiff" "flac"))
    (dired-rainbow-define image "#f66d9b" ("tiff" "tif" "cdr" "gif" "ico" "jpeg" "jpg" "png" "psd" "eps" "svg"))
    (dired-rainbow-define log "#c17d11" ("log"))
    (dired-rainbow-define shell "#f6993f" ("awk" "bash" "bat" "sed" "sh" "zsh" "vim"))
    (dired-rainbow-define interpreted "#38c172" ("py" "ipynb" "rb" "pl" "t" "msql" "mysql" "pgsql" "sql" "r" "clj" "cljs" "scala" "js"))
    (dired-rainbow-define compiled "#4dc0b5" ("asm" "cl" "lisp" "el" "c" "h" "c++" "h++" "hpp" "hxx" "m" "cc" "cs" "cp" "cpp" "go" "f" "for" "ftn" "f90" "f95" "f03" "f08" "s" "rs" "hi" "hs" "pyc" ".java"))
    (dired-rainbow-define executable "#8cc4ff" ("exe" "msi"))
    (dired-rainbow-define compressed "#51d88a" ("7z" "zip" "bz2" "tgz" "txz" "gz" "xz" "z" "Z" "jar" "war" "ear" "rar" "sar" "xpi" "apk" "xz" "tar"))
    (dired-rainbow-define packaged "#faad63" ("deb" "rpm" "apk" "jad" "jar" "cab" "pak" "pk3" "vdf" "vpk" "bsp"))
    (dired-rainbow-define encrypted "#ffed4a" ("gpg" "pgp" "asc" "bfe" "enc" "signature" "sig" "p12" "pem"))
    (dired-rainbow-define fonts "#6cb2eb" ("afm" "fon" "fnt" "pfb" "pfm" "ttf" "otf"))
    (dired-rainbow-define partition "#e3342f" ("dmg" "iso" "bin" "nrg" "qcow" "toast" "vcd" "vmdk" "bak"))
    (dired-rainbow-define vc "#0074d9" ("git" "gitignore" "gitattributes" "gitmodules"))
    (dired-rainbow-define-chmod executable-unix "#38c172" "-.*x.*")
    ))

Find file in cursor

(defun teddy-ma/find-file-under-cursor ()
  "Check it the filepath under cursor is an absolute path otherwise open helm and insert the filepath."
  (interactive)
  (let ((file-path (thing-at-point 'filename t)))
    (if (file-name-absolute-p file-path)
        (find-file-at-point file-path)
      (minibuffer-with-setup-hook (lambda ()
                                    (insert file-path))
        (helm-ls-git-ls)))))

Edit indirect

like buffer narrow but in other buffer

(use-package edit-indirect
  :ensure t)

Drag and drop images

(use-package org-download
  :ensure t
  :config
  (setq-default org-download-image-dir "~/Documents/org/assets/images")
  (setq-default org-download-timestamp "")
  (setq-default org-download-heading-lvl nil)
  (add-hook 'dired-mode-hook 'org-download-enable))

Reveal.js

(use-package ox-reveal
  :ensure t
  :config
  (setq org-reveal-root "https://cdn.jsdelivr.net/npm/reveal.js")
  (setq org-reveal-mathjax t))

Org Tree Slide

C-x-n-s and C-x-n-w can narrow to subtree

(use-package org-tree-slide
  :ensure t
  :custom
  (org-image-actual-width nil))

LSP

lsp mode

(use-package gnu-elpa-keyring-update
  :ensure t)
(require 'cc-mode)
(use-package projectile
  :ensure t
  :config
  (setq projectile-mode-line-function '(lambda () (format " Proj[%s]" (projectile-project-name)))))
(use-package yasnippet
  :ensure t)
(use-package lsp-mode
  :ensure t)
(use-package hydra
  :ensure t)
(use-package lsp-ui
  :ensure t)