Emacs 初级配置
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.