Emacs 初级配置

From 清冽之泉
Jump to navigation Jump to search

basic

 1(set-language-environment "UTF-8")
 2(set-default-coding-systems 'utf-8-unix)
 3;; (setq package-archives '(("gnu"   . "http://1.15.88.122/gnu/")
 4;;                          ("melpa" . "http://1.15.88.122/melpa/")))
 5
 6;; (set-face-attribute 'default nil :font "DejaVu Serif:pixelsize=30")
 7;; (set-fontset-font t 'han "TW-MOE-Std-Kai:pixelsize=30")
 8;; (set-fontset-font t 'han "WenQuanYi Zen Hei:pixelsize=25" nil 'append)
 9;; DejaVu Serif, TW-MOE-Std-Kai, WenQuanYi Micro Hei
10(set-fontset-font t 'han "WenQuanYi Micro Hei:pixelsize=20")

onoff

 1(setq inhibit-splash-screen t)
 2(setq make-backup-files nil)
 3(setq create-lockfiles nil)
 4(menu-bar-mode -1)
 5(tool-bar-mode -1)
 6(scroll-bar-mode -1)
 7(setq custom-enabled-themes '(sanityinc-tomorrow-day))
 8
 9(setq suggest-key-bindings 10) ;十秒后建议才消失
10(show-paren-mode) ;显示对应括号
11(electric-pair-mode) ;自动右括号
12(delete-selection-mode t)
13
14(global-auto-revert-mode t)
15(global-visual-line-mode t)

packages

 1;; List the packages want to install
 2(setq package-list '(
 3		     benchmark-init
 4		     use-package
 5		     which-key
 6		     company
 7		     magit
 8		     yaml-mode
 9		     yasnippet
10		     smart-compile
11		     markdown-mode
12		     lsp-mode
13		     sdcv
14
15		     ;; auctex
16		     ;; let-alist ;; for pdf-tools
17		     ;; tablist   ;; for pdf-tools
18		     ;; cask      ;; for pdf-tools
19		     ;; pdf-tools
20		     ;; youdao-dictionary
21
22		     ;; Opt
23		     ;; ace-window
24		     web-mode
25		     projectile
26		     htmlize
27		     edit-server
28		     mediawiki
29		     ))
30
31(unless package-archive-contents
32  (package-refresh-contents))
33
34;; Install the missing packages
35(dolist (package package-list)
36  (unless (package-installed-p package)
37    (package-install package)))
38
39;; (pdf-tools-install)

alias

 1(defalias 'yes-or-no-p 'y-or-n-p)
 2(defalias 'qr 'query-replace)
 3(defalias 'rr 'replace-regexp)
 4(defalias 'bs 'bookmark-set)
 5(defalias 'bj 'bookmark-jump)
 6(defalias 'dc 'describe-char)
 7(defalias 'sl 'sort-lines)
 8(defalias 'cr 'comment-region)
 9(defalias 'ur 'uncomment-region)
10(defalias 'lm 'list-matching-lines)
11(defalias 'md 'edit-server-done)
12(defalias 'sd 'server-edit 1)

defun

q-open-init-file

1(defun q-open-init-file()
2  (interactive)
3  (dired "~/.emacs.d/lisp/"))

say-ok-after-server-edit

 1;; 抄自 https://www.emacswiki.org/emacs/YesOrNoP,负作用不详,symbol-function 不懂
 2;; 作用为:建议server-edit函数执行后的询问是否保存,一概选是
 3;; (defadvice server-edit (around auto-confirm compile activate)
 4  ;; (cl-letf (((symbol-function 'yes-or-no-p) (lambda (&rest args) t))
 5  ;;           ((symbol-function 'y-or-n-p) (lambda (&rest args) t)))
 6  ;;   ad-do-it)
 7  ;; (sanityinc/maybe-suspend-frame))
 8
 9(defadvice kill-current-buffer (around auto-confirm compile activate)
10  (cl-letf (((symbol-function 'yes-or-no-p) (lambda (&rest args) t))
11            ((symbol-function 'y-or-n-p) (lambda (&rest args) t)))
12    ad-do-it)
13  (sanityinc/maybe-suspend-frame))

q-compile-run-c

 1(defun q-compile-run-c ()
 2  "Compile C code, my first elisp program.
 3
 4When run f8, C code will compile and print out some messages.
 5
 6ARG1 `mediawiki-site'.
 7
 8ARG2 `mediawiki-browse'.
 9
10See URL `http://xahlee.info/' to learn more practice code experience.
11
12See  `magit'.
13
14See Info node `(emacs) grep'.
15
16Type \\[dired] to go into dired.
17
18Type f8 to run this function.
19
20Clickable list of all keys of a given keymap name.
21\\{emacs-lisp-mode-map}"
22  (interactive)
23  (save-buffer)
24  (delete-other-windows)
25  (setq i (buffer-name))
26  (setq o (file-name-sans-extension (file-name-nondirectory (buffer-file-name (current-buffer)))))
27  (switch-to-buffer (eshell))
28  (split-window-right -100)
29  (eshell-bol)
30  (kill-visual-line)
31  (insert "cc -O2 " i " -lm -o " o " && ./" o)
32  (eshell-send-input)
33  (other-window 1)
34  (end-of-buffer)
35  (switch-to-buffer i)
36  (other-window 1))

switch-other-window-to-buffer

1(defun switch-other-window-to-buffer (name)
2  (other-window 1)
3  (switch-to-buffer name)
4  (other-window 1))

run-scheme

 1;; 这行必须写,否则报错:找不到scheme函数
 2(require 'cmuscheme)
 3
 4;; 是否指定用chezscheme都无所谓,emacs自己能找到,更没必要找chezscheme二进制文件
 5;; 这些应该是purcell的配置设置好了的,留待后究
 6;; 若要写,chez不行;scheme或chezscheme可行。
 7
 8;; bypass the interactive question and start the default interpreter
 9(defun scheme-proc ()
10  "Return the current Scheme process, starting one if necessary."
11  (unless (and scheme-buffer
12               (get-buffer scheme-buffer)
13               (comint-check-proc scheme-buffer))
14    (save-window-excursion
15      (run-scheme scheme-program-name)))
16  (or (scheme-get-process)
17      (error "No current process. See variable `scheme-buffer'")))
18
19(defun scheme-split-window ()
20  (cond
21   ((= 1 (count-windows))
22    (split-window-vertically (floor (* 0.68 (window-height))))
23    ;; (split-window-horizontally (floor (* 0.5 (window-width))))
24    (switch-other-window-to-buffer "*scheme*"))
25   ((not (member "*scheme*"
26                 (mapcar (lambda (w) (buffer-name (window-buffer w)))
27                         (window-list))))
28    (switch-other-window-to-buffer "*scheme*"))))
29
30(defun scheme-send-last-sexp-split-window ()
31  (interactive)
32  (scheme-split-window)
33  (scheme-send-last-sexp))
34
35(defun scheme-send-definition-split-window ()
36  (interactive)
37  (scheme-split-window)
38  (scheme-send-definition))
39
40(add-hook 'scheme-mode-hook
41          (lambda ()
42            (paredit-mode 1)
43            ;;            (define-key scheme-mode-map (kbd "<f5>") 'scheme-send-last-sexp-split-window)
44            (define-key scheme-mode-map (kbd "<f5>") 'scheme-send-definition-split-window)))

t-mw-define

1(defun t-mw-define ()
2  (interactive)
3  "give mediawiki define element a :"
4  (replace-regexp "^ ?" ": " nil))

keys

1(global-set-key (kbd "<f1>") 'sdcv-search-pointer+)
2(global-set-key (kbd "<f2>") 'switch-to-buffer)
3(global-set-key (kbd "<f4>") 'q-open-init-file)
4(global-set-key (kbd "<f5>") 'eval-buffer)
5(global-set-key (kbd "<f8>") 'q-compile-run-c)
6(global-set-key (kbd "<f9>") 'read-only-mode)
7(global-set-key (kbd "<f12>") 'kill-current-buffer)

hooks

1(add-hook 'after-init-hook 'benchmark-init/activate)
2(add-hook 'dired-mode-hook  'dired-hide-details-mode t)
3
4;; (add-hook 'after-init-hook #'auto-save-visited-mode)
5;; (setq auto-save-visited-interval 1)
6;; (add-hook 'pdf-view-mode-hook 'pdf-view-auto-slice-minor-mode)

tranlate

sdcv

 1;; 直接按 f1 即可用
 2;; 需 sudo apt install stardict sdcv,待验证
 3;; 需 posframe
 4
 5(require 'sdcv)
 6;; (require 'company-english-helper) ;; 似乎存在字体 bug,对硬件要求很高,也不实用,暂且搁置
 7
 8(setq sdcv-say-word-p t)
 9(setq sdcv-dictionary-data-dir "/home/qlzq/Documents/En") ;setup directory of stardict dictionary
10(setq sdcv-dictionary-simple-list ;setup dictionary list for simple search
11      '("简明英汉字典增强版"))
12(setq sdcv-dictionary-complete-list ;setup dictionary list for complete search Etymonline
13      '("简明英汉字典增强版"))
14
15(global-set-key (kbd "C-x t C-d") 'sdcv-search-input)
16(global-set-key (kbd "C-x t d") 'sdcv-search-pointer+)
17(global-set-key (kbd "<f1>") 'sdcv-search-pointer+)

goldendict

1;; 直接输命令 +dict- 即可用
2;; 无需额外依赖
3(defun +dict-word-at-point ()
4  "Search word in goldendict"
5  (interactive)
6  (call-process-shell-command (concat "goldendict " (current-word) " &") nil 0))

fanyi

1;; 直接输入命令 fanyi- 即可用
2;; 依赖 fanyi.el
3;; M-x package-install RET fanyi RET 即可
4(custom-set-variables
5 '(fanyi-providers '(fanyi-haici-provider
6                     fanyi-youdao-thesaurus-provider
7                     fanyi-etymon-provider
8                     fanyi-longman-provider)))

mediawiki

1'(mediawiki-site-alist
2   '(("name" "http://n.n.n.n/mediawiki/" "user" "passwd" nil "Main Page")
3     ("name" "https://someplace.com/mediawiki/" "user" "passwd" nil "Main Page")))

end

1(setq company-minimum-prefix-length 3)
2(global-company-mode t)
3;; (setq markdown-command "/usr/bin/pandoc")
4
5(provide 'init-local)
6;; init-local.el ends here.