diff --git a/.gitignore b/.gitignore index 118bd4190a3dba5019eb2c61d5eebf2ddb89932d..fed2ed820e16339f39c54cfe8331bc3e8a19275d 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ var/ .python-enviroment/ .cache custom.el +userconfig jdee-server/ abbrev_defs diff --git a/init.el b/init.el index 27c71bb0094d63ce6eef0901dfbbc6136cf6e42e..b544373e8cc619ebd39cd035391cacf9eab3ab30 100644 --- a/init.el +++ b/init.el @@ -15,314 +15,312 @@ (gc-cons-threshold most-positive-fixnum) (gc-cons-percentage 0.6)) -;; Use a hook so the messages doesn't get clobbered by other messages. -(add-hook 'emacs-startup-hook - (lambda () - (message "Emacs ready in %s with %d garbage collections." - (format "%.2f seconds" - (float-time - (time-subtract after-init-time before-init-time))) - gcs-done))) - -;; adjust garbage collection thresholds during startup, and thereafter -;; (add-hook 'emacs-startup-hook -;; (lambda () (setq gc-cons-threshold most-positive-fixnum) -;; (setq gc-cons-percentage 0.6))) - -;; extract different file for emacs -(setq custom-file (expand-file-name "custom.el" user-emacs-directory)) -(add-to-list 'load-path (expand-file-name "lisp" user-emacs-directory)) -(when (file-exists-p custom-file) - (load custom-file)) - -(require 'cl-lib) -;; Language and coding -(set-language-environment "utf-8") -(set-keyboard-coding-system 'utf-8) -(set-default-coding-systems 'utf-8) - -(defconst elpa-pack-dir - (expand-file-name "elpa" user-emacs-directory ) - "Packages install by package-initilize.") + ;; Use a hook so the messages doesn't get clobbered by other messages. + (add-hook 'emacs-startup-hook + (lambda () + (message "Emacs ready in %s with %d garbage collections." + (format "%.2f seconds" + (float-time + (time-subtract after-init-time before-init-time))) + gcs-done))) + + ;; adjust garbage collection thresholds during startup, and thereafter + ;; (add-hook 'emacs-startup-hook + ;; (lambda () (setq gc-cons-threshold most-positive-fixnum) + ;; (setq gc-cons-percentage 0.6))) + + ;; extract different file for emacs + (let (config-file (expand-file-name "cache/userconfig" user-emacs-directory)) + (when (file-exists-p config-file) + (load config-file))) + + (setq custom-file user/costom-file) + (when (file-exists-p custom-file) + (load custom-file)) + + (add-to-list 'load-path + (expand-file-name "lisp" user-emacs-directory)) + + (require 'cl-lib) + ;; Language and coding + (set-language-environment "utf-8") + (set-keyboard-coding-system 'utf-8) + (set-default-coding-systems 'utf-8) ;;; My Functions -(defun open-init-file() - "Find and open the init.el." - (interactive) - (find-file (concat user-emacs-directory "init.el"))) - -(defun load-init-file() - "Load init.el." - (interactive) - (load-file (concat user-emacs-directory "init.el")) - ) - - -(if (fboundp 'with-eval-after-load) - (defalias 'after-load 'with-eval-after-load) - (defmacro after-load (feature &rest body) - "After FEATURE is loaded, evaluate BODY." - (declare (indent defun)) - `(eval-after-load ,feature - '(progn ,@body)))) - - -(defun add-to-hook (fun hooks) - "Add FUN to HOOKS." - (dolist (hook hooks) - (add-hook hook fun))) - -(defun add-all-to-list (usr-list vars) - "USR-LIST get th VARS in." - (dolist (list vars) - (add-to-list usr-list list)) - ) + (defun open-init-file() + "Find and open the init.el." + (interactive) + (find-file (concat user-emacs-directory "init.el"))) + + (defun load-init-file() + "Load init.el." + (interactive) + (load-file (concat user-emacs-directory "init.el")) + ) + + + (if (fboundp 'with-eval-after-load) + (defalias 'after-load 'with-eval-after-load) + (defmacro after-load (feature &rest body) + "After FEATURE is loaded, evaluate BODY." + (declare (indent defun)) + `(eval-after-load ,feature + '(progn ,@body)))) + + + (defun add-to-hook (fun hooks) + "Add FUN to HOOKS." + (dolist (hook hooks) + (add-hook hook fun))) + + (defun add-all-to-list (usr-list vars) + "USR-LIST get th VARS in." + (dolist (list vars) + (add-to-list usr-list list)) + ) ;;; Basic -(setq-default make-backup-files nil ;; Don't make a backup file which end with "~" - visible-bell t ;; Flash the frame to represent a bell - auto-image-file-mode t - initial-scratch-message nil - inhibit-splash-screen t - column-number-mode nil - line-number-mode nil - initial-major-mode 'text-mode - frame-title-format "%b" - ) - -;; Set font -(set-frame-font "Source Code Pro 11" t t) + (setq-default make-backup-files nil ;; Don't make a backup file which end with "~" + visible-bell t ;; Flash the frame to represent a bell + auto-image-file-mode t + initial-scratch-message nil + inhibit-splash-screen t + column-number-mode nil + line-number-mode nil + initial-major-mode 'text-mode + frame-title-format "%b" + mode-line-format (list + "%e" ;; print error message + mode-line-front-space + '(:eval evil-mode-line-tag) ;; Show evil mode. + mode-line-mule-info mode-line-client mode-line-modified + mode-line-remote + mode-line-frame-identification mode-line-buffer-identification ;; buffer files + mode-line-modes ;; Major mode and some important minor modes. + " " + mode-line-position ;; position of this buffer + ;; " " + '(vc-mode vc-mode) ;; version control messages. + mode-line-misc-info mode-line-end-spaces)) + + ;; Set font + (set-frame-font "Source Code Pro 11" t t) ;;; Interface -(when (fboundp 'tool-bar-mode) - (tool-bar-mode -1)) -(when (fboundp 'set-scroll-bar-mode) - (set-scroll-bar-mode nil)) -(when (fboundp 'menu-bar-mode) - (menu-bar-mode -1)) -(show-paren-mode 1) -(delete-selection-mode 1) -(electric-pair-mode 1) -;; (popwin-mode 1) -(size-indication-mode t) -;; use y-n to replace yes-no -(fset 'yes-or-no-p 'y-or-n-p) - -;; Set the mode line. -(setq-default mode-line-format ;; set mode line - (list - "%e" ;; print error message - mode-line-front-space - '(:eval evil-mode-line-tag) ;; Show evil mode. - mode-line-mule-info mode-line-client mode-line-modified - mode-line-remote - mode-line-frame-identification mode-line-buffer-identification ;; buffer files - mode-line-modes ;; Major mode and some important minor modes. - " " - mode-line-position ;; position of this buffer - ;; " " - '(vc-mode vc-mode) ;; version control messages. - mode-line-misc-info mode-line-end-spaces)) - -(add-hook 'prog-mode-hook 'linum-mode) -(add-hook 'prog-mode-hook (lambda () (setq truncate-lines t))) + (when (fboundp 'tool-bar-mode) + (tool-bar-mode -1)) + (when (fboundp 'set-scroll-bar-mode) + (set-scroll-bar-mode nil)) + (when (fboundp 'menu-bar-mode) + (menu-bar-mode -1)) + (show-paren-mode 1) + (delete-selection-mode 1) + (electric-pair-mode 1) + ;; (popwin-mode 1) + (size-indication-mode t) + ;; use y-n to replace yes-no + (fset 'yes-or-no-p 'y-or-n-p) + + ;; Set the mode line. + (setq-default ) + + (add-hook 'prog-mode-hook 'linum-mode) + (add-hook 'prog-mode-hook (lambda () (setq truncate-lines t))) ;;; Packages -(require 'package) -(setq package--init-file-ensured t - package-enable-at-startup nil - package-archives '(("gnu" . "http://elpa.emacs-china.org/gnu/") - ("melpa" . "http://elpa.emacs-china.org/melpa/") - ("org" . "http://elpa.emacs-china.org/org/")) - ) + (require 'package) + (setq package--init-file-ensured t + package-enable-at-startup nil + package-archives 'emacs-china-package-mirror + ) -(if (< emacs-major-version 27.0) - (package-initialize) - ) -(or (package-installed-p 'use-package) - (progn - (package-refresh-contents) - (package-install 'use-package)) + (if (< emacs-major-version 27.0) + (package-initialize) ) + (or (package-installed-p 'use-package) + (progn + (package-refresh-contents) + (package-install 'use-package)) + ) ;;; Built-In packages -(use-package recentf - :defer 1 - :config - (setq recentf-save-file (expand-file-name "catch/recentf" user-emacs-directory)) - ) + (use-package recentf + :defer 1 + :config + (setq recentf-save-file (expand-file-name "catch/recentf" user-emacs-directory)) + ) -;; -(use-package saveplace - :hook (after-init . save-place-mode) - ) + ;; + (use-package saveplace + :hook (after-init . save-place-mode) + ) -(use-package subword - :hook (after-init . global-subword-mode) - :diminish subword-mode) + (use-package subword + :hook (after-init . global-subword-mode) + :diminish subword-mode) -(use-package winner-mode - :ensure nil - :hook (after-init . winner-mode)) + (use-package winner-mode + :ensure nil + :hook (after-init . winner-mode)) -(use-package autorevert - :ensure nil - :hook (after-init . global-auto-revert-mode)) + (use-package autorevert + :ensure nil + :hook (after-init . global-auto-revert-mode)) ;;; Completion -(use-package yasnippet - :ensure t - :init - (add-hook 'prog-mode-hook #'yas-minor-mode) - :config - (add-hook 'prog-mode-hook 'yas-reload-all) - :diminish yas-minor-mode -) - -(use-package yasnippet-snippets - :ensure t) - -(use-package company-mode - :ensure company - :hook prog-mode - :config - (setq company-idle-delay 0.2) - (setq company-minimum-prefix-length 2) - (setq tab-always-indent 'complete) - ;; (add-hook 'prog-mode-hook 'company-mode) - (setq-default company-backends (delete 'company-semantic company-backends)) - (push '(company-semantic :with company-yasnippet) company-backends) - :diminish company-mode - ) - -(use-package company-quickhelp - :ensure t - :defer company - :commands company-quickhelp-manual-begin - :bind (("C-c d" . 'company-quickhelp-manual-begin))) - -(use-package ivy - :ensure t - :diminish ivy-mode) - -(use-package swiper - :ensure t - :config - (ivy-mode 1) - (setq ivy-use-virtual-buffers t) - (setq enable-recursive-minibuffers t) - :bind - (("C-s" . 'swiper) - ) - ) - -(use-package counsel - :ensure t - :config - :bind - (("M-x" . 'counsel-M-x) - ("C-h f" . 'counsel-describe-function) - ("C-h v" . 'counsel-describe-variable) - ) - ) - -(use-package snails - :load-path "lisp/snails" - :bind (("C-c s s" . 'snails)) - ) - -(use-package window-jump - :ensure t - :bind - (("C-c w l" . 'window-jump-right) - ("C-c w h" . 'window-jump-left) - ("C-c w k" . 'window-jump-up) - ("C-c w j" . 'window-jump-down) - ("C-c w 2" . 'split-window-right) - ("C-c w 0" . 'delete-window) - ("C-c w 1" . 'delete-other-windows) - )) - -(use-package popwin - :ensure t) - - -;; Projectile------------------------------------------------------------------------ -(use-package counsel-projectile - :ensure t) -(use-package projectile - :ensure t - :config - (projectile-mode +1) - :diminish projectile-mode - :bind (("C-c p f" . 'counsel-projectile-find-file) - ("C-c p p" . 'counsel-projectile-switch-project) - ("C-c p b" . 'counsel-projectile-switch-to-buffer) - ("C-c p k" . 'projectile-kill-buffers)) - ) - -;; Version Control========================================================================= -(use-package magit - :ensure t - :bind (("C-c g s" . 'magit-status) - ("C-c g d" . 'magit-diff-range) - ) - ) -;;========================================================================================= - - -;;------------------------------------------------------------------------------------- -(use-package diminish - :ensure t) -(defun hide-minor-mode () - "This function hide HIDED-LIST from the modeline to save the space of modeline." - (let ((dim-list - ;; minor modes list followed will not show in the mode line. - '(abbrev-mode org-autolist-mode hs-minor-mode auto-revert-mode - hs-minor-mode image-mode iimage-mode visual-line-mode - eldoc-mode undo-tree-mode)) - ) - (dolist (list dim-list) - (diminish list))) - ) -(add-hook 'after-init-hook 'hide-minor-mode) -(add-hook 'find-file-hook (lambda () (hide-minor-mode))) + (use-package yasnippet + :ensure t + :init + (add-hook 'prog-mode-hook #'yas-minor-mode) + :config + (add-hook 'prog-mode-hook 'yas-reload-all) + :diminish yas-minor-mode + ) + + (use-package yasnippet-snippets + :ensure t) + + (use-package company-mode + :ensure company + :hook prog-mode + :config + (setq company-idle-delay 0.2) + (setq company-minimum-prefix-length 2) + (setq tab-always-indent 'complete) + ;; (add-hook 'prog-mode-hook 'company-mode) + (setq-default company-backends (delete 'company-semantic company-backends)) + (push '(company-semantic :with company-yasnippet) company-backends) + :diminish company-mode + ) + + (use-package company-quickhelp + :ensure t + :defer company + :commands company-quickhelp-manual-begin + :bind (("C-c d" . 'company-quickhelp-manual-begin))) + + (use-package ivy + :ensure t + :diminish ivy-mode) + + (use-package swiper + :ensure t + :config + (ivy-mode 1) + (setq ivy-use-virtual-buffers t) + (setq enable-recursive-minibuffers t) + :bind + (("C-s" . 'swiper) + ) + ) + + (use-package counsel + :ensure t + :config + :bind + (("M-x" . 'counsel-M-x) + ("C-h f" . 'counsel-describe-function) + ("C-h v" . 'counsel-describe-variable) + ) + ) + + (use-package snails + :load-path "lisp/snails" + :bind (("C-c s s" . 'snails)) + ) + + (use-package window-jump + :ensure t + :bind + (("C-c w l" . 'window-jump-right) + ("C-c w h" . 'window-jump-left) + ("C-c w k" . 'window-jump-up) + ("C-c w j" . 'window-jump-down) + ("C-c w 2" . 'split-window-right) + ("C-c w 0" . 'delete-window) + ("C-c w 1" . 'delete-other-windows) + )) + + (use-package popwin + :ensure t) + + + ;; Projectile------------------------------------------------------------------------ + (use-package counsel-projectile + :ensure t) + (use-package projectile + :ensure t + :config + (projectile-mode +1) + :diminish projectile-mode + :bind (("C-c p f" . 'counsel-projectile-find-file) + ("C-c p p" . 'counsel-projectile-switch-project) + ("C-c p b" . 'counsel-projectile-switch-to-buffer) + ("C-c p k" . 'projectile-kill-buffers)) + ) + + ;; Version Control========================================================================= + (use-package magit + :ensure t + :bind (("C-c g s" . 'magit-status) + ("C-c g d" . 'magit-diff-range) + ) + ) + ;;========================================================================================= + + + ;;------------------------------------------------------------------------------------- + (use-package diminish + :ensure t) + (defun hide-minor-mode () + "This function hide HIDED-LIST from the modeline to save the space of modeline." + (let ((dim-list + ;; minor modes list followed will not show in the mode line. + '(abbrev-mode org-autolist-mode hs-minor-mode auto-revert-mode + hs-minor-mode image-mode iimage-mode visual-line-mode + eldoc-mode undo-tree-mode)) + ) + (dolist (list dim-list) + (diminish list))) + ) + (add-hook 'after-init-hook 'hide-minor-mode) + (add-hook 'find-file-hook (lambda () (hide-minor-mode))) ;;; Deft -(use-package deft - :ensure t - :config - (setq-default deft-extensions '("org") - deft-directory "~/notebook" - deft-recursive t - )) + (use-package deft + :ensure t + :config + (setq-default deft-extensions '("org") + deft-directory user/notes-dir + deft-recursive t + )) ;;; youdao-dict -(use-package youdao-dictionary - :ensure t - :bind (("C-c o y" . 'youdao-dictionary-search-at-point+)) - ) + (use-package youdao-dictionary + :ensure t + :bind (("C-c o y" . 'youdao-dictionary-search-at-point+)) + ) ;;; Keybinding -(use-package evil - :ensure t) -(use-package evil-leader - :ensure t) - -(use-package which-key - :ensure t - :init - (which-key-mode) - :config - :diminish which-key-mode - ) -(require 'keybindings) -(require 'prog-common) -(require 'prog-c-cpp) -(require 'prog-python) -(require 'prog-haskell) -(require 'init-org) -) + (use-package evil + :ensure t) + (use-package evil-leader + :ensure t) + + (use-package which-key + :ensure t + :init + (which-key-mode) + :config + :diminish which-key-mode + ) + (require 'keybindings) + (require 'prog-common) + (require 'prog-c-cpp) + (require 'prog-python) + (require 'prog-haskell) + (require 'init-org)) (provide 'init) ;;; init.el ends here