From 21979d8bca0391af9bcc14fdbdfeeedf31243202 Mon Sep 17 00:00:00 2001 From: Raphael Roberts Date: Thu, 19 Sep 2019 20:20:12 +0000 Subject: [PATCH] Changing the structure of the settings.org file + elpy update fixes --- settings.org | 373 +++++---------------------------------------------- 1 file changed, 33 insertions(+), 340 deletions(-) diff --git a/settings.org b/settings.org index 7993c56..2fa1f37 100644 --- a/settings.org +++ b/settings.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 -(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-") 'elpy-nav-move-line-or-region-up) -(global-set-key (kbd "M-") 'elpy-nav-move-line-or-region-down) -(global-set-key (kbd "C-c ") 'windmove-left) -(global-set-key (kbd "C-c ") 'windmove-right) -(global-set-key (kbd "C-c ") 'windmove-up) -(global-set-key (kbd "C-c ") '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 -** options -*** global -**** recent files -#+begin_src emacs-lisp -(require 'recentf) -(recentf-mode 1) -#+end_src -**** backup +*** custom feature +*** bindings/settings #+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 -**** 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 -(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 -** 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