From 5d199eb9aa9819b18493a363975f1dc0e4f279ba Mon Sep 17 00:00:00 2001 From: MoScribe <liumiaogemini@foxmail.com> Date: Tue, 19 May 2020 02:01:43 +0800 Subject: [PATCH] for basic use --- init.el | 371 ++++++++++------------------------------------ lisp/c-cpp-dev.el | 153 ------------------- 2 files changed, 82 insertions(+), 442 deletions(-) delete mode 100644 lisp/c-cpp-dev.el diff --git a/init.el b/init.el index 6ad3879..69c74b3 100644 --- a/init.el +++ b/init.el @@ -8,7 +8,7 @@ ;;; Code: ;;====================================================================================== -(setq debug-on-error t) +;; (setq debug-on-error t) ;; Use a hook so the messages doesn't get clobbered by other messages. (add-hook 'emacs-startup-hook @@ -36,10 +36,6 @@ (set-keyboard-coding-system 'utf-8) (set-default-coding-systems 'utf-8) -;; consts============================================================================== -(defconst *is-a-linux* (eq system-type 'gnu/linux)) -(defconst *is-a-win* (eq system-type 'windows-nt)) -(defconst *is-a-mac* (eq system-type 'darwin)) (defconst elpa-pack-dir (expand-file-name "elpa" user-emacs-directory ) "Packages install by package-initilize.") @@ -65,20 +61,6 @@ (load-file (concat user-emacs-directory "init.el")) ) -;;; Rename the current file -(defun rename-this-file-and-buffer (new-name) - "Rename both current buffer and file it's visiting to NEW-NAME." - (interactive "sNew name: ") - (let ((name (buffer-name)) - (filename (buffer-file-name))) - (unless filename - (error "Buffer '%s' is not visiting a file! " name)) - (progn - (when (file-exists-p filename) - (rename-file filename new-name 1)) - (set-visited-file-name new-name) - (rename-buffer new-name)) - )) (if (fboundp 'with-eval-after-load) (defalias 'after-load 'with-eval-after-load) @@ -101,43 +83,6 @@ (add-to-list usr-list list)) ) -;;; On-demand installation of packages----------------------------------- -(defun require-package (package &optional min-version no-refresh) - "Install given PACKAGE, optionally requiring MIN-VERSION. -If NO-REFRESH is non-nil, the available package lists will not be -re-downloaded in order to locate PACKAGE." - (if (package-installed-p package min-version) - t - (if (or (assoc package package-archive-contents) no-refresh) - (if (boundp 'package-selected-packages) - ;; Record this as a package the user installed explicitly - (package-install package nil) - (package-install package)) - (progn - (package-refresh-contents) - (require-package package min-version t))))) - - -(defun maybe-require-package (package &optional min-version no-refresh) - "Try to install PACKAGE, and return non-nil if successful. -In the event of failure, return nil and print a warning message. -Optionally require MIN-VERSION. If NO-REFRESH is non-nil, the -available package lists will not be re-downloaded in order to -locate PACKAGE." - (condition-case err - (require-package package min-version no-refresh) - (error - (message "Couldn't install optional package `%s': %S" package err) - nil))) - -(defun install-pack-list (pack-list &optional is-maybe) - "Install all the package in PACK-LIST. -If IS-MAYBE is t then maybe install these packages." - (dolist (pack pack-list) - (if (eq is-maybe t) - (maybe-require-package pack) - (require-package pack)))) - ;;; 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 @@ -154,8 +99,42 @@ If IS-MAYBE is t then maybe install these packages." (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))) + ;;; Packages=============================================================================== -(setq ;; package--init-file-ensured t +(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/") @@ -167,24 +146,9 @@ If IS-MAYBE is t then maybe install these packages." ) ;;--------------------------------------------------------------------------------------- -;;; Install some basic packages. -(let ((basic-edit-pack-list - '(dash swiper youdao-dictionary deft - window-jump avy avy-menu counsel use-package undo-tree multi-term - cnfonts powerline atom-one-dark-theme diminish list-utils - company company-quickhelp cl-lib helm helm-describe-modes yasnippet - treemacs popwin pdf-tools projectile hl-todo smex zeal-at-point spacemacs-theme - tao-theme helpful - ))) - (install-pack-list basic-edit-pack-list)) - ;;; Completion============================================================================= -(let ((completion-pack-list - '(company company-quickhelp))) - (install-pack-list completion-pack-list t)) - -;; Company--------------------------------------------------------------------------------- (use-package company + :ensure t :config (setq company-idle-delay 0.2) (setq company-minimum-prefix-length 2) @@ -195,12 +159,14 @@ If IS-MAYBE is t then maybe install these packages." :diminish company-mode ) (use-package company-quickhelp + :ensure t :defer company :commands company-quickhelp-manual-begin :bind (("C-c d" . 'company-quickhelp-manual-begin))) ;; YASnippte (use-package yasnippet + :ensure t :init (add-hook 'prog-mode-hook #'yas-minor-mode) :config @@ -209,17 +175,15 @@ If IS-MAYBE is t then maybe install these packages." ) ;; Helm------------------------------------------------------------------------------------ -(let ((helm-pack-list - '(helm helm-swoop helm-xref helm-gtags helm-ls-git - helm-dash helm-projectile))) - (install-pack-list helm-pack-list t)) - -(use-package popwin) +(use-package popwin + :ensure t) (use-package helm-xref + :ensure t ) (use-package helm-swoop + :ensure t :init (progn (setq @@ -228,6 +192,7 @@ If IS-MAYBE is t then maybe install these packages." helm-swoop-split-direction 'split-window-vertically))) (use-package helm + :ensure t :config (helm-mode 1) (popwin-mode 1) @@ -244,27 +209,17 @@ If IS-MAYBE is t then maybe install these packages." ("C-c s s" . 'helm-swoop-without-pre-input) ("C-c s r" . 'helm-swoop) ("C-x b" . 'helm-mini) - ("C-c h d" . 'helm-dash) ("C-c h i" . 'helm-semantic-or-imenu) ("C-c h f" . 'helm-flycheck) - ("C-c h t" . 'helm-gtags-find-tag-from-here) - ("C-c h T" . 'helm-gtags-find-tag-other-window) - ("C-c h r" . 'helm-gtags-find-rtag) ) :diminish helm-mode) -(use-package helpful - :bind (("C-h k" . helpful-key) - ("C-h f" . helpful-function) - ("C-h v" . helpful-variable) - ("C-c hh" . helpful-at-point)) - :commands (helpful-callable helpful-variable) - :init - (add-to-list 'popwin:special-display-config - '("*.*helpful.*" :regexp t :position bottom :dedicated t))) - ;; Projectile------------------------------------------------------------------------ +(use-package helm-projectile + :ensure t) + (use-package projectile + :ensure t :init (helm-projectile-on) :config @@ -278,51 +233,18 @@ If IS-MAYBE is t then maybe install these packages." :defer 1) ;; Version Control========================================================================= -(let ((vc-pack-list - '(evil-magit gitconfig-mode gitconfig-mode git-commit magit magit-gitflow orgit))) - (install-pack-list vc-pack-list)) (use-package magit + :ensure t :bind (("C-c g s" . 'magit-status) ("C-c g d" . 'magit-diff-range) ) ) ;;========================================================================================= -;;; 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))) ;;------------------------------------------------------------------------------------- +(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 @@ -337,179 +259,54 @@ If IS-MAYBE is t then maybe install these packages." (add-hook 'after-init-hook 'hide-minor-mode) (add-hook 'find-file-hook (lambda () (hide-minor-mode))) -;;; hl TODO mode --------------------------------------------------------------------- -(use-package hl-todo - :init - (global-hl-todo-mode) - :bind (("C-c t p" . 'hl-todo-previous) - ("C-c t n" . 'hl-todo-next) - ("C-c t o" . 'hl-todo-occur) - ("C-c t i" . 'hl-todo-insert))) -(add-to-list 'popwin:special-display-config - '("Occur" :regexp t :position bottom)) - ;;; Deft============================================================================== -(setq-default deft-extensions '("org") - deft-directory "~/notebook" - deft-recursive t - ) +(use-package deft + :ensure t + :config + (setq-default deft-extensions '("org") + deft-directory "~/notebook" + deft-recursive t + )) ;;; youdao-dict----------------------------------------------------------------------- (use-package youdao-dictionary + :ensure t :bind (("C-c o y" . 'youdao-dictionary-search-at-point+)) ) -;;; Org mode========================================================================== -(let ((org-mode-pack-list - '(org evil-org helm-org-rifle org-pomodoro gnuplot htmlize org-present - org-projectile org-autolist))) - (install-pack-list org-mode-pack-list t)) -(require 'use-org) -(use-package org - :mode ("\\.org\\'" . org-mode) - :init - (setq org-log-done t - org-edit-timestamp-down-means-later t - org-export-coding-system 'utf-8 - org-catch-invisible-edits 'show - org-tags-column 80 - ) - (add-hook 'org-mode-hook '(lambda () - (setq truncate-lines nil))) - (add-hook 'org-mode-hook 'iimage-mode) - (add-hook 'org-mode-hook 'visual-line-mode) - (add-hook 'org-mode-hook 'org-autolist-mode) - (use-package ox-latex - :config - (add-all-to-list 'org-latex-classes org-user-latex-class) - ) - ) -(add-hook 'org-mode-hook '(lambda () - (dolist (charset '(kana han cjk-misc bopomofo chinese-gbk)) - (set-fontset-font (frame-parameter nil 'font) charset - (font-spec :family "Noto Sans Mono CJK SC Regular" - :size 18))))) - -;;; markdown mode -(use-package markdown-mode - :commands (markdown-mode gfm-mode) - :mode (("README\\.md\\'" . gfm-mode) - ("\\.md\\'" . markdown-mode) - ("\\.markdown\\'" . markdown-mode)) - ) - -;;; Writing room mode -(use-package writeroom-mode - :bind ("C-c wr" . writeroom-mode) - :init - (setq writeroom-width 120)) -;;==================================================================================== - - - ;;; Program=========================================================================== ;; Flycheck -(require-package 'flycheck) (use-package flycheck-mode + :ensure flycheck :hook prog-mode) -;; hs-minor-mode -(use-package hs-minor-mode - :hook prog-mode) - -;; LSP - - -;; c/cpp mode------------------------------------------------------------------------ -(let ((c-cpp-packages - '(cc-mode clang-format company company-c-headers company-ycmd disaster - flycheck semantic ycmd - ))) - (dolist (c-cpp-pkg c-cpp-packages) - (require-package c-cpp-pkg)) +(use-package helm-flycheck + :ensure t ) +;; hs-minor-mode -(use-package clang-format - ) - -;; (use-package disaster -;; ) - -;; emacs-lisp------------------------------------------------------------------------ -(let ((elisp-pack-dev - '(lispy))) - (install-pack-list elisp-pack-dev)) - -(use-package eldoc-mode - :hook emacs-lisp-mode - :diminish eldoc-mode - :config) - -(use-package lispy-mode - :hook emacs-lisp-mode - :diminish lispy) - -;; python---------------------------------------------------------------------------- -(let ((python-dev-pack - '(anaconda-mode cython-mode eldoc live-py-mode pip-requirements py-isort - pyenv-mode pytest pyvenv helm-pydoc))) - (install-pack-list python-dev-pack t)) - - -(use-package live-py-mode - :commands live-py-mode - :init) - -(use-package pyvenv - :init - ) - -(use-package pytest - :commands(pytest-one - pytest-pdb-one - pytest-all - pytest-pdb-all - pytest-module - pytest-pdb-module)) - -(defun python-shell-send-buffer-switch () - "Send buffer content to shell and switch to it in insert mode." - (interactive) - (python-shell-send-buffer) - (python-shell-switch-to-shell) - (evil-insert-state)) - -(defun python-execute-file (arg) - "Execute a python script in a shell with ARG." - (interactive "P") - ;; set compile command to buffer-file-name - ;; universal argument put compile buffer in comint mode - (let ((universal-argument t) - (compile-command (format "python %s" (file-name-nondirectory - buffer-file-name)))) - (if arg - (call-interactively 'compile) - (compile compile-command t) - (with-current-buffer (get-buffer "*compilation*") - (inferior-python-mode))))) +;;; LSP +(use-package nox + :load-path "lisp/nox" + :config + (add-to-list 'nox-server-programs + `(python-mode . ("pyls" "-v" "--tcp" "--host" + "localhost" "--port" :autoport))) + (dolist (hook (list + 'python-mode-hook + 'c-mode-hook + 'c-mode-common-hook + 'c++-mode-hook + 'haskell-mode-hook)) + (add-hook hook '(lambda () (nox-ensure))))) ;;; Keybinding======================================================================== -(let ((key-pack-list - '(evil evil-anzu evil-args evil-cleverparens evil-escape evil-exchange - evil-goggles evil-iedit-state evil-indent-plus evil-lion evil-lisp-state - evil-mc evil-nerd-commenter evil-matchit evil-numbers evil-surround - evil-tutor - evil-leader - ;; (evil-unimpaired :location (recipe :fetcher local)) - evil-visual-mark-mode - evil-visualstar - ;; (hs-minor-mode :location built-in) - ;; (linum-relative :toggle (version< emacs-version "26")) - which-key - ))) - (dolist (pack key-pack-list) - (require-package pack))) +(use-package evil + :ensure t) +(use-package evil-leader + :ensure t) (use-package which-key + :ensure t :init (which-key-mode) :config @@ -530,10 +327,6 @@ If IS-MAYBE is t then maybe install these packages." "s r" 'helm-swoop "h i" 'helm-semantic-or-imenu "h f" 'helm-flycheck - "h d" 'helm-dash - "h t" 'helm-gtags-find-tag-from-here - "h T" 'helm-gtags-find-tag-other-window - "h r" 'helm-gtags-find-rtag ;; buffer "b d" 'kill-current-buffer "b k" 'kill-buffer diff --git a/lisp/c-cpp-dev.el b/lisp/c-cpp-dev.el deleted file mode 100644 index d8bb68a..0000000 --- a/lisp/c-cpp-dev.el +++ /dev/null @@ -1,153 +0,0 @@ -;;; init-c-c++-mode.el --- emacs c and c++ mode -;;; Commentary: - -;;; Code: -;; package init -(defvar c-cpp-packages) -(defvar usr-include-path) -(defconst *is-a-linux* (eq system-type 'gnu/linux)) -(defconst *is-a-win* (eq system-type 'windows-nt)) - -(setq c-cpp-packages - '(cc-mode - clang-format - company - company-c-headers - company-ycmd - disaster - flycheck - semantic - ycmd - )) - -(dolist (c-cpp-pkg c-cpp-packages) - (require-package c-cpp-pkg)) - -;;; End with package init and start code -(require 'semantic) -(require 'company) -(require 'company-c-headers) - -(when *is-a-linux* - (setq usr-include-path - '("/usr/include/c++5.4.0"))) -(when *is-a-win* - (setq usr-include-path - '( - "C:\\Program Files\\mingw-w64\\mingw64\\x86_64-w64-mingw32\\include" - "C:\\Program Files\\mingw-w64\\mingw64\\include" - "C:\\Program Files\\mingw-w64\\mingw64\\lib\\gcc\\x86_64-w64-mingw32\\7.3.0\\include" - "C:\\Program Files\\mingw-w64\\mingw64\\lib\\gcc\\x86_64-w64-mingw32\\7.3.0\\include\\c++" - ))) - - -(defun c-cpp/cc-mode () - "Init cc mode for my Emacs." - (use-package cc-mode - :defer t - :init - (progn - (add-to-list 'auto-mode-alist - `("\\.h\\'" . ,'c++-mode))) - :config - (progn - (require 'compile) -;; (c-toggle-auto-newline 1) - ;; Disable electric indentation - (setq-default c-electric-flag nil) - - (setq c-basic-offset 4) - - (setq c-default-style '((java-mode . "java") - (other . "linux"))) - -;; (add-to-list 'c-cleanup-list 'space-before-funcall) - (add-to-list 'c-cleanup-list 'compact-empty-funcall) - (add-to-list 'c-cleanup-list 'comment-close-slash) - )) - ) - -(defun c-cpp/clang-format () - "A clang-format package initilize." - (use-package clang-format - :init - - )) - -(defun c-cpp/company () - "Company mode at c/cpp mode." - - (defun company-mode/more-than-prefix-gusser () - (c-cpp/load-clang-args) - (company-clang-guess-prefix) - ) - - (add-to-list 'company-backends 'company-c-headers) - (add-all-to-list 'company-c-headers-path-system usr-include-path) - ) - -(defun c-cpp/disaster () - "Disaster package only can be used at *nix." - (use-package disaster - :defer t - :commands (disaster) - :init - (progn - (define-key c-mode-base-map (kbd "C-c d") 'disaster)) - )) - -(defun c-cpp/flycheck () - "Check the syntax error in c/cpp mode." - (dolist (mode '(c-mode cpp-mode)) - )) - - -(defun c-cpp/gdb () - "GNU Debuger initilize." - (use-package gdb-mi - :defer t - :init - (setq - ;; use gdb-many-windows by default - gdb-many-windows t - gdb-show-main t - )) - ) - -(defun c-cpp/semantic() - "Active semantic mode at c/cpp." - (add-to-hook 'semantic-mode '(c-mode-hook c++-mode-hook)) - ) - -(defun c-cpp/ycmd () - "Initilize ycmd mode in c/cpp mode." - (add-hook 'c++-mode-hook 'ycmd-mode) - (add-hook 'c-mode-hook 'ycmd-mode) - ) - -(defun active-c-cpp-mode () - "Active functions related to c-cpp mode." - (c-cpp/cc-mode) - (c-cpp/clang-format) - (c-cpp/company) - (c-cpp/disaster) - (c-cpp/flycheck) - (c-cpp/gdb) - (c-cpp/semantic) -;; (c-cpp/ycmd) - ) - - -(add-hook 'c-mode-hook 'active-c-cpp-mode) -(add-hook 'c++-mode-hook 'active-c-cpp-mode) -;;(add-hook 'c-mode-hook 'c-cpp/company) -;;(add-hook 'c-mode-hook 'c-cpp/cc-mode) -;;(add-hook 'c-mode-hook 'c-cpp/flycheck) -;;(add-hook 'c-mode-hook 'c-cpp/clang-format) -;;(add-hook 'c-mode-hook 'c-cpp/gdb) -;;(add-hook 'c-mode-hook 'c-cpp/semantic) -;;(add-hook 'c-mode-hook 'c-cpp/ycmd) - - -(provide 'c-cpp-dev) -;;; c-cpp-dev.el ends here -- GitLab