(menu-bar-mode 1))
(menu-bar-mode 0))
- (setq debug-on-error t)
+ ;; (setq debug-on-error t)
(setq inhibit-startup-message t)
(defalias 'yes-or-no-p 'y-or-n-p)
(setq large-file-warning-threshold nil)
#+END_SRC
+*** Xterm mode
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (unless (display-graphic-p)
+ (xterm-mouse-mode))
+#+END_SRC
* Package Management Tools
** Use-package
Using [[https://github.com/jwiegley/use-package][use-package]] to manage emacs packages
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
(use-package ido
:ensure t
- :init (setq ido-enable-flex-matching nil
+ :init (setq ido-enable-flex-matching t
ido-ignore-extensions t
ido-use-virtual-buffers t
+ ido-use-faces nil
ido-everywhere t)
(setq ido-save-directory-list-file (concat sd-temp-directory "ido.last"))
:config
(define-key ido-file-completion-map (kbd "C-w") #'ido-delete-backward-word-updir)
(define-key ido-file-dir-completion-map (kbd "C-w") #'ido-delete-backward-updir)
;; (define-key ido-file-dir-completion-map (kbd "C-i") #'ido-copy-current-word)
-
- ;; (dolist (map (list
- ;; ido-buffer-completion-map
- ;; ido-file-completion-map
- ;; ido-file-dir-completion-map
- ;; ido-common-completion-map))
- ;; (define-key map (kbd "C-w") #'ido-delete-backward-word-updir)
- ;; ;; (define-key map (kbd "C-i") #'ido-copy-current-file-name)
- ;; )
)
(icomplete-mode t)
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
(use-package flx-ido
:ensure t
- :init (setq ido-enable-flex-matching nil
- ido-use-faces nil)
:config (flx-ido-mode nil))
#+END_SRC
ido-file-dir-completion-map)))
#+END_SRC
-** Counsel
+** helm
+let helm windows split inside current window
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (with-eval-after-load 'helm
+ (setq helm-split-window-in-side-p t))
+#+END_SRC
+
+* Swiper & Ivy & Counsel
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
(use-package counsel
:ensure t
:defer t
:init
+ (use-package ivy :ensure t)
+ (ivy-mode 1)
+ (setq ivy-use-virtual-buffers nil
+ ivy-wrap t)
+ (set-face-attribute 'ivy-current-match nil :background "Orange" :foreground "black")
(global-set-key (kbd "M-x") 'counsel-M-x)
(global-set-key (kbd "C-h f") 'counsel-describe-function)
(global-set-key (kbd "C-h v") 'counsel-describe-variable)
- ;; (set-face-attribute 'ivy-current-match nil :background "Orange" :foreground "black")
+ (global-set-key (kbd "C-x C-f") 'counsel-find-file)
(define-key read-expression-map (kbd "C-r") 'counsel-expression-history)
(global-set-key (kbd "C-c C-r") 'ivy-resume))
+
+ (use-package counsel-projectile
+ :ensure t
+ :defer t)
#+END_SRC
-** helm
-let helm windows split inside current window
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
- (with-eval-after-load 'helm
- (setq helm-split-window-in-side-p t))
+ (defun sd/swith-buffer-other-window ()
+ (interactive)
+ (ivy-set-action (cond ((eq (ivy-state-caller ivy-last) 'ivy-switch-buffer)
+ 'ivy--switch-buffer-other-window-action)
+ ((eq (ivy-state-caller ivy-last) 'counsel-recentf)
+ 'find-file-other-window)
+ ((eq (ivy-state-caller ivy-last) 'counsel-projectile-find-file)
+ 'counsel-projectile-find-file-action-other-window)
+ (t
+ nil)))
+ (ivy-done)
+ (ivy-shrink-after-dispatching))
+
+ (with-eval-after-load "ivy"
+ (define-key ivy-minibuffer-map (kbd "C-o") 'ivy-dispatching-done)
+ (define-key ivy-minibuffer-map (kbd "C-k") #'sd/swith-buffer-other-window))
#+END_SRC
+stolen from [[https://github.com/mariolong/emacs.d/blob/f6a061594ef1b5d1f4750e9dad9dc97d6e122840/emacs-init.org][here]]
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (use-package swiper
+ :ensure t
+ ;; :init
+ :config
+ ;; (ivy-mode)
+ (global-set-key (kbd "s-/") 'swiper)
+ (define-key swiper-map (kbd "M-r") 'swiper-query-replace)
+ (define-key swiper-map (kbd "C-.") (lambda ()
+ (interactive)
+ (insert (format "%s" (with-ivy-window (thing-at-point 'word))))))
+ (define-key swiper-map (kbd "M-.") (lambda ()
+ (interactive)
+ (insert (format "%s" (with-ivy-window (thing-at-point 'symbol)))))))
+
+#+END_SRC
* Org-mode Settings
** Org-mode Basic setting
Always indents header, and hide header leading starts so that no need type =#+STATUP: indent=
*** variable-pitch-mode and fixed-pitch-mode
[[https://yoo2080.wordpress.com/2013/05/30/monospace-font-in-tables-and-source-code-blocks-in-org-mode-proportional-font-in-other-parts/][monospace font in tables and source code blocks in org-mode, proportional font in other parts]]
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
- (unless (find-font (font-spec :name "Ubuntu Mono"))
- (warn "Font not found Ubuntu Mono"))
- (unless (find-font (font-spec :name "Source Code Pro"))
- (warn "Font not found Source Code Pro"))
- (unless (find-font (font-spec :name "Source Sans Pro"))
- (warn "Font not found Source Sans Pro"))
+ (when (display-graphic-p)
+ (unless (find-font (font-spec :name "Ubuntu Mono"))
+ (warn "Font not found Ubuntu Mono"))
+ (unless (find-font (font-spec :name "Source Code Pro"))
+ (warn "Font not found Source Code Pro"))
+ (unless (find-font (font-spec :name "Source Sans Pro"))
+ (warn "Font not found Source Sans Pro")))
(set-face-attribute 'variable-pitch nil :font "Source Sans Pro" :height 160)
(set-face-attribute 'fixed-pitch nil :font "Source Code Pro" :height (face-attribute 'default :height))
;; (require 'org-indent)
;; (set-face-attribute 'org-indent nil :inherit '(org-hide fixed-pitch)))
- (with-eval-after-load "org"
- (let ((default-font-size (- (face-attribute 'default :height) 20)))
- (set-face-attribute 'org-code nil :height default-font-size)
- (set-face-attribute 'org-block nil :height default-font-size)
- (set-face-attribute 'org-table nil :family "Ubutu Mono" :height default-font-size)
- (set-face-attribute 'org-formula nil :family "Ubutu Mono" :height default-font-size)
- (set-face-attribute 'org-block-begin-line nil :background nil :foreground nil :inherit 'shadow :slant 'italic :height default-font-size)
- (set-face-attribute 'org-block-end-line nil :background nil :foreground nil :inherit 'shadow :slant 'italic :height default-font-size)))
+ ;; (with-eval-after-load "org"
+ ;; (let ((default-font-size (- (face-attribute 'default :height) (if (display-graphic-p) 20 0))))
+ ;; (set-face-attribute 'org-code nil :height default-font-size)
+ ;; (set-face-attribute 'org-block nil :height default-font-size)
+ ;; (set-face-attribute 'org-block-begin-line nil :background nil :foreground nil :inherit 'shadow :slant 'italic :height default-font-size)
+ ;; (set-face-attribute 'org-block-end-line nil :background nil :foreground nil :inherit 'shadow :slant 'italic :height default-font-size)
+ ;; (when (find-font (font-spec :name "Ubuntu Mono"))
+ ;; (set-face-attribute 'org-table nil :family "Ubutu Mono" :height default-font-size)
+ ;; (set-face-attribute 'org-formula nil :family "Ubutu Mono" :height default-font-size))))
+
+ (add-hook 'org-mode-hook
+ (lambda ()
+ (let ((default-font-size (- (face-attribute 'default :height) (if (display-graphic-p) 20 0))))
+ (set-face-attribute 'org-code nil :height default-font-size)
+ (set-face-attribute 'org-block nil :height default-font-size)
+ (set-face-attribute 'org-block-begin-line nil :background nil :foreground nil :inherit 'shadow :slant 'italic :height default-font-size)
+ (set-face-attribute 'org-block-end-line nil :background nil :foreground nil :inherit 'shadow :slant 'italic :height default-font-size)
+ (when (find-font (font-spec :name "Ubuntu Mono"))
+ (set-face-attribute 'org-table nil :family "Ubutu Mono" :height default-font-size)
+ (set-face-attribute 'org-formula nil :family "Ubutu Mono" :height default-font-size)))))
#+END_SRC
Also correct the face of =org-meta-line= in =org-table=
;; (add-hook 'eshell-mode-hook (lambda ()
;; (local-set-key (kbd "C-l") 'sd/eshell-clear-buffer)))
- (add-hook 'eshell-mode-hook (apply-partially #'local-set-key (kbd "C-l") 'sd/eshell-clear-buffer))
;; (add-hook 'eshell-mode-map (lambda () (interactive)
;; (define-key eshell-mode-map (kbd "<tab>") 'completion-at-point)))
+
+ (defun sd/eshell-hook ()
+ (interactive)
+ (define-key eshell-mode-map (kbd "C-j") #'eshell-send-input)
+ (define-key eshell-mode-map (kbd "C-l") #'sd/eshell-clear-buffer))
+
+ (add-hook 'eshell-mode-hook #'sd/eshell-hook)
+
+
+ ;; (add-hook 'eshell-mode-hook (apply-partially #'local-set-key (kbd "C-l") 'sd/eshell-clear-buffer))
#+END_SRC
** Toggle Eshell
("q" nil "quit")
("f" nil "quit"))
- (global-set-key (kbd "C-'") 'sd/hydra-misc/body)
+ ;; (global-set-key (kbd "C-'") 'sd/hydra-misc/body)
+
+ (defun sd/exchange-win-layout ()
+ "Change the windos layout."
+ (interactive)
+ (when (equal (length (window-list)) 2)
+ (let ((current-layout (if (or (window-in-direction 'right) (window-in-direction 'left))
+ 'v
+ 'h))
+ (other-buf (window-buffer (or (window-in-direction 'right)
+ (window-in-direction 'left)
+ (window-in-direction 'below)
+ (window-in-direction 'above)))))
+ (delete-other-windows)
+ (if (eq current-layout 'v)
+ (split-window-below)
+ (split-window-right))
+ (other-window 1)
+ (switch-to-buffer other-buf))))
+
+ (defhydra sd/hydra-window-layout (:color red :colums nil)
+ "Window Layout"
+ ("m" sd/toggle-max-windows "Max-win" :exit t)
+ ("s" ace-swap-window "Swap" :exit t)
+ ("d" ace-delete-window "Delete" :exit t)
+ ("x" sd/exchange-win-layout "eXchange" :exit t)
+ ("u" winner-undo "window-Undo" :exit t)
+ ("r" winner-redo "window-Redo" :exit t))
+
+ (with-eval-after-load "evil"
+ (define-key evil-normal-state-map (kbd ";t") 'sd/hydra-window-layout/body))
+
#+END_SRC
*** hydra launcher
** Smart Parens
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
- (use-package smartparens
- :ensure t
- :config
- (progn
- (require 'smartparens-config)
- (add-hook 'prog-mode-hook 'smartparens-mode)))
+ ;; (use-package smartparens
+ ;; :ensure t
+ ;; :config
+ ;; (progn
+ ;; (require 'smartparens-config)
+ ;; (add-hook 'prog-mode-hook 'smartparens-mode)))
#+END_SRC
** Ace-Windows
;; (eval . (when buffer-file-name
;; (setq-local view-no-disable-on-exit t)
;; (view-mode-enter)))
+ (projectile-enable-caching . nil)
))))
;; (dir-locals-set-directory-class (expand-file-name "/usr/local/share/emacs") 'emacs)
3. tags jump
*** c/c++ style
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
- (setq c-default-style "stroustrup"
- c-basic-offset 4)
+ ;; (setq c-default-style "stroustrup"
+ ;; c-basic-offset 4)
;; "C-M-j" is my global binding for avy goto line below
;; disable it in c mode
(add-to-list 'auto-mode-alist '("\\.mm\\'" . objc-mode))
(setq c-hungry-delete-key t)
+
+
+ ;; Looks `c-hanging-braces-alist' doesn't work as expected when `electric-pair-mode' is enabled.
+ (electric-pair-mode 1)
+
+ (defconst sd/c-style
+ '("stroustrup"
+ (c-tab-always-indent . t)
+ (c-basic-offset . 4)
+ (c-hanging-braces-alist . ((substatement-open before)
+ (statement-block-intro before)))
+ (c-hanging-colons-alist . ())
+ (c-echo-syntactic-information-p . nil)
+ (c-hanging-semi&comma-criteria . ()))
+ "My C programming style")
+
+ (c-add-style "sd-c-style" sd/c-style)
+
+ (setq c-default-style "sd-c-style")
+
+ (add-hook 'c-mode-hook '(lambda ()
+ (c-toggle-auto-newline 1)
+ (c-set-style "sd-c-style")))
+
+ ;; (advice-add 'c-electric-brace :after (lambda (arg) "Add new line after insert {}" (newline-and-indent)))
#+END_SRC
*** irony
("\\.markdown\\'" . markdown-mode))
:init (setq markdown-command "multimarkdown"))
- (add-hook 'gfm-mode-hook (lambda ()
- (set-face-attribute 'markdown-inline-code-face nil :inherit 'fixed-pitch)
- (set-face-attribute 'markdown-pre-face nil :inherit 'fixed-pitch)))
- (with-eval-after-load "gfm-mode"
- (set-face-attribute 'markdown-inline-code-face nil :inherit 'fixed-pitch)
- (set-face-attribute 'markdown-pre-face nil :inherit 'fixed-pitch))
+ ;; (add-hook 'gfm-mode-hook (lambda ()
+ ;; (set-face-attribute 'markdown-inline-code-face nil :inherit 'fixed-pitch)
+ ;; (set-face-attribute 'markdown-pre-face nil :inherit 'fixed-pitch)))
+ ;; (with-eval-after-load "gfm-mode"
+ ;; (set-face-attribute 'markdown-inline-code-face nil :inherit 'fixed-pitch)
+ ;; (set-face-attribute 'markdown-pre-face nil :inherit 'fixed-pitch))
#+END_SRC
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
(let ((root (projectile-project-root)))
(with-current-buffer buffer
(cd root))))))
+
+
+
+ ;; https://emacs.stackexchange.com/questions/16497/how-to-exclude-files-from-projectile
+ ;; (setq projectile-enable-caching t)
+ (if (executable-find "rg")
+ (progn
+ (defconst modi/rg-arguments
+ `("--line-number" ; line numbers
+ "--smart-case"
+ "--follow" ; follow symlinks
+ "--mmap") ; apply memory map optimization when possible
+ "Default rg arguments used in the functions in `projectile' package.")
+
+ (defun modi/advice-projectile-use-rg ()
+ "Always use `rg' for getting a list of all files in the project."
+ (mapconcat 'identity
+ (append '("\\rg") ; used unaliased version of `rg': \rg
+ modi/rg-arguments
+ '("--null" ; output null separated results,
+ "--files")) ; get file names matching the regex '' (all files)
+ " "))
+
+ (advice-add 'projectile-get-ext-command :override #'modi/advice-projectile-use-rg))
+ (message "rg is not found"))
#+END_SRC
*** project config =super= keybindings
(use-package moccur-edit))
#+END_SRC
-*** Swiper
-stolen from [[https://github.com/mariolong/emacs.d/blob/f6a061594ef1b5d1f4750e9dad9dc97d6e122840/emacs-init.org][here]]
-#+BEGIN_SRC emacs-lisp :tangle yes :results silent
- (use-package swiper
- :ensure t
- :init
- (setq ivy-use-virtual-buffers t)
- (set-face-attribute 'ivy-current-match nil :background "Orange" :foreground "black")
- :config
- (ivy-mode)
- (global-set-key (kbd "s-/") 'swiper)
- (define-key swiper-map (kbd "M-r") 'swiper-query-replace)
- (define-key swiper-map (kbd "C-.") (lambda ()
- (interactive)
- (insert (format "%s" (with-ivy-window (thing-at-point 'word))))))
- (define-key swiper-map (kbd "M-.") (lambda ()
- (interactive)
- (insert (format "%s" (with-ivy-window (thing-at-point 'symbol)))))))
-#+END_SRC
** Expand region map
*** Install =expand-region=
draw one line top of the windows
* test
+This is a test.
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
;; test local mode line
;; (add-to-list 'load-path "~/.emacs.d/elisp")