summaryrefslogtreecommitdiff
path: root/.emacs.d/lisp
diff options
context:
space:
mode:
Diffstat (limited to '.emacs.d/lisp')
-rw-r--r--.emacs.d/lisp/init-company.el1
-rw-r--r--.emacs.d/lisp/init-company.el~0
-rw-r--r--.emacs.d/lisp/init-elpa.el112
-rw-r--r--.emacs.d/lisp/init-elpa.el~0
-rw-r--r--.emacs.d/lisp/init-evil.el3
-rw-r--r--.emacs.d/lisp/init-evil.el~47
-rw-r--r--.emacs.d/lisp/init-expand-region.el2
-rw-r--r--.emacs.d/lisp/init-expand-region.el~8
-rw-r--r--.emacs.d/lisp/init-flycheck.el2
-rw-r--r--.emacs.d/lisp/init-flycheck.el~13
-rw-r--r--.emacs.d/lisp/init-helm.el1
-rw-r--r--.emacs.d/lisp/init-helm.el~15
-rw-r--r--.emacs.d/lisp/init-neotree.el2
-rw-r--r--.emacs.d/lisp/init-neotree.el~11
-rw-r--r--.emacs.d/lisp/init-org.el~55
-rw-r--r--.emacs.d/lisp/init-program-basic.el~53
-rw-r--r--.emacs.d/lisp/init-slime.el2
-rw-r--r--.emacs.d/lisp/init-slime.el~13
-rw-r--r--.emacs.d/lisp/init-window-numbering.el2
-rw-r--r--.emacs.d/lisp/init-window-numbering.el~3
20 files changed, 116 insertions, 229 deletions
diff --git a/.emacs.d/lisp/init-company.el b/.emacs.d/lisp/init-company.el
index c6579b4..df6dc5e 100644
--- a/.emacs.d/lisp/init-company.el
+++ b/.emacs.d/lisp/init-company.el
@@ -4,6 +4,7 @@
;;; Code:
+(package-install 'company)
(global-company-mode)
(provide 'init-company)
diff --git a/.emacs.d/lisp/init-company.el~ b/.emacs.d/lisp/init-company.el~
deleted file mode 100644
index e69de29..0000000
--- a/.emacs.d/lisp/init-company.el~
+++ /dev/null
diff --git a/.emacs.d/lisp/init-elpa.el b/.emacs.d/lisp/init-elpa.el
index 1430955..a6ee481 100644
--- a/.emacs.d/lisp/init-elpa.el
+++ b/.emacs.d/lisp/init-elpa.el
@@ -1,15 +1,113 @@
+;;; init-elpa.el --- Settings and helpers for package.el -*- lexical-binding: t -*-
+;;; Commentary:
+;;; Code:
-;;; elpa
+(require 'package)
-;;;
+
+;;; Install into separate package dirs for each Emacs version, to prevent bytecode incompatibility
+(let ((versioned-package-dir
+ (expand-file-name (format "elpa-%s.%s" emacs-major-version emacs-minor-version)
+ user-emacs-directory)))
+ (setq package-user-dir versioned-package-dir))
-;;;
-(require 'package)
-(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/"))
+
+;;; Standard package repositories
+
+(let* ((no-ssl (and (memq system-type '(windows-nt ms-dos))
+ (not (gnutls-available-p))))
+ (proto (if no-ssl "http" "https")))
+ (add-to-list 'package-archives (cons "melpa" (concat proto "://melpa.org/packages/")) t)
+ ;; Official MELPA Mirror, in case necessary.
+ ;;(add-to-list 'package-archives (cons "melpa-mirror" (concat proto "://www.mirrorservice.org/sites/melpa.org/packages/")) t)
+ (if (< emacs-major-version 24)
+ ;; For important compatibility libraries like cl-lib
+ (add-to-list 'package-archives '("gnu" . (concat proto "://elpa.gnu.org/packages/")))
+ (unless no-ssl
+ ;; Force SSL for GNU ELPA
+ (setcdr (assoc "gnu" package-archives) "https://elpa.gnu.org/packages/"))))
+
+
+;;; On-demand installation of packages
+
+(require 'cl-lib)
+
+(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."
+ (or (package-installed-p package min-version)
+ (let* ((known (cdr (assoc package package-archive-contents)))
+ (versions (mapcar #'package-desc-version known)))
+ (if (cl-find-if (lambda (v) (version-list-<= min-version v)) versions)
+ (package-install package)
+ (if no-refresh
+ (error "No version of %s >= %S is available" package min-version)
+ (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)))
+
+
+;;; Fire up package.el
+
+(setq package-enable-at-startup nil)
(package-initialize)
-(provide 'init-elpa)
-;;; init-elpa.el ends here
+
+;; package.el updates the saved version of package-selected-packages correctly only
+;; after custom-file has been loaded, which is a bug. We work around this by adding
+;; the required packages to package-selected-packages after startup is complete.
+(defvar sanityinc/required-packages nil)
+(defun sanityinc/note-selected-package (oldfun package &rest args)
+ "If OLDFUN reports PACKAGE was successfully installed, note it in `sanityinc/required-packages'."
+ (let ((available (apply oldfun package args)))
+ (prog1 available
+ (when (and available (boundp 'package-selected-packages))
+ (add-to-list 'sanityinc/required-packages package)))))
+
+(advice-add 'require-package :around 'sanityinc/note-selected-package)
+
+(when (fboundp 'package--save-selected-packages)
+ (require-package 'seq)
+ (add-hook 'after-init-hook
+ (lambda () (package--save-selected-packages
+ (seq-uniq (append sanityinc/required-packages package-selected-packages))))))
+
+
+(require-package 'fullframe)
+(fullframe list-packages quit-window)
+
+
+(defun sanityinc/set-tabulated-list-column-width (col-name width)
+ "Set any column with name COL-NAME to the given WIDTH."
+ (when (> width (length col-name))
+ (cl-loop for column across tabulated-list-format
+ when (string= col-name (car column))
+ do (setf (elt column 1) width))))
+
+(defun sanityinc/maybe-widen-package-menu-columns ()
+ "Widen some columns of the package menu table to avoid truncation."
+ (when (boundp 'tabulated-list-format)
+ (sanityinc/set-tabulated-list-column-width "Version" 13)
+ (let ((longest-archive-name (apply 'max (mapcar 'length (mapcar 'car package-archives)))))
+ (sanityinc/set-tabulated-list-column-width "Archive" longest-archive-name))))
+
+(add-hook 'package-menu-mode-hook 'sanityinc/maybe-widen-package-menu-columns)
+
+
+(provide 'init-elpa)
+;;; init-elpa.el ends here
diff --git a/.emacs.d/lisp/init-elpa.el~ b/.emacs.d/lisp/init-elpa.el~
deleted file mode 100644
index e69de29..0000000
--- a/.emacs.d/lisp/init-elpa.el~
+++ /dev/null
diff --git a/.emacs.d/lisp/init-evil.el b/.emacs.d/lisp/init-evil.el
index 7463dd0..cd57a7e 100644
--- a/.emacs.d/lisp/init-evil.el
+++ b/.emacs.d/lisp/init-evil.el
@@ -4,7 +4,8 @@
;;; Code:
-(package-install 'evil)
+(require-package 'evil)
+(require-package 'evil-leader)
;; Evil leader, more evil
(global-evil-leader-mode)
(require 'evil)
diff --git a/.emacs.d/lisp/init-evil.el~ b/.emacs.d/lisp/init-evil.el~
deleted file mode 100644
index 6e3ecbd..0000000
--- a/.emacs.d/lisp/init-evil.el~
+++ /dev/null
@@ -1,47 +0,0 @@
-;;; init-evil --- All config of evil-mode
-
-;;; Commentary:
-
-;;; Code:
-
-(package-install 'evil)
-;; Evil leader, more evil
-(global-evil-leader-mode)
-(require 'evil)
-(evil-mode 1)
-
-;; TODO function and keybinding to open file in new window
-;; TODO combined keybindings
-
-(evil-leader/set-leader ";")
-(evil-leader/set-key
- "ss" 'evil-scroll-line-down
- "s" 'save-buffer
- "c" 'execute-c-program
- "e" 'find-file
- "b" 'switch-to-buffer
- "q" 'quit-window
- "e" 'er/expand-region
- "f" 'google-search
- "t" 'test-function
-
- ;; switch window
- "0" 'select-window-0
- "1" 'select-window-1
- "2" 'select-window-2
- "3" 'select-window-3
- "4" 'select-window-4
- "5" 'select-window-5
- "6" 'select-window-6
- "7" 'select-window-7
- "8" 'select-window-8
- "9" 'select-window-9)
-
-(defun google-search ()
- (interactive)
- (let (url)
- (setq url (read-string "Enter search content:"))
- (browse-url-firefox (concat "https://www.google.com/search?q=" url))))
-
-(provide 'init-evil)
-;;; init-evil ends here
diff --git a/.emacs.d/lisp/init-expand-region.el b/.emacs.d/lisp/init-expand-region.el
index 05b3ac0..19064d2 100644
--- a/.emacs.d/lisp/init-expand-region.el
+++ b/.emacs.d/lisp/init-expand-region.el
@@ -4,7 +4,7 @@
;;; Code:
-(require 'expand-region)
+(require-package 'expand-region)
(provide 'init-expand-region)
;;; init-expand-region ends here
diff --git a/.emacs.d/lisp/init-expand-region.el~ b/.emacs.d/lisp/init-expand-region.el~
deleted file mode 100644
index fffd943..0000000
--- a/.emacs.d/lisp/init-expand-region.el~
+++ /dev/null
@@ -1,8 +0,0 @@
-;;; expand-region --- Configuration
-
-;;; Commentary:
-
-;;; Code:
-
-(provide 'init-expand-region)
-;;; init-expand-region ends here
diff --git a/.emacs.d/lisp/init-flycheck.el b/.emacs.d/lisp/init-flycheck.el
index d124711..8a7f546 100644
--- a/.emacs.d/lisp/init-flycheck.el
+++ b/.emacs.d/lisp/init-flycheck.el
@@ -4,7 +4,7 @@
;;; Code:
-(package-install 'flycheck)
+(require-package 'flycheck)
(global-flycheck-mode)
(setq flycheck-check-syntax-automatically '(mode-enabled save))
diff --git a/.emacs.d/lisp/init-flycheck.el~ b/.emacs.d/lisp/init-flycheck.el~
deleted file mode 100644
index d124711..0000000
--- a/.emacs.d/lisp/init-flycheck.el~
+++ /dev/null
@@ -1,13 +0,0 @@
-;;; flycheck --- All flycheck configuration
-
-;;; Commentary:
-
-;;; Code:
-
-(package-install 'flycheck)
-
-(global-flycheck-mode)
-(setq flycheck-check-syntax-automatically '(mode-enabled save))
-
-(provide 'init-flycheck)
-;;; init-flycheck ends here
diff --git a/.emacs.d/lisp/init-helm.el b/.emacs.d/lisp/init-helm.el
index 52708c1..0280565 100644
--- a/.emacs.d/lisp/init-helm.el
+++ b/.emacs.d/lisp/init-helm.el
@@ -4,6 +4,7 @@
;;; Code:
+(require-package 'helm)
(require 'helm-config)
(global-set-key (kbd "M-x") 'helm-M-x)
diff --git a/.emacs.d/lisp/init-helm.el~ b/.emacs.d/lisp/init-helm.el~
deleted file mode 100644
index 0353c64..0000000
--- a/.emacs.d/lisp/init-helm.el~
+++ /dev/null
@@ -1,15 +0,0 @@
-;;; helm --- Configuration
-
-;;; Commentary:
-
-;;; Code:
-
-(require 'helm-config)
-
-(global-set-key (kbd "M-x") 'helm-M-x)
-(global-set-key (kbd "C-x C-p") 'helm-find-files)
-
-(helm-mode 1)
-
-(provide 'init-helm)
-;;; init-helm ends here
diff --git a/.emacs.d/lisp/init-neotree.el b/.emacs.d/lisp/init-neotree.el
index d25e13f..a1ca271 100644
--- a/.emacs.d/lisp/init-neotree.el
+++ b/.emacs.d/lisp/init-neotree.el
@@ -4,6 +4,8 @@
;;; Code:
+(require-package 'neotree)
+
(global-unset-key (kbd "C-e"))
(global-set-key (kbd "C-x x") 'neotree-toggle)
diff --git a/.emacs.d/lisp/init-neotree.el~ b/.emacs.d/lisp/init-neotree.el~
deleted file mode 100644
index c035d14..0000000
--- a/.emacs.d/lisp/init-neotree.el~
+++ /dev/null
@@ -1,11 +0,0 @@
-;;; neotree --- Configuration
-
-;;; Commentary:
-
-;;; Code:
-
-(global-unset-key (kbd "C-e"))
-(global-set-key (kbd "C-e") 'neotree-toggle)
-
-(provide 'init-neotree)
-;;; init-neotree ends here
diff --git a/.emacs.d/lisp/init-org.el~ b/.emacs.d/lisp/init-org.el~
deleted file mode 100644
index bc818e9..0000000
--- a/.emacs.d/lisp/init-org.el~
+++ /dev/null
@@ -1,55 +0,0 @@
-;;; org --- All configuration of org-mode
-
-;;; Commentary:
-;; Mostly the pdf export configuration
-
-;;; Code:
-
-;; active Babel languages
-(org-babel-do-load-languages
- 'org-babel-load-languages
- '((sql . t)))
-;; add additional languages with '((language . t)))
-
-(setq org-latex-classes
- '(("article"
- "
- \\documentclass[11pt]{article}
- \\usepackage{xeCJK}
- \\usepackage{indentfirst}
- \\usepackage{amsmath}
- \\setlength{\\parindent}{2em}
- \\setCJKmainfont{SimSun}
- \\numberwithin{equation}{section}
- \\newtheorem{Theorem}{定理}[section]
- \\newtheorem{Definition}[Theorem]{定义}
- \\newtheorem{Lemma}[Theorem]{引理}
- \\newtheorem{Corollary}[Theorem]{推论}
- \\topmargin=-0.45in
- \\evensidemargin=0in
- \\oddsidemargin=0in
- \\textwidth=6.5in
- \\textheight=9.0in
- \\headsep=0.25in
-
- \\linespread{1.1}
- "
- ("\\section{%s}" . "\\section*{%s}")
- ("\\subsection{%s}" . "\\subsection*{%s}")
- ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
- ("\\paragraph{%s}" . "\\paragraph*{%s}")
- ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
- ))
-;; Use XeLaTex
-(setq org-latex-pdf-process
- '("xelatex -interaction nonstopmode -output-directory %o %f"
- "xelatex -interaction nonstopmode -output-directory %o %f"
- "xelatex -interaction nonstopmode -output-directory %o %f"))
-
-(setq org-log-done t)
-(setq org-agenda-files (list "~/org/work.org"
- "~/org/school.org"
- "~/org/home.org"
- "~/42/Personal/Plan/plan.org"))
-(provide 'init-org)
-;;; init-org ends here
diff --git a/.emacs.d/lisp/init-program-basic.el~ b/.emacs.d/lisp/init-program-basic.el~
deleted file mode 100644
index 04266aa..0000000
--- a/.emacs.d/lisp/init-program-basic.el~
+++ /dev/null
@@ -1,53 +0,0 @@
-;;; program-basic --- Some basic configuration
-
-;;; Commentary:
-;; None
-
-;;; Code:
-
-(setq-default c-basic-offset 4
- tab-width 4
- indent-tabs-mode t)
-
-(defun execute-c-program ()
- "Complie current c file and run it."
- (interactive)
- (save-buffer)
- (defvar foo)
- (setq foo (concat
- "gcc " (include-source-file (buffer-name)) " -o " (buffer-name) ".out && ./" (buffer-name) ".out" ))
- (shell-command foo))
-
-(defun include-source-file (file-path)
- "Get transfer all include header file from FILE-PATH to source file(string)."
- (let (content)
- (setq content (format "%s" (get-c-source-file (get-string-from-file file-path))))
- (if (string= nil content)
- file-path
- (substring content 1 -1))))
-
-(defun get-c-source-file (content)
- "Get the header list of a string CONTENT, for instant a .c file."
- (defun header-to-source (header)
- "Whole line of header"
- (replace-regexp-in-string "[.]h" ".c " (substring header 10 -1)))
- (let (value)
- (dolist (element (split-string content "\n" t) value)
- (if (string-prefix-p "#include \"" element)
- (setq value (cons (header-to-source element) value))))))
-
-
-(defun read-lines (file-path)
- "Return a list of lines of a file at FILE-PATH."
- (with-temp-buffer
- (insert-file-contents file-path)
- (split-string (buffer-string) "\n" t)))
-
-(defun get-string-from-file (file-path)
- "Return FILE-PATH's file content in list."
- (with-temp-buffer
- (insert-file-contents file-path)
- (buffer-string)))
-
-(provide 'init-program-basic)
-;;; init-program-basic ends here
diff --git a/.emacs.d/lisp/init-slime.el b/.emacs.d/lisp/init-slime.el
index 157f0ee..96c863a 100644
--- a/.emacs.d/lisp/init-slime.el
+++ b/.emacs.d/lisp/init-slime.el
@@ -4,7 +4,7 @@
;;; Code:
-(package-install 'slime)
+(require-package 'slime)
(setq inferior-lisp-program "/usr/bin/sbcl")
(setq slime-contribs '(slime-fancy))
diff --git a/.emacs.d/lisp/init-slime.el~ b/.emacs.d/lisp/init-slime.el~
deleted file mode 100644
index 28258b9..0000000
--- a/.emacs.d/lisp/init-slime.el~
+++ /dev/null
@@ -1,13 +0,0 @@
-;;; slime --- All slime configuration
-
-;;; Commentary:
-
-;;; Code:
-
-(package-install 'slime)
-
-(setq inferior-lisp-program "/opt/sbcl/bin/sbcl")
-(setq slime-contribs '(slime-fancy))
-
-(provide 'init-slime)
-;;; init-slime ends here
diff --git a/.emacs.d/lisp/init-window-numbering.el b/.emacs.d/lisp/init-window-numbering.el
index c8425ff..3fd48e0 100644
--- a/.emacs.d/lisp/init-window-numbering.el
+++ b/.emacs.d/lisp/init-window-numbering.el
@@ -4,6 +4,8 @@
;;; Code:
+(require-package 'window-numbering)
+
(window-numbering-mode)
(provide 'init-window-numbering)
diff --git a/.emacs.d/lisp/init-window-numbering.el~ b/.emacs.d/lisp/init-window-numbering.el~
deleted file mode 100644
index cb3ccc8..0000000
--- a/.emacs.d/lisp/init-window-numbering.el~
+++ /dev/null
@@ -1,3 +0,0 @@
-;;; window-numbering --- All configuration of window-numbering
-
-;;; C