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