| @@ -59,41 +59,40 @@ Otherwize hook it." | |||
| ;; (message "safe-require-or-eval: Trying to require %s" ,feature) | |||
| ;; (require ,feature nil t))) | |||
| ;; TODO: Remove: Defining autoload is no more needed for most cases | |||
| (defmacro autoload-eval-lazily (feature &optional functions &rest body) | |||
| "Define autoloading FEATURE that defines FUNCTIONS. | |||
| FEATURE is a symbol. FUNCTIONS is a list of symbols. If FUNCTIONS is nil, | |||
| the function same as FEATURE is defined as autoloaded function. BODY is passed | |||
| to `eval-after-load'. | |||
| After this macro is expanded, this returns the path to library if FEATURE | |||
| found, otherwise returns nil." | |||
| (declare (indent 2) (debug t)) | |||
| (let* ((libname (symbol-name (eval feature))) | |||
| (libpath (locate-library libname))) | |||
| `(progn | |||
| (when (locate-library ,libname) | |||
| ,@(mapcar (lambda (f) | |||
| `(unless (fboundp ',f) | |||
| (progn | |||
| (message "Autoloaded function `%S' defined (%s)" | |||
| (quote ,f) | |||
| ,libpath) | |||
| (autoload (quote ,f) | |||
| ,libname | |||
| ,(concat "Autoloaded function defined in \"" | |||
| libpath | |||
| "\".") | |||
| t)))) | |||
| (or (eval functions) | |||
| `(,(eval feature))))) | |||
| (eval-after-load ,feature | |||
| (quote (progn | |||
| ,@body))) | |||
| (locate-library ,libname)))) | |||
| (when (autoload-eval-lazily 'tetris nil | |||
| (message "Tetris loaded!")) | |||
| (message "Tetris found!")) | |||
| ;; (defmacro autoload-eval-lazily (feature &optional functions &rest body) | |||
| ;; "Define autoloading FEATURE that defines FUNCTIONS. | |||
| ;; FEATURE is a symbol. FUNCTIONS is a list of symbols. If FUNCTIONS is nil, | |||
| ;; the function same as FEATURE is defined as autoloaded function. BODY is passed | |||
| ;; to `eval-after-load'. | |||
| ;; After this macro is expanded, this returns the path to library if FEATURE | |||
| ;; found, otherwise returns nil." | |||
| ;; (declare (indent 2) (debug t)) | |||
| ;; (let* ((libname (symbol-name (eval feature))) | |||
| ;; (libpath (locate-library libname))) | |||
| ;; `(progn | |||
| ;; (when (locate-library ,libname) | |||
| ;; ,@(mapcar (lambda (f) | |||
| ;; `(unless (fboundp ',f) | |||
| ;; (progn | |||
| ;; (message "Autoloaded function `%S' defined (%s)" | |||
| ;; (quote ,f) | |||
| ;; ,libpath) | |||
| ;; (autoload (quote ,f) | |||
| ;; ,libname | |||
| ;; ,(concat "Autoloaded function defined in \"" | |||
| ;; libpath | |||
| ;; "\".") | |||
| ;; t)))) | |||
| ;; (or (eval functions) | |||
| ;; `(,(eval feature))))) | |||
| ;; (eval-after-load ,feature | |||
| ;; (quote (progn | |||
| ;; ,@body))) | |||
| ;; (locate-library ,libname)))) | |||
| ;; (when (autoload-eval-lazily 'tetris nil | |||
| ;; (message "Tetris loaded!")) | |||
| ;; (message "Tetris found!")) | |||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
| ;; package | |||
| @@ -689,7 +688,7 @@ found, otherwise returns nil." | |||
| ": ")) | |||
| (prompt-text-mode 1)) | |||
| (autoload-eval-lazily 'helm nil | |||
| (with-eval-after-load 'helm | |||
| (defvar helm-map) | |||
| (define-key helm-map (kbd "C-h") (kbd "DEL"))) | |||
| @@ -1175,7 +1174,7 @@ found, otherwise returns nil." | |||
| '("\\.dtl\\'" . web-mode)) | |||
| ) | |||
| (when (autoload-eval-lazily 'wgrep) | |||
| (when (locate-library "wgrep") | |||
| (set-variable 'wgrep-auto-save-buffer t) | |||
| (with-eval-after-load 'grep | |||
| (defvar grep-mode-map) | |||
| @@ -1306,7 +1305,7 @@ found, otherwise returns nil." | |||
| (lambda () | |||
| (setq imenu-generic-expression | |||
| `(("Sections" ";;;\+\n;; \\(.*\\)\n" 1) | |||
| ,@imenu-generic-expression)))) | |||
| ,@imenu-generic-expression)))) | |||
| ;; TODO: Try paraedit http://daregada.blogspot.com/2012/03/paredit.html | |||
| (with-eval-after-load 'compile | |||
| @@ -1423,12 +1422,12 @@ found, otherwise returns nil." | |||
| ;; (when (fboundp 'flycheck-black-check-setup) | |||
| ;; (flycheck-black-check-setup))) | |||
| (when (autoload-eval-lazily 'ilookup) | |||
| (when (fboundp 'ilookup-open-word) | |||
| (define-key ctl-x-map "d" 'ilookup-open-word)) | |||
| (set-variable 'ac-ignore-case nil) | |||
| (when (autoload-eval-lazily 'term-run '(term-run-shell-command term-run)) | |||
| (when (fboundp 'term-run-shell-command) | |||
| (define-key ctl-x-map "t" 'term-run-shell-command)) | |||
| (add-to-list 'safe-local-variable-values | |||
| @@ -1522,18 +1521,16 @@ found, otherwise returns nil." | |||
| '(setq reb-re-syntax 'foreign-regexp) | |||
| )) | |||
| (autoload-eval-lazily 'sql '(sql-mode) | |||
| (with-eval-after-load 'sql | |||
| (require 'sql-indent nil t)) | |||
| (add-to-list 'auto-mode-alist | |||
| '("\\.hql\\'" . sql-mode)) | |||
| (when (autoload-eval-lazily 'git-command) | |||
| (when (fboundp 'git-command) | |||
| (define-key ctl-x-map "g" 'git-command)) | |||
| ;; This keybind cause unexpected call really many many times | |||
| ;; (when (autoload-eval-lazily 'gited) | |||
| ;; (define-key ctl-x-map (kbd "C-g") 'gited-list)) | |||
| (defalias 'gited 'gited-list) | |||
| (when (fboundp 'gited-list) | |||
| (defalias 'gited 'gited-list)) | |||
| (when (fboundp 'global-git-commit-mode) | |||
| (add-hook 'after-first-visit-hook | |||
| @@ -1542,8 +1539,6 @@ found, otherwise returns nil." | |||
| (add-hook 'git-commit-setup-hook | |||
| 'turn-off-auto-fill t)) | |||
| (autoload-eval-lazily 'sl) | |||
| (with-eval-after-load 'rst | |||
| (defvar rst-mode-map) | |||
| (define-key rst-mode-map (kbd "C-m") 'newline-and-indent)) | |||
| @@ -1557,7 +1552,7 @@ found, otherwise returns nil." | |||
| ;; Cannot enable error thrown. Why??? | |||
| ;; https://github.com/m0smith/malabar-mode#Installation | |||
| ;; (when (autoload-eval-lazily 'malabar-mode) | |||
| ;; (when (require 'malabar-mode nil t) | |||
| ;; (add-to-list 'load-path | |||
| ;; (expand-file-name (concat user-emacs-directory "/cedet"))) | |||
| ;; (require 'cedet-devel-load nil t) | |||
| @@ -1622,10 +1617,10 @@ found, otherwise returns nil." | |||
| (set-variable 'sh-here-document-word "__EOC__") | |||
| (when (autoload-eval-lazily 'adoc-mode | |||
| nil | |||
| (defvar adoc-mode-map (make-sparse-keymap)) | |||
| (define-key adoc-mode-map (kbd "C-m") 'newline)) | |||
| (with-eval-after-load 'adoc-mode | |||
| (defvar adoc-mode-map) | |||
| (define-key adoc-mode-map (kbd "C-m") 'newline)) | |||
| (when (fboundp 'adoc-mode) | |||
| (setq auto-mode-alist | |||
| `(("\\.adoc\\'" . adoc-mode) | |||
| ("\\.asciidoc\\'" . adoc-mode) | |||
| @@ -1640,12 +1635,13 @@ found, otherwise returns nil." | |||
| ) | |||
| ;; TODO: check if this is required | |||
| (when (autoload-eval-lazily 'groovy-mode nil | |||
| (defvar groovy-mode-map (make-sparse-keymap)) | |||
| (define-key groovy-mode-map "(" 'self-insert-command) | |||
| (define-key groovy-mode-map ")" 'self-insert-command) | |||
| (define-key groovy-mode-map (kbd "C-m") 'newline-and-indent) | |||
| ) | |||
| (with-eval-after-load 'groovy-mode | |||
| (defvar groovy-mode-map) | |||
| (define-key groovy-mode-map "(" 'self-insert-command) | |||
| (define-key groovy-mode-map ")" 'self-insert-command) | |||
| (define-key groovy-mode-map (kbd "C-m") 'newline-and-indent) | |||
| ) | |||
| (when (fboundp 'groovy-mode) | |||
| (add-to-list 'auto-mode-alist | |||
| '("build\\.gradle\\'" . groovy-mode))) | |||
| @@ -1664,7 +1660,7 @@ found, otherwise returns nil." | |||
| (with-eval-after-load 'text-mode | |||
| (define-key text-mode-map (kbd "C-m") 'newline)) | |||
| (autoload-eval-lazily 'info nil | |||
| (with-eval-after-load 'info | |||
| (defvar Info-additional-directory-list) | |||
| (dolist (dir (directory-files (concat user-emacs-directory | |||
| "info") | |||
| @@ -1713,16 +1709,13 @@ found, otherwise returns nil." | |||
| (add-to-list 'auto-mode-alist (cons "\\.ol\\'" 'outline-mode)) | |||
| (add-to-list 'auto-mode-alist (cons "\\.md\\'" 'outline-mode)) | |||
| (when (autoload-eval-lazily 'markdown-mode | |||
| '(markdown-mode gfm-mode) | |||
| (defvar gfm-mode-map (make-sparse-keymap)) | |||
| (define-key gfm-mode-map (kbd "C-m") 'electric-indent-just-newline) | |||
| (define-key gfm-mode-map "`" nil) ;; markdown-electric-backquote | |||
| ) | |||
| (with-eval-after-load 'markdown-mode | |||
| (defvar gfm-mode-map) | |||
| (define-key gfm-mode-map (kbd "C-m") 'electric-indent-just-newline) | |||
| (define-key gfm-mode-map "`" nil) ;; markdown-electric-backquote | |||
| ) | |||
| (when (fboundp 'gfm-mode) | |||
| (add-to-list 'auto-mode-alist (cons "\\.md\\'" 'gfm-mode)) | |||
| (set-variable 'markdown-command (or (executable-find "markdown") | |||
| (executable-find "markdown.pl") | |||
| "")) | |||
| (add-hook 'markdown-mode-hook | |||
| (lambda () | |||
| (outline-minor-mode 1) | |||
| @@ -1742,7 +1735,7 @@ found, otherwise returns nil." | |||
| (add-to-list 'c-default-style | |||
| '(c++-mode . "k&r"))) | |||
| (autoload-eval-lazily 'js2-mode nil | |||
| (with-eval-after-load 'js2-mode | |||
| ;; currently do not use js2-mode | |||
| ;; (add-to-list 'auto-mode-alist '("\\.js\\'" . js2-mode)) | |||
| ;; (add-to-list 'auto-mode-alist '("\\.jsm\\'" . js2-mode)) | |||
| @@ -1822,7 +1815,7 @@ found, otherwise returns nil." | |||
| (add-to-list 'auto-mode-alist | |||
| '("tox\\.ini\\'" . conf-unix-mode)) | |||
| (when (autoload-eval-lazily 'toml-mode) | |||
| (when (fboundp 'toml-mode) | |||
| (add-to-list 'auto-mode-alist | |||
| '("/tox\\.ini\\'" . toml-mode)) | |||
| (add-to-list 'auto-mode-alist | |||
| @@ -1831,7 +1824,7 @@ found, otherwise returns nil." | |||
| '("/poetry\\.lock\\'" . toml-mode)) | |||
| ) | |||
| (when (autoload-eval-lazily 'json-mode) | |||
| (when (fboundp 'json-mode) | |||
| (add-to-list 'auto-mode-alist | |||
| '("/Pipfile\\.lock\\'" . json-mode))) | |||
| @@ -1841,7 +1834,7 @@ found, otherwise returns nil." | |||
| (add-hook 'before-save-hook' 'gofmt-before-save nil t) | |||
| (define-key go-mode-map (kbd "M-.") 'godef-jump))) | |||
| (when (autoload-eval-lazily 'k8s-mode) | |||
| (when (fboundp 'k8s-mode) | |||
| (add-to-list 'auto-mode-alist | |||
| '("\\.k8s\\'" . k8s-mode))) | |||
| @@ -1854,29 +1847,30 @@ found, otherwise returns nil." | |||
| (declare-function bs-refresh "bs") | |||
| (declare-function bs-message-without-log "bs") | |||
| (declare-function bs--current-config-message "bs") | |||
| (when (autoload-eval-lazily 'bs '(bs-show) | |||
| (add-to-list 'bs-configurations | |||
| '("specials" "^\\*" nil ".*" nil nil)) | |||
| (add-to-list 'bs-configurations | |||
| '("files-and-specials" "^\\*" buffer-file-name ".*" nil nil)) | |||
| (defvar bs-mode-map) | |||
| (defvar bs-current-configuration) | |||
| (define-key bs-mode-map (kbd "t") | |||
| ;; TODO: fix toggle feature | |||
| (lambda () | |||
| (interactive) | |||
| (if (string= "specials" | |||
| bs-current-configuration) | |||
| (bs-set-configuration "files") | |||
| (bs-set-configuration "specials")) | |||
| (bs-refresh) | |||
| (bs-message-without-log "%s" | |||
| (bs--current-config-message)))) | |||
| ;; (setq bs-configurations (list | |||
| ;; '("processes" nil get-buffer-process ".*" nil nil) | |||
| ;; '("files-and-scratch" "^\\*scratch\\*$" nil nil | |||
| ;; bs-visits-non-file bs-sort-buffer-interns-are-last))) | |||
| ) | |||
| (with-eval-after-load 'bs | |||
| (add-to-list 'bs-configurations | |||
| '("specials" "^\\*" nil ".*" nil nil)) | |||
| (add-to-list 'bs-configurations | |||
| '("files-and-specials" "^\\*" buffer-file-name ".*" nil nil)) | |||
| (defvar bs-mode-map) | |||
| (defvar bs-current-configuration) | |||
| (define-key bs-mode-map (kbd "t") | |||
| ;; TODO: fix toggle feature | |||
| (lambda () | |||
| (interactive) | |||
| (if (string= "specials" | |||
| bs-current-configuration) | |||
| (bs-set-configuration "files") | |||
| (bs-set-configuration "specials")) | |||
| (bs-refresh) | |||
| (bs-message-without-log "%s" | |||
| (bs--current-config-message)))) | |||
| ;; (setq bs-configurations (list | |||
| ;; '("processes" nil get-buffer-process ".*" nil nil) | |||
| ;; '("files-and-scratch" "^\\*scratch\\*$" nil nil | |||
| ;; bs-visits-non-file bs-sort-buffer-interns-are-last))) | |||
| ) | |||
| (when (fboundp 'bs-show) | |||
| (defalias 'list-buffers 'bs-show) | |||
| (set-variable 'bs-default-configuration "files-and-specials") | |||
| (set-variable 'bs-default-sort-name "by nothing") | |||
| @@ -2132,12 +2126,12 @@ ARG is num to show, or defaults to 7." | |||
| (with-eval-after-load 'dired | |||
| (define-key dired-mode-map "P" 'pack-dired-dwim))) | |||
| (when (autoload-eval-lazily 'dired-list-all-mode) | |||
| (when (fboundp 'dired-list-all-mode) | |||
| (setq dired-listing-switches "-lhF") | |||
| (with-eval-after-load 'dired | |||
| (define-key dired-mode-map "a" 'dired-list-all-mode)))) | |||
| (when (autoload-eval-lazily 'dired-filter) | |||
| (when (fboundp 'dired-filter-mode) | |||
| (add-hook 'dired-mode-hook | |||
| 'dired-filter-mode)) | |||
| (set-variable 'dired-filter-stack nil) | |||