Skip to content

一份自己的EMACS配置文件备份(Clojure)

Notifications You must be signed in to change notification settings

MatrixSeven/emacs.d

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 

Repository files navigation

基本设置

基本快捷键

;;修改mac的comm按键为super按键
(setq mac-command-modifier 'super)
;;绑定alt为emta按键
(setq mac-option-modifier 'meta)
;;;绑定control为c按键
(setq mac-control-modifier 'control)
;; C-g quit
;; C-h f  function -> key
;; C-h k  key -> function
(bind-key "s-o" 'find-file global-map)
(bind-key "s-s" 'save-buffer global-map)
(bind-key "s-c" 'kill-ring-save global-map)
(bind-key "s-v" 'yank global-map)
(bind-key "s-x" 'kill-region global-map)
(bind-key "s-e" 'switch-to-buffer global-map)
(bind-key "s-w" 'kill-buffer global-map)
(bind-key "s-z" 'undo global-map)
(bind-key "<escape>" 'keyboard-escape-quit global-map)
;;绑定删除快捷键
(global-set-key (kbd "C-c D")  'delete-file-and-buffer)

文件编码

;;默认文件编码
(prefer-coding-system 'utf-8)
;;设置各种文件编码
(setq buffer-file-coding-system 'utf-8-unix
      default-file-name-coding-system 'utf-8-unix
      default-keyboard-coding-system 'utf-8-unix
      default-process-coding-system '(utf-8-unix . utf-8-unix)
      default-sendmail-coding-system 'utf-8-unix
      default-terminal-coding-system 'utf-8-unix)

自定义和习惯

;;递归删除和递归拷贝
(setq dired-recursive-deletes 'always
      dired-recursive-copies 'always)
;;设置鼠标滚动
(setq mouse-wheel-scroll-amount '(1 ((shift) . 1))
      mouse-wheel-progressive-speed nil
      mouse-wheel-follow-mouse 't)
;;替换yes/no为y/n
(fset 'yes-or-no-p 'y-or-n-p)
(setq-default indent-tabs-mode nil)
;;设置行高
(setq line-spacing 3)
;;编辑下选择替换
(delete-selection-mode 1)
;;高亮当前行
(global-hl-line-mode 1)
;;状态栏
(setq ns-use-srgb-colorspace nil)

;;设置备份文件
(setq backup-directory-alist `(("." . "~/.backup")))
(setq backup-by-copying t)
(setq delete-old-versions t
      kept-new-versions 6
      kept-old-versions 2
      version-control t)
;;去除烦人的备份
(setq backup-directory-alist
      `((".*" . ,temporary-file-directory)))
(setq auto-save-file-name-transforms
      `((".*" ,temporary-file-directory t)))
(put 'dired-find-alternate-file 'disabled nil)

其它插件

Projectile插件

;;项目管理
(use-package projectile
  :ensure t
  :init
  (projectile-mode)
  :bind
  (("C-c p p" . projectile-switch-project)
   ("C-c p f" . projectile-find-file)
   :map projectile-mode-map
   ("C-c p s s" . counsel-projectile-ag)))

Counsel插件

(use-package counsel
  :ensure t
  :bind
  (("C-c g" . counsel-git)
   ("C-c G" . counsel-git-grep)
   ("C-s" . swiper)
   ("C-c m" . counsel-imenu)
   ("C-x b" . counsel-ibuffer)
   ("C-c A" . counsel-ag)
   :map ivy-minibuffer-map
   ("<tab>" . ivy-alt-done)
   ("<escape>" . minibuffer-keyboard-quit)
   ("C-r" . counsel-expression-history)))

ivy补全插件

(use-package ivy
  :ensure t
  :init
  (ivy-mode 1))

Counsel-Projectile替换插件

(use-package counsel-projectile
  :ensure t
  :init
  (setq projectile-completion-system 'ivy))
;;  (counsel-projectile-on))

Neotree目录树

;; (use-package neotree
;;   :ensure t
;;   :bind
;;   (("s-\\" . neotree-toggle)))

Powerline状态栏

(use-package powerline
  :ensure t
  :init
  (powerline-center-theme))

Exec-fix命令行修复

(use-package exec-path-from-shell
  :ensure t
  :init
  (exec-path-from-shell-initialize))

Ace-window窗口切换

(use-package ace-window
  :ensure t
  :bind
  (("C-x C-x" . ace-window))
  :init
  (setq aw-keys '(?a ?o ?e ?u ?i ?d ?h ?t ?n)))
;;cewindowd窗口提示大小
(custom-set-faces
 '(aw-leading-char-face ((t (:foreground "green" :weight normal :height 4.5))))
 '(mode-line ((t (:foreground "#030303" :background "#bdbdbd" :box nil))))
 '(mode-line-inactive ((t (:foreground "#f9f9f9" :background "#666666" :box nil)))))

Rainbow彩虹括号

(use-package rainbow-delimiters
  :ensure t
  :init
  (add-hook 'clojure-mode-hook 'rainbow-delimiters-mode))

Org模式增强

;;org-mode加强
(use-package org
  :ensure t
  :init
  (setq org-src-fontify-natively t)
  (setq org-hide-leading-stars t)
  (setq org-log-into-drawer t)
  (setq org-todo-keywords '((sequence "TODO(t)" "WAIT(w@/!)" "|" "DONE(d!)" "CANCELED(c@)")))
  (add-hook 'org-mode-hook
            (lambda ()
              (setq org-src-ask-before-returning-to-edit-buffer nil)
              (org-indent-mode 1))))

(setq org-ellipsis "")
(use-package org-bullets
  :ensure t
  :init
  (add-hook 'org-mode-hook 'org-bullets-mode))

(eval-after-load "org"
  '(require 'ox-md nil t))

Ag匹配

(use-package ag
  :ensure t)

Yasnippet补全

(use-package yasnippet
  :ensure t
  :init
  (setq yas-snippet-dirs '("~/.emacs.d/snippets"))
  :config
  (unbind-key "<tab>" yas-minor-mode-map)
  (unbind-key "TAB" yas-minor-mode-map))

Whitespace显示空格

(use-package whitespace
  :ensure t
  :init
  (dolist (hook '(prog-mode-hook text-mode-hook))
    (add-hook hook #'whitespace-mode))
  (add-hook 'before-save-hook #'whitespace-cleanup)
  :config
  (setq whitespace-line-column 800)
  (setq whitespace-style '(face tabs empty trailing lines-tail)))

Highlight-parentheses括号颜色

(use-package highlight-parentheses
  :ensure t
  :init
  (setq hl-paren-delay 0)
  (setq hl-paren-colors '("#3988FB"))
  (setq hl-paren-background-colors '("#484848"))
  (add-hook 'clojure-mode-hook #'highlight-parentheses-mode)
  (add-hook 'emacs-lisp-mode-hook #'highlight-parentheses-mode))

TREEMACS目录树

(with-eval-after-load "treemacs"
  (setq treemacs-icon-root (propertize "* " 'face 'treemacs-root-face)))

(defun user/toggle-treemacs ()
  (interactive)
  (if (fboundp 'treemacs-current-visibility)
      (pcase (treemacs-current-visibility)
        ('visible (treemacs-select-window))
        ('exists (treemacs-select-window))
        ('none (treemacs)))
    (treemacs)))

(use-package treemacs
  :ensure t
  :bind
  (("C-\\" . user/toggle-treemacs))
  :init
  (setq treemacs-no-png-images t)
  :config
  (treemacs-follow-mode 1))

winner-mode

(use-package winner
  :ensure t
  :bind
  (("C-h u" . winner-undo))
  :init
  (winner-mode))

avy-mode

(use-package avy
  :ensure t
  :bind
  (("C-x j" . avy-goto-line)))

Clojure相关

Clojrue-mode

(use-package clojure-mode
  :ensure t)

Expand-region

(use-package expand-region
  :bind
  (("C-c C-v" . er/expand-region)))

Easy-kill

按键功能
M-w d复制顶级表达式
M-w l复制当前表达式
M-w w复制当前词
M-w s复制当前符号
(use-package easy-kill
  :ensure t
  :init
  (global-set-key [remap kill-ring-save] 'easy-kill))

Clojure-repl

(use-package cider
  :ensure t
  :bind
  (:map cider-mode-map
        ("C-c <tab>" . cider-inspect-last-result)
        ("<s-return>" .  cider-eval-last-sexp)
        ("<C-return>" .  cider-eval-defun-at-point))
  :init
  (setq cider-prompt-for-symbol nil)
  (setq cider-lein-command "/usr/local/bin/lein"))

Paredit-mode

(use-package paredit
  :ensure t
  :init
  (add-hook 'clojure-mode-hook 'paredit-mode)
  (add-hook 'cider-repl-mode-hook 'paredit-mode)
  (add-hook 'emacs-lisp-mode-hook 'paredit-mode))

Aggressive-indent

(use-package aggressive-indent
  :ensure t
  :init
  (add-hook 'clojure-mode-hook 'aggressive-indent-mode)
  (add-hook 'clojure-repl-mode-hook 'aggressive-indent-mode)
  (add-hook 'emacs-lisp-mode-hook 'aggressive-indent-mode))

Nrepl-monroe

(use-package monroe
  :ensure t)

Clj-refactor

(use-package clj-refactor
  :ensure t
  :init
  (cljr-add-keybindings-with-prefix "C-,")
  (add-hook 'clojure-mode-hook #'clj-refactor-mode)
  (add-hook 'clojure-mode-hook #'yas-minor-mode))

Company

(use-package company
  :ensure t
  :bind
  (:map company-active-map
        ("<escape>" . company-abort)
        ("C-n" . company-select-next)
        ("C-p" . company-select-previous))
  :init
  (add-hook 'emacs-lisp-mode-hook #'user/company-elisp-init)
  (add-hook 'clojure-mode-hook #'user/company-clojure-init)
  (add-hook 'eshell-mode-hook #'user/company-eshell-init)
  (add-hook 'cider-repl-mode-hook #'user/company-cider-repl-init)
  (add-hook 'cider-repl-mode-hook #'cider-company-enable-fuzzy-completion)
  (add-hook 'cider-mode-hook #'cider-company-enable-fuzzy-completion)
  (add-hook 'cider-repl-mode-hook #'company-mode)
  (add-hook 'cider-mode-hook #'company-mode)
  (setq company-idle-delay nil)
  (global-company-mode 1))

Parinfer

;; (add-to-list 'load-path
;;              (expand-file-name "~/.emacs.d/misc"))
;; (require 'parinfer)
;; (bind-key "C-)" 'paredit-forward-slurp-sexp parinfer-mode-map)
;; (bind-key "C-}" 'paredit-forward-barf-sexp parinfer-mode-map)
;; (bind-key "M-r" 'paredit-raise-sexp parinfer-mode-map)
;; (add-hook 'clojure-mode-hook #'parinfer-mode)

Cider-nrepl

Python相关

Elpy插件

(use-package elpy
  :ensure t)
(setq elpy-rpc-backend "jedi")
(define-key yas-minor-mode-map (kbd "C-c k") 'yas-expand)
(elpy-enable)

~* Git相关

Magit

(use-package magit
  :ensure t
  :bind
  (("C-x M-g" . magit-dispatch-popup))
  :init
  (setq magit-completing-read-function 'ivy-completing-read)
  (global-magit-file-mode t))

GIT变化标记[git-gutter]

;;git修改该提示
;; (use-package git-gutter
;;   :ensure t
;;   :init
;;   (global-git-gutter-mode))

GIT变化标记[diff-hl]

(use-package diff-hl
  :ensure t
  :init
  (global-diff-hl-mode t)
  (diff-hl-dired-mode t))

去掉无用的自动垃圾

无用的自动配置属性

(setq custom-file "~/.emacs.d/custom.el")

无用的Lighter

(use-package diminish
  :init
  (diminish 'highlight-parentheses-mode)
  (diminish 'highlight-symbol-mode)
  (diminish 'paredit-mode)
  (diminish 'ivy-mode)
  (diminish 'company-mode)
  (diminish 'yas-minor-mode)
  (diminish 'git-gutter-mode)
  (diminish 'eldoc-mode)
  (diminish 'auto-revert-mode)
  (diminish 'subword-mode)
  (diminish 'hs-minor-mode)
  (diminish 'hideshowvis-minor-mode)
  (diminish 'clj-refactor-mode)
  (diminish 'anzu-mode)
  (diminish 'undo-tree-mode))

Emacs主题样式

Emacs风格

;;去掉边框
(set-face-attribute 'fringe nil
                    :foreground nil
                    :background nil)
(set-frame-parameter nil 'internal-border-width 0)
(set-window-buffer nil (current-buffer))
;;自定义界面
(global-auto-revert-mode 1)
(scroll-bar-mode -1)
(tool-bar-mode -1)
(global-linum-mode -1)

字体

(set-default-font "IBM 3270 Narrow-18")
;; (set-default-font "MonoxExtraLight-21")
;; (set-default-font "Comic Sans MS-18")

主题

(use-package atom-one-dark-theme
  :ensure)
(use-package challenger-deep-theme
  :ensure)
(use-package zenburn-theme
  :ensure t
  :init
  (load-theme 'zenburn t))

代码块

自动插入elisp标签

(defun user/insert-emacs-lisp-src-block ()
   (interactive)
   (insert "#+BEGIN_SRC emacs-lisp\n\n#+END_SRC\n"))

(bind-key "C-x C-'" #'user/insert-emacs-lisp-src-block)

自定义函数

删除文件

(defun delete-file-and-buffer ()
  "Kill the current buffer and deletes the file it is visiting."
  (interactive)
  (let ((filename (buffer-file-name)))
    (when filename
      (if (vc-backend filename)
          (vc-delete-file filename)
        (progn
          (delete-file filename)
          (message "Deleted file %s" filename)
          (kill-buffer))))))

状态栏颜色

(defun graphic-powerline-config ()
  "powerline setting for graphic"
  (interactive)
  (progn
    (setq powerline-arrow-shape 'arrow)
    (custom-set-faces
     '(mode-line ((t (:foreground "white" :background "#0044cc" :box nil))))
     '(mode-line-inactive ((t (:foreground "white" :background "#262626" :box nil)))))
    (setq powerline-color1 "#0088cc")
    (setq powerline-color2 "white")))
;;状态栏配色
(defun terminal-powerline-config()
  " powerline setting for terminal"
  (interactive)
  (setq powerline-arrow-shape 'arrow)
  (setq powerline-color1 "grey22")
  (setq powerline-color2 "grey22")
  (custom-set-faces
   '(mode-line ((t (:foreground "grey44" :background "grey22" :box nil))))
   '(mode-line-inactive ((t (:foreground "grey22" :background "grey44" :box nil))))))
(graphic-powerline-config)

Company绑定

(defun user/company-clojure-init ()
  (bind-key "TAB" 'company-indent-or-complete-common clojure-mode-map)
  (bind-key "<tab>" 'company-indent-or-complete-common clojure-mode-map))

(defun user/company-cider-repl-init ()
  (bind-key "<tab>" 'company-complete-common cider-repl-mode-map))

(defun user/company-eshell-init ()
  (bind-key "<tab>" 'company-complete-common eshell-mode-map))

(defun user/company-elisp-init ()
  (bind-key "TAB" 'company-indent-or-complete-common emacs-lisp-mode-map)
  (bind-key "<tab>" 'company-indent-or-complete-common emacs-lisp-mode-map))

透明度调节

(defun loop-alpha ()
  (interactive)
  (let ((h (car alpha-list)))                ;; head value will set to
    ((lambda (a ab)
       (set-frame-parameter (selected-frame) 'alpha (list a ab))
       (add-to-list 'default-frame-alist (cons 'alpha (list a ab)))
       ) (car h) (car (cdr h)))
    (setq alpha-list (cdr (append alpha-list (list h))))))
;;透明度
(global-set-key (kbd "<f10>") 'loop-alpha)
(setq alpha-list '((100 100) (95 65) (85 55) (75 45) (65 35)))

字体变化

其它

(global-set-key (kbd "C-=") 'text-scale-increase)
(global-set-key (kbd "C--") 'text-scale-decrease)

eww默认搜索地址

(custom-set-variables
 '(eww-search-prefix "https://www.baidu.com/s?wd="))

sql

;; =============================================================================
;; SQL
;; =============================================================================

(defun user/uppercase-sql-keyword ()
  (let ((init-pos (point)))
    (when (member (char-before)
                  '(41 40 44 59 32 10))
      (save-mark-and-excursion
        (backward-word)
        (if (and (not (nth 3 (syntax-ppss)))
                 (not (nth 4 (syntax-ppss)))
                 (not (let ((face-or-faces (get-text-property (point) 'face)))
                        (if (listp face-or-faces)
                            (or (member 'font-lock-constant-face face-or-faces)
                                (member 'font-lock-variable-name-face face-or-faces))
                          (or (eq 'font-lock-constant-face face-or-faces)
                              (eq 'font-lock-variable-name-face face-or-faces))))))
            (when (<= (save-mark-and-excursion
                        (forward-word 1)
                        (point))
                      init-pos)
              (upcase-word 1)))))))

(defun user/enable-sql-auto-uppercase-keyword ()
  (interactive)
  (add-hook 'post-self-insert-hook #'user/uppercase-sql-keyword t t)
  (modify-syntax-entry ?_ "w" (syntax-table))
  (modify-syntax-entry ?- "w" (syntax-table)))

(add-hook 'sql-mode-hook #'user/enable-sql-auto-uppercase-keyword)

;;; Add keywords for sql fontlock
(font-lock-add-keywords
 'sql-mode
 '(;; For Postgres
   ("\"[-a-zA-Z0-9]+\"" . font-lock-constant-face)
   ;; For MySQL
   ("`[-a-zA-z0-9]+`" . font-lock-constant-face)
   ;; For placeholder
   (":[-a-zA-Z0-9]+" . font-lock-variable-name-face)))

About

一份自己的EMACS配置文件备份(Clojure)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published