1 changed files with 33 additions and 340 deletions
-
373settings.org
@ -1,347 +1,40 @@ |
|||||
* Global |
|
||||
** Add features/modes |
|
||||
*** ibuffer-mode |
|
||||
|
* Editing |
||||
|
* Unix buffer things |
||||
|
** Platform fixes |
||||
|
** Key bindings |
||||
|
** Custom features/Monkey patches |
||||
|
* Major modes |
||||
|
** Java |
||||
|
** JavaScript |
||||
|
** Python |
||||
|
*** Platform specific |
||||
#+BEGIN_SRC emacs-lisp |
#+BEGIN_SRC emacs-lisp |
||||
(require 'ibuffer-vc) |
|
||||
(add-hook 'ibuffer-mode-hook (lambda () |
|
||||
(ibuffer-vc-set-filter-groups-by-vc-root))) |
|
||||
|
|
||||
(global-set-key (kbd "C-x C-b") 'ibuffer) |
|
||||
;; Use human readable Size column instead of original one |
|
||||
(define-ibuffer-column size-h |
|
||||
(:name "Size" ;; :inline t |
|
||||
) |
|
||||
(cond |
|
||||
((> (buffer-size) 1000000) (format "%7.1fM" (/ (buffer-size) 1000000.0))) |
|
||||
((> (buffer-size) 100000) (format "%7.0fk" (/ (buffer-size) 1000.0))) |
|
||||
((> (buffer-size) 1000) (format "%7.1fk" (/ (buffer-size) 1000.0))) |
|
||||
(t (format "%8d" (buffer-size))))) |
|
||||
|
|
||||
;; Modify the default ibuffer-formats |
|
||||
(setq ibuffer-formats |
|
||||
'((mark modified read-only " " |
|
||||
(name 18 18 :left :elide) |
|
||||
" " |
|
||||
(size-h 9 -1 :right) |
|
||||
" " |
|
||||
(mode 16 16 :left :elide) |
|
||||
" " |
|
||||
filename-and-process))) |
|
||||
#+END_SRC |
|
||||
*** string-inflection |
|
||||
#+BEGIN_SRC emacs-lisp |
|
||||
(require 'string-inflection) |
|
||||
|
|
||||
;; C-q C-u is the key bindings similar to Vz Editor. |
|
||||
(global-set-key (kbd "C-M-,") 'my-string-inflection-cycle-auto) |
|
||||
|
|
||||
(defun my-string-inflection-cycle-auto () |
|
||||
"switching by major-mode" |
|
||||
(interactive) |
|
||||
(cond |
|
||||
;; for emacs-lisp-mode |
|
||||
((eq major-mode 'emacs-lisp-mode) |
|
||||
(string-inflection-all-cycle)) |
|
||||
;; for python |
|
||||
((eq major-mode 'python-mode) |
|
||||
(string-inflection-python-style-cycle)) |
|
||||
;; for java |
|
||||
((eq major-mode 'java-mode) |
|
||||
(string-inflection-java-style-cycle)) |
|
||||
(t |
|
||||
;; default |
|
||||
(string-inflection-ruby-style-cycle)))) |
|
||||
#+END_SRC |
|
||||
*** undo-tree |
|
||||
#+begin_src emacs-lisp |
|
||||
(require 'undo-tree) |
|
||||
(global-undo-tree-mode) |
|
||||
#+end_src |
|
||||
*** ssh-config-mode |
|
||||
#+begin_src emacs-lisp |
|
||||
(require 'ssh-config-mode) |
|
||||
(add-to-list 'auto-mode-alist '("~/.ssh/config\\'" . ssh-config-mode)) |
|
||||
#+end_src |
|
||||
*** yaml-mode |
|
||||
#+begin_src emacs-lisp |
|
||||
(require 'yaml-mode) |
|
||||
(add-to-list 'auto-mode-alist '("\\.yml\\'" . yaml-mode)) |
|
||||
#+end_src |
|
||||
*** elpy move line up and down globally |
|
||||
#+begin_src emacs-lisp |
|
||||
(require 'elpy) |
|
||||
(global-set-key (kbd "M-<up>") 'elpy-nav-move-line-or-region-up) |
|
||||
(global-set-key (kbd "M-<down>") 'elpy-nav-move-line-or-region-down) |
|
||||
(global-set-key (kbd "C-c <left>") 'windmove-left) |
|
||||
(global-set-key (kbd "C-c <right>") 'windmove-right) |
|
||||
(global-set-key (kbd "C-c <up>") 'windmove-up) |
|
||||
(global-set-key (kbd "C-c <down>") 'windmove-down) |
|
||||
#+end_src |
|
||||
*** iedit-mode |
|
||||
#+begin_src emacs-lisp |
|
||||
(global-set-key (kbd "C-;") 'iedit-mode) |
|
||||
#+end_src |
|
||||
*** spellcheck entire buffer |
|
||||
#+begin_src emacs-lisp |
|
||||
(global-set-key (kbd "C-!") 'ispell-buffer) |
|
||||
#+end_src |
|
||||
*** find/replace |
|
||||
#+begin_src emacs-lisp |
|
||||
(require 'visual-regexp-steroids) |
|
||||
(define-key global-map (kbd "C-c r") 'vr/replace) |
|
||||
(define-key global-map (kbd "C-c q") 'vr/query-replace) |
|
||||
#+end_src |
|
||||
*** duplicate line function |
|
||||
#+begin_src emacs-lisp |
|
||||
(defun duplicate-line() |
|
||||
(interactive) |
|
||||
(move-beginning-of-line 1) |
|
||||
(kill-line) |
|
||||
(yank) |
|
||||
(open-line 1) |
|
||||
(next-line 1) |
|
||||
(yank)) |
|
||||
(global-set-key (kbd "C-c d") 'duplicate-line) |
|
||||
#+end_src |
|
||||
*** magit |
|
||||
#+begin_src emacs-lisp |
|
||||
(global-set-key (kbd "C-x g") 'magit-status) |
|
||||
#+end_src |
|
||||
#+begin_src emacs-lisp |
|
||||
(add-hook 'git-commit-setup-hook 'git-commit-turn-on-flyspell) |
|
||||
#+end_src |
|
||||
*** filename completion |
|
||||
#+BEGIN_SRC emacs-lisp |
|
||||
(global-set-key (kbd "C->") 'comint-dynamic-complete-filename) |
|
||||
#+END_SRC |
|
||||
*** hippie expand |
|
||||
#+BEGIN_SRC emacs-lisp |
|
||||
(global-set-key (kbd "M-/") 'hippie-expand) |
|
||||
(setq hippie-expand-try-functions-list '(try-expand-dabbrev try-expand-dabbrev-all-buffers try-expand-dabbrev-from-kill |
|
||||
try-complete-file-name-partially try-complete-file-name |
|
||||
try-expand-all-abbrevs try-expand-list try-expand-line |
|
||||
try-complete-lisp-symbol-partially try-complete-lisp-symbol)) |
|
||||
#+END_SRC |
|
||||
*** window numbering mode |
|
||||
#+BEGIN_SRC emacs-lisp |
|
||||
(window-numbering-mode) |
|
||||
|
(cond |
||||
|
((string-equal system-type "gnu/linux") |
||||
|
(progn |
||||
|
(custom-set-variables python-shell-interpreter "python3") |
||||
|
))) |
||||
#+END_SRC |
#+END_SRC |
||||
** options |
|
||||
*** global |
|
||||
**** recent files |
|
||||
#+begin_src emacs-lisp |
|
||||
(require 'recentf) |
|
||||
(recentf-mode 1) |
|
||||
#+end_src |
|
||||
**** backup |
|
||||
|
*** custom feature |
||||
|
*** bindings/settings |
||||
#+begin_src emacs-lisp |
#+begin_src emacs-lisp |
||||
(let ((backup-dir (concat user-emacs-directory "backup")) |
|
||||
(auto-save-dir (concat user-emacs-directory "autosave")) |
|
||||
) |
|
||||
(if (not (file-directory-p backup-dir)) |
|
||||
(make-directory backup-dir)) |
|
||||
(if (not(file-directory-p auto-save-dir)) |
|
||||
(make-directory auto-save-dir) |
|
||||
|
(use-package blacken |
||||
|
:hook python-mode) |
||||
|
(use-package elpy |
||||
|
:bind (("C-=" . elpy-goto-assignment)) |
||||
|
:config |
||||
|
(when (require 'flycheck nil t) |
||||
|
(setq elpy-modules (delq 'elpy-module-flymake elpy-modules))) |
||||
) |
) |
||||
(setq backup-directory-alist |
|
||||
`((".*" . , backup-dir))) |
|
||||
(setq auto-save-file-name-transforms |
|
||||
`((".*" , (concat auto-save-dir "/") t)))) |
|
||||
#+end_src |
|
||||
**** kill buffer option |
|
||||
#+begin_src emacs-lisp |
|
||||
(global-set-key (kbd "C-x k") 'kill-this-buffer) |
|
||||
#+end_src |
|
||||
**** inhibit start screen |
|
||||
#+begin_src emacs-lisp |
|
||||
(setq inhibit-startup-screen t) |
|
||||
#+end_src |
|
||||
**** save options |
|
||||
#+begin_src emacs-lisp |
|
||||
(add-hook 'before-save-hook 'delete-trailing-whitespace) |
|
||||
#+end_src |
|
||||
**** theming |
|
||||
#+begin_src emacs-lisp |
|
||||
(load-theme 'dracula t) |
|
||||
#+end_src |
|
||||
**** bell |
|
||||
#+BEGIN_SRC emacs-lisp |
|
||||
(mode-line-bell-mode) |
|
||||
#+END_SRC |
|
||||
**** ivy |
|
||||
#+BEGIN_SRC emacs-lisp |
|
||||
(ivy-mode) |
|
||||
(global-set-key (kbd "C-s") 'swiper) |
|
||||
#+END_SRC |
|
||||
**** kill-emacs key |
|
||||
#+BEGIN_SRC emacs-lisp |
|
||||
(global-set-key (kbd "C-x C-k C-x C-k") 'kill-emacs) |
|
||||
#+END_SRC |
|
||||
**** linum |
|
||||
#+BEGIN_SRC emacs-lisp |
|
||||
(global-display-line-numbers-mode) |
|
||||
|
(use-package python |
||||
|
:config |
||||
|
(elpy-enable)) |
||||
#+END_SRC |
#+END_SRC |
||||
**** enable commands |
|
||||
#+BEGIN_SRC emacs-lisp |
|
||||
(put 'downcase-region 'disabled nil) |
|
||||
#+END_SRC |
|
||||
*** dired |
|
||||
#+begin_src emacs-lisp |
|
||||
(setq ls-lisp-use-insert-directory-program t) |
|
||||
#+end_src |
|
||||
#+begin_src emacs-lisp |
|
||||
(setq dired-listing-switches "-alh") |
|
||||
#+end_src |
|
||||
* Tramp configuration |
|
||||
** Tramp append plist to connection properties |
|
||||
|
** Tramp |
||||
|
** Webmode |
||||
|
* Minor modes/misc |
||||
|
** Lispy |
||||
#+BEGIN_SRC emacs-lisp |
#+BEGIN_SRC emacs-lisp |
||||
(require 'kv) |
|
||||
(defun rlbr/add-config-to-tramp (matches-regexp config-plist) |
|
||||
(let ((config-alist (kvplist->alist config-plist))) |
|
||||
(dolist (pair config-alist) |
|
||||
(let ((config (list |
|
||||
matches-regexp |
|
||||
(car pair) |
|
||||
(cdr pair)))) |
|
||||
(add-to-list |
|
||||
'tramp-connection-properties |
|
||||
config))))) |
|
||||
|
(use-package lispy |
||||
|
:hook (emacs-lisp-mode)) |
||||
#+END_SRC |
#+END_SRC |
||||
** Android |
|
||||
#+begin_src emacs-lisp |
|
||||
(let ((android-config (let ((default-directory "/data/data/com.termux/files")) |
|
||||
(list "tmpdir" (expand-file-name "home/temp/") |
|
||||
"remote-shell" (expand-file-name "usr/bin/sh") |
|
||||
"remote-process-environment" (append (list (concat "PREFIX=" default-directory "usr")) tramp-remote-process-environment) |
|
||||
"remote-path" (append (mapcar 'expand-file-name '("home/.local/bin" "usr/bin" "usr/bin/applets")) '("/sbin" "/vendor/bin" "/system/sbin" "/system/bin" "/system/xbin")))))) |
|
||||
(rlbr/add-config-to-tramp "/ssh:termux.*:" android-config)) |
|
||||
#+end_src |
|
||||
* Web things |
|
||||
** javascript stuff |
|
||||
#+begin_src emacs-lisp |
|
||||
(require 'js2-mode) |
|
||||
(add-to-list 'auto-mode-alist '("\\.js\\'" . js2-mode)) |
|
||||
(add-hook 'js2-mode-hook #'js2-imenu-extras-mode) |
|
||||
(require 'js2-refactor) |
|
||||
(require 'xref-js2) |
|
||||
(add-hook 'js2-mode-hook #'js2-refactor-mode) |
|
||||
(js2r-add-keybindings-with-prefix "C-c C-r") |
|
||||
(define-key js2-mode-map (kbd "C-k") #'js2r-kill) |
|
||||
(define-key js-mode-map (kbd "M-.") nil) |
|
||||
(add-hook 'js2-mode-hook (lambda () |
|
||||
(add-hook 'xref-backend-functions #'xref-js2-xref-backend nil t))) |
|
||||
(define-key js2-mode-map (kbd "C-k") #'js2r-kill) |
|
||||
#+end_src |
|
||||
** web mode |
|
||||
#+begin_src emacs-lisp |
|
||||
(require 'web-mode) |
|
||||
(add-to-list 'auto-mode-alist '("\\.phtml\\'" . web-mode)) |
|
||||
(add-to-list 'auto-mode-alist '("\\.tpl\\.php\\'" . web-mode)) |
|
||||
(add-to-list 'auto-mode-alist '("\\.[agj]sp\\'" . web-mode)) |
|
||||
(add-to-list 'auto-mode-alist '("\\.as[cp]x\\'" . web-mode)) |
|
||||
(add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode)) |
|
||||
(add-to-list 'auto-mode-alist '("\\.mustache\\'" . web-mode)) |
|
||||
(add-to-list 'auto-mode-alist '("\\.djhtml\\'" . web-mode)) |
|
||||
(add-to-list 'auto-mode-alist '("\\.html?\\'" . web-mode)) |
|
||||
#+end_src |
|
||||
* Platform Specific |
|
||||
#+begin_src emacs-lisp |
|
||||
(cond |
|
||||
#+end_src |
|
||||
** Windows |
|
||||
#+begin_src emacs-lisp |
|
||||
((string-equal system-type "windows-nt") |
|
||||
(progn |
|
||||
(defun rlbr/quote-exe (path) |
|
||||
(w32-short-file-name path)) |
|
||||
(defun rlbr/start-external-shell () |
|
||||
(interactive) |
|
||||
(start-process-shell-command (format "cmd(%s)" default-directory) nil "start default.bat")) |
|
||||
(global-set-key (kbd "C-S-C") 'rlbr/start-external-shell) |
|
||||
(defun rlbr/start-windows-explorer-here () |
|
||||
(interactive) |
|
||||
(start-process-shell-command "explorer" nil |
|
||||
(format "explorer %s" |
|
||||
(replace-regexp-in-string "/" (regexp-quote "\\") (expand-file-name default-directory)))) |
|
||||
) |
|
||||
(global-set-key (kbd "C-S-E") 'rlbr/start-windows-explorer-here) |
|
||||
(defun rlbr/case-insensitive-match (string1 string2) |
|
||||
(apply 'string-equal (mapcar 'downcase (list string1 string2)))) |
|
||||
|
|
||||
(defun rlbr/output-matches (output-matches-p exe args) |
|
||||
"locate the executable whose output satifies output-matches-p when fed args and return the fullpath" |
|
||||
(let |
|
||||
( |
|
||||
(exec-path exec-path) |
|
||||
(output) |
|
||||
(bad) |
|
||||
(command-output) |
|
||||
(current-exe) |
|
||||
(failed) |
|
||||
) |
|
||||
(while (not (or output failed)) |
|
||||
(setq current-exe (executable-find exe)) |
|
||||
(if current-exe |
|
||||
(progn |
|
||||
(setq command-output (shell-command-to-string (format "%s %s" (rlbr/quote-exe current-exe) args))) |
|
||||
(if (funcall output-matches-p command-output) |
|
||||
(setq output current-exe) |
|
||||
(progn |
|
||||
(setq bad (replace-regexp-in-string "/$" "" (file-name-directory current-exe))) |
|
||||
(setq exec-path (seq-filter (lambda (item) (not (rlbr/case-insensitive-match item bad))) exec-path))))) |
|
||||
(setq failed t))) |
|
||||
output)) |
|
||||
(let |
|
||||
((find) |
|
||||
(grep) |
|
||||
(ls)) |
|
||||
(progn |
|
||||
(setq find (rlbr/output-matches (lambda (output) (string-equal ".\n" output)) "find" "-maxdepth 0")) |
|
||||
(if find |
|
||||
(setq find-program (rlbr/quote-exe find))) |
|
||||
(setq grep (rlbr/output-matches (lambda (output) (string-match "grep (\\w+ grep)" output)) "grep" "-V")) |
|
||||
(if grep |
|
||||
(setq grep-program (rlbr/quote-exe grep))) |
|
||||
(setq ls (rlbr/output-matches (lambda (output) (string-match "ls: .*'\\?/': No such file or directory" output)) "ls" "?/")) |
|
||||
(if ls |
|
||||
(setq insert-directory-program (rlbr/quote-exe ls))))) |
|
||||
(setq python-shell-interpreter (rlbr/quote-exe (executable-find "python"))) |
|
||||
(setq python-check-command (rlbr/quote-exe (executable-find "flake8"))) |
|
||||
(setq delete-by-moving-to-trash t) |
|
||||
(defun python-shell-interpreter-refresh () |
|
||||
(interactive) |
|
||||
(setq python-shell-interpreter (rlbr/quote-exe (executable-find "python")))) |
|
||||
(add-hook 'python-django-project-root-hook 'python-shell-interpreter-refresh) |
|
||||
)) |
|
||||
#+end_src |
|
||||
** Linux |
|
||||
#+begin_src emacs-lisp |
|
||||
((string-equal system-type "gnu/linux") |
|
||||
(progn |
|
||||
(setq python-shell-interpreter "python3") |
|
||||
(setq elpy-rpc-python-command python-shell-interpreter) |
|
||||
(defun get-elpa-package-install-directory (pkg) |
|
||||
"Return the install directory of elpa PKG. Return nil if it is not found." |
|
||||
(let ((elpa-dir package-user-dir)) |
|
||||
(when (file-exists-p elpa-dir) |
|
||||
(let* ((pkg-match (concat "\\`" (symbol-name pkg) "-[0-9]+")) |
|
||||
(dir (car (directory-files elpa-dir 'full pkg-match)))) |
|
||||
(when dir (file-name-as-directory dir)))))) |
|
||||
(setq vr/command-python |
|
||||
(format "python3 %s" (expand-file-name "regexp.py" (get-elpa-package-install-directory 'visual-regexp-steroids)))) |
|
||||
))) |
|
||||
#+end_src |
|
||||
* Python |
|
||||
#+begin_src emacs-lisp |
|
||||
(elpy-enable) |
|
||||
(when (require 'flycheck nil t) |
|
||||
(setq elpy-modules (delq 'elpy-module-flymake elpy-modules)) |
|
||||
(add-hook 'elpy-mode-hook 'flycheck-mode)) |
|
||||
(require 'blacken) |
|
||||
(defun python-mode-keys () |
|
||||
"Modify python-mode local key map" |
|
||||
(local-set-key (kbd "C-=") 'elpy-goto-assignment)) |
|
||||
(add-hook 'python-mode-hook 'python-mode-keys) |
|
||||
(add-hook 'elpy-mode-hook 'blacken-mode) |
|
||||
(setq elpy-syntax-check-command python-check-command) |
|
||||
#+end_src |
|
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue