my emacs configuration

modified from https://github.com/flyingmachine/emacs-for-clojure

;;;;

;; Packages

;;;;



;; Define package repositories

(require 'package)

(add-to-list 'package-archives

             '("marmalade" . "http://marmalade-repo.org/packages/") t)

(add-to-list 'package-archives

             '("tromey" . "http://tromey.com/elpa/") t)

(add-to-list 'package-archives

             '("melpa" . "http://melpa.milkbox.net/packages/") t)



;; (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")

;;                          ("marmalade" . "http://marmalade-repo.org/packages/")

;;                          ("melpa" . "http://melpa-stable.milkbox.net/packages/")))





;; Load and activate emacs packages. Do this first so that the

;; packages are loaded before you start trying to modify them.

;; This also sets the load path.

(package-initialize)



;; Download the ELPA archive description if needed.

;; This informs Emacs about the latest versions of all packages, and

;; makes them available for download.

(when (not package-archive-contents)

  (package-refresh-contents))



;; The packages you want installed. You can also install these

;; manually with M-x package-install

;; Add in your own as you wish:

(defvar my-packages

  '(;; makes handling lisp expressions much, much easier

    ;; Cheatsheet: http://www.emacswiki.org/emacs/PareditCheatsheet

    paredit



    ;; key bindings and code colorization for Clojure

    ;; https://github.com/clojure-emacs/clojure-mode

    clojure-mode



    ;; extra syntax highlighting for clojure

    clojure-mode-extra-font-locking



    ;; integration with a Clojure REPL

    ;; https://github.com/clojure-emacs/cider

    cider



    ;; allow ido usage in as many contexts as possible. see

    ;; customizations/navigation.el line 23 for a description

    ;; of ido

    ido-ubiquitous



    ;; Enhances M-x to allow easier execution of commands. Provides

    ;; a filterable list of possible commands in the minibuffer

    ;; http://www.emacswiki.org/emacs/Smex

    smex



    ;; project navigation

    projectile



    ;; colorful parenthesis matching

    rainbow-delimiters



    ;; edit html tags like sexps

    ;; tagedit



    ;; git integration

    ;;magit

    ))



(dolist (p my-packages)

  (when (not (package-installed-p p))

    (package-install p)))



;; Place downloaded elisp files in ~/.emacs.d/vendor. You'll then be able

;; to load them.

;;

;; For example, if you download yaml-mode.el to ~/.emacs.d/vendor,

;; then you can add the following code to this file:

;;

;; (require 'yaml-mode)

;; (add-to-list 'auto-mode-alist '("\\.yml$" . yaml-mode))

;; 

;; Adding this code will make Emacs enter yaml mode whenever you open

;; a .yml file

(add-to-list 'load-path "~/.emacs.d/vendor")





;; change default start up directory

(setq default-directory "C:/Users/hello/")



;; Go straight to scratch buffer on startup

(setq inhibit-startup-message t)



;; "When several buffers visit identically-named files,

;; Emacs must give the buffers distinct names. The usual method

;; for making buffer names unique adds ‘’, ‘’, etc. to the end

;; of the buffer names (all but one of them).

;; The forward naming method includes part of the file's directory

;; name at the beginning of the buffer name

;; https://www.gnu.org/software/emacs/manual/html_node/emacs/Uniquify.html

(require 'uniquify)

(setq uniquify-buffer-name-style 'forward)



;; Turn on recent file mode so that you can more easily switch to

;; recently edited files when you first start emacs

(setq recentf-save-file (concat user-emacs-directory ".recentf"))

(require 'recentf)

(recentf-mode 1)

(setq recentf-max-menu-items 40)



;; ido-mode allows you to more easily navigate choices. For example,

;; when you want to switch buffers, ido presents you with a list

;; of buffers in the the mini-buffer. As you start to type a buffer's

;; name, ido will narrow down the list of buffers to match the text

;; you've typed in

;; http://www.emacswiki.org/emacs/InteractivelyDoThings

(ido-mode t)

;; This allows partial matches, e.g. "tl" will match "Tyrion Lannister"

(setq ido-enable-flex-matching t)

;; Turn this behavior off because it's annoying

(setq ido-use-filename-at-point nil)

;; Don't try to match file across all "work" directories; only match files

;; in the current directory displayed in the minibuffer

(setq ido-auto-merge-work-directories-length -1)

;; Includes buffer names of recently open files, even if they're not

;; open now

(setq ido-use-virtual-buffers t)

;; This enables ido in all contexts where it could be useful, not just

;; for selecting buffer and file names

(ido-ubiquitous-mode 1)

;; Shows a list of buffers

(global-set-key (kbd "C-x C-b") 'ibuffer)





;; Enhances M-x to allow easier execution of commands. Provides

;; a filterable list of possible commands in the minibuffer

;; http://www.emacswiki.org/emacs/Smex

(setq smex-save-file (concat user-emacs-directory ".smex-items"))

(smex-initialize)

(global-set-key (kbd "M-x") 'smex)



;; projectile everywhere!

(projectile-global-mode)



;; turn on menu bar

(menu-bar-mode 1)



;; Show line numbers

(global-linum-mode)



;; You can uncomment this to remove the graphical toolbar at the top. After

;; awhile, you won't need the toolbar.

;; (when (fboundp 'tool-bar-mode)

;;   (tool-bar-mode -1))



;; Don't show native OS scroll bars for buffers because they're redundant

(when (fboundp 'scroll-bar-mode)

  (scroll-bar-mode -1))



;; Color Themes

;; Read http://batsov.com/articles/2012/02/19/color-theming-in-emacs-reloaded/

;; for a great explanation of emacs color themes.

;; https://www.gnu.org/software/emacs/manual/html_node/emacs/Custom-Themes.html

;; for a more technical explanation.

(add-to-list 'custom-theme-load-path "~/.emacs.d/themes")

(add-to-list 'load-path "~/.emacs.d/themes")

(load-theme 'tomorrow-night-bright t)



;; increase font size for better readability

(set-face-attribute 'default nil :height 120)



;; These settings relate to how emacs interacts with your operating system

(setq ;; makes killing/yanking interact with the clipboard

      x-select-enable-clipboard t



      ;; I'm actually not sure what this does but it's recommended?

      x-select-enable-primary t



      ;; Save clipboard strings into kill ring before replacing them.

      ;; When one selects something in another program to paste it into Emacs,

      ;; but kills something in Emacs before actually pasting it,

      ;; this selection is gone unless this variable is non-nil

      save-interprogram-paste-before-kill t



      ;; Shows all options when running apropos. For more info,

      ;; https://www.gnu.org/software/emacs/manual/html_node/emacs/Apropos.html

      apropos-do-all t



      ;; Mouse yank commands yank at point instead of at click.

      mouse-yank-at-point t)



;; enable cursor blinking

(blink-cursor-mode 1)



;; full path in title bar

(setq-default frame-title-format "%b (%f)")



;; don't pop up font menu

(global-set-key (kbd "s-t") '(lambda () (interactive)))



;; uncomment to disable bell

;; (setq ring-bell-function 'ignore)



;; Highlights matching parenthesis

(show-paren-mode 1)



;; Highlight current line

(global-hl-line-mode 1)



;; When you visit a file, point goes to the last place where it

;; was when you previously visited the same file.

;; http://www.emacswiki.org/emacs/SavePlace

(require 'saveplace)

(setq-default save-place t)

;; keep track of saved places in ~/.emacs.d/places

(setq save-place-file (concat user-emacs-directory "places"))



;; Emacs can automatically create backup files. This tells Emacs to

;; put all backups in ~/.emacs.d/backups. More info:

;; http://www.gnu.org/software/emacs/manual/html_node/elisp/Backup-Files.html

(setq backup-directory-alist `(("." . ,(concat user-emacs-directory

                                               "backups"))))

(setq auto-save-default nil)



;; yay rainbows!

(global-rainbow-delimiters-mode t)



(setq electric-indent-mode 1)



;; For editing lisps

;; Automatically load paredit when editing a lisp file

;; More at http://www.emacswiki.org/emacs/ParEdit

(autoload 'enable-paredit-mode "paredit" "Turn on pseudo-structural editing of Lisp code." t)

(add-hook 'emacs-lisp-mode-hook       #'enable-paredit-mode)

(add-hook 'eval-expression-minibuffer-setup-hook #'enable-paredit-mode)

(add-hook 'ielm-mode-hook             #'enable-paredit-mode)

(add-hook 'lisp-mode-hook             #'enable-paredit-mode)

(add-hook 'lisp-interaction-mode-hook #'enable-paredit-mode)

(add-hook 'scheme-mode-hook           #'enable-paredit-mode)



;; eldoc-mode shows documentation in the minibuffer when writing code

;; http://www.emacswiki.org/emacs/ElDoc

(add-hook 'emacs-lisp-mode-hook 'turn-on-eldoc-mode)

(add-hook 'lisp-interaction-mode-hook 'turn-on-eldoc-mode)

(add-hook 'ielm-mode-hook 'turn-on-eldoc-mode)



;;;;

;; Clojure

;;;;



;; Enable paredit for Clojure

(add-hook 'clojure-mode-hook 'enable-paredit-mode)



;; This is useful for working with camel-case tokens, like names of

;; Java classes (e.g. JavaClassName)

(add-hook 'clojure-mode-hook 'subword-mode)



;; A little more syntax highlighting

(require 'clojure-mode-extra-font-locking)



;;;;

;; Cider

;;;;



;; provides minibuffer documentation for the code you're typing into the repl

(add-hook 'cider-mode-hook 'cider-turn-on-eldoc-mode)



;; go right to the REPL buffer when it's finished connecting

(setq cider-repl-pop-to-buffer-on-connect t)



;; When there's a cider error, show its buffer and switch to it

(setq cider-show-error-buffer t)

(setq cider-auto-select-error-buffer t)



;; Where to store the cider history.

(setq cider-repl-history-file "~/.emacs.d/cider-history")



;; Wrap when navigating history.

(setq cider-repl-wrap-history t)



;; enable paredit in your REPL

(add-hook 'cider-repl-mode-hook 'paredit-mode)

 

你可能感兴趣的:(configuration)