my-emacs-d/init.el

918 lines
22 KiB
EmacsLisp
Raw Normal View History

;; Initialize the package system and use-package
(setq load-prefer-newer t)
(require 'package)
(add-to-list 'package-archives
'("gnu" . "http://elpa.gnu.org/packages/"))
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/"))
(add-to-list 'package-archives
'("marmalade" . "http://marmalade-repo.org/packages/"))
2016-08-18 20:01:20 +00:00
(package-initialize)
(unless (package-installed-p 'use-package)
(package-refresh-contents)
(package-install 'use-package))
;; Set up my personal keymap early so I can use it in use-package
;; calls
(define-prefix-command 'gpolonkai/pers-map)
(define-key ctl-x-map "t" 'gpolonkai/pers-map)
2016-09-29 08:50:50 +00:00
;; Add path to my custom lisp functions
2016-09-15 14:08:54 +00:00
(add-to-list 'load-path (concat
user-emacs-directory
(convert-standard-filename "lisp/")))
2016-09-29 08:50:50 +00:00
;; Custom stuff
2014-10-05 12:57:41 +00:00
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(background-color "#7f7f7f")
'(background-mode dark)
'(blink-cursor-mode t)
'(column-number-mode t)
'(cursor-color "#5c5cff")
'(cursor-type (quote bar))
2014-10-05 12:57:41 +00:00
'(custom-enabled-themes (quote (tango-dark)))
'(custom-safe-themes
(quote
2016-10-10 12:55:07 +00:00
("84d2f9eeb3f82d619ca4bfffe5f157282f4779732f48a5ac1484d94d5ff5b279"
"c74e83f8aa4c78a121b52146eadb792c9facc5b1f02c917e3dbb454fca931223"
"3c83b3676d796422704082049fc38b6966bcad960f896669dfc21a7a37a748fa"
"a27c00821ccfd5a78b01e4f35dc056706dd9ede09a8b90c6955ae6a390eb1c1e"
"1e7e097ec8cb1f8c3a912d7e1e0331caeed49fef6cff220be63bd2a6ba4cc365"
"fc5fcb6f1f1c1bc01305694c59a1a861b008c534cae8d0e48e4d5e81ad718bc6"
default)))
'(echo-keystrokes 0.1)
2014-10-05 12:57:41 +00:00
'(foreground-color "#5c5cff")
'(indent-tabs-mode nil)
'(indicate-empty-lines t)
2014-10-05 12:57:41 +00:00
'(inhibit-startup-screen t)
'(initial-scratch-message nil)
2016-08-18 20:01:20 +00:00
'(package-selected-packages
(quote
2016-10-13 09:01:25 +00:00
(ace-window
ag
alert
2016-10-13 09:01:25 +00:00
avy
2016-10-20 12:29:42 +00:00
beacon
2016-10-22 14:26:20 +00:00
cheatsheet
2016-10-10 12:55:07 +00:00
coffee-mode
command-log-mode
2016-10-14 11:38:29 +00:00
company
2016-10-10 12:55:07 +00:00
company-c-headers
2016-10-22 14:26:20 +00:00
company-emoji
company-restclient
2016-10-10 12:55:07 +00:00
company-shell
diminish
2016-10-10 12:55:07 +00:00
drag-stuff
electric-case
electric-spacing
emamux
flycheck
flycheck-pkg-config
focus
ggtags
git-gutter
git-messenger
git-timemachine
gitconfig-mode
gitignore-mode
gnugo
gobgen
google
goto-last-change
2016-10-14 10:17:57 +00:00
helm
2016-10-10 12:55:07 +00:00
helm-ag
helm-chrome
helm-company
helm-descbinds
helm-describe-modes
2016-10-10 12:55:07 +00:00
helm-flycheck
helm-flyspell
2016-10-14 10:17:57 +00:00
helm-github-stars
2016-10-10 12:55:07 +00:00
helm-google
helm-gtags
helm-projectile
2016-10-17 08:17:24 +00:00
helm-smex
2016-10-10 12:55:07 +00:00
helm-swoop
helm-unicode
2016-10-20 12:09:15 +00:00
hungarian-holidays
2016-10-21 08:18:21 +00:00
hungry-delete
2016-10-10 12:55:07 +00:00
hyde
id-manager
identica-mode
jinja2-mode
js2-mode
json-mode
2016-10-14 11:38:29 +00:00
magit
2016-10-10 12:55:07 +00:00
magit-gerrit
magithub
markdown-mode
mc-extras
multiple-cursors
ng2-mode
nyan-mode
nyan-prompt
2016-10-14 11:38:29 +00:00
org
2016-10-10 12:55:07 +00:00
org-bullets
2016-10-17 21:42:31 +00:00
org-jekyll
2016-10-10 12:55:07 +00:00
org-projectile
2016-10-17 21:42:31 +00:00
org-random-todo
org-rtm
2016-10-10 12:55:07 +00:00
origami
2016-10-17 14:24:31 +00:00
plantuml-mode
2016-10-14 11:38:29 +00:00
projectile
rainbow-delimiters
rainbow-mode
restclient
restclient-helm
2016-10-10 12:55:07 +00:00
sass-mode
2016-10-14 11:38:29 +00:00
smart-mode-line
2016-10-10 12:55:07 +00:00
smart-mode-line-powerline-theme
smartparens
spinner
sx
typescript-mode
use-package
vala-mode
vala-snippets
2016-10-10 12:55:07 +00:00
wakatime-mode
xlicense
yaml-mode
yasnippet
2016-10-10 12:55:07 +00:00
zone-nyan)))
'(sgml-basic-offset 4)
2014-10-06 08:26:22 +00:00
'(show-trailing-whitespace t)
'(tab-width 4))
2014-10-05 12:57:41 +00:00
2016-09-29 08:50:50 +00:00
;; Custom face settings
2014-10-05 14:27:20 +00:00
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(aw-leading-char-face ((t (:inherit ace-jump-face-foreground :height 3.0))))
'(hl-line ((t (:inherit nil :background "gray25"))))
2014-10-06 08:26:22 +00:00
'(trailing-whitespace ((t (:inherit nil :background "red1"))))
'(whitespace-line ((t (:inherit nil :background "orange")))))
2016-09-29 08:50:50 +00:00
(set-face-attribute 'default t :font "Hack-10")
(set-frame-font "Hack-10" nil t)
2014-10-05 12:57:41 +00:00
2016-09-29 08:50:50 +00:00
;; Some personal stuff
(setq user-mail-address "gergely@polonkai.eu")
2014-10-05 14:27:20 +00:00
2016-09-29 08:50:50 +00:00
;; Load some custom libraries
(require 'thingatpt)
2016-10-10 18:31:01 +00:00
(use-package helm
:ensure t
2016-10-10 18:31:01 +00:00
:init
(require 'helm-config)
(setq helm-M-x-fuzzy-match t
helm-buffers-fuzzy-matching t
helm-recentf-fuzzy-match t)
:config
(helm-mode t)
:bind
(("M-x" . helm-M-x)
("C-x C-f" . helm-find-files)
("C-x b" . helm-mini)))
(use-package helm-swoop
:ensure t
:bind
(("M-i" . helm-swoop)))
(use-package ggtags
:ensure t
:config
(add-hook 'c-mode-hook
(lambda ()
(ggtags-mode t)))
(add-hook 'c-mode-common-hook
(lambda ()
(when (derived-mode-p 'c-mode 'c++-mode 'java-mode)
(ggtags-mode t)))))
2016-10-10 18:31:01 +00:00
(use-package helm-gtags
:ensure t
:init
(setq-default helm-gtags-auto-update t
helm-gtags-ignore-case t
helm-gtags-path-style 'relative)
:config
(add-hook 'c-mode-hook
(lambda ()
(helm-gtags-mode t)))
:bind
(:map helm-gtags-mode-map
("M-t" . helm-gtags-find-tag)
("M-r" . helm-gtags-find-rtag)
("M-s" . helm-gtags-find-symbol)
("M-g M-p" . helm-gtags-parse-file)
("C-c <" . helm-gtags-previous-history)
("C-c >" . helm-gtags-next-history)
("M-," . helm-gtags-pop-stack)))
;; Whitespace mode
;;
;; It is turned on by default, and can be toggled with F10
(use-package whitespace
:demand
:config
(global-whitespace-mode 1)
:bind
(([f10] . whitespace-mode)
([(shift f10)] . global-whitespace-mode)))
;; Multiple cursors
(use-package multiple-cursors
:ensure t
:config
(add-hook 'multiple-cursors-mode-enabled-hook
(lambda ()
(setq blink-matching-paren nil)))
(add-hook 'multiple-cursors-mode-disabled-hook
(lambda ()
(setq blink-matching-paren t)))
:bind (("C-S-c C-S-c" . mc/edit-lines)
("C->" . mc/mark-next-like-this)
("C-<" . mc/mark-previous-like-this)
("C-c C-<" . mc/mark-all-like-this)))
(use-package eshell
:config
(add-hook 'eshell-mode-hook
(lambda () (local-set-key (kbd "C-d") #'eshell-C-d))))
;; Save place
(use-package saveplace
:config
(setq-default save-place t)
(setq save-place-file (expand-file-name ".places" user-emacs-directory)))
;; Nyanyanyanyanya
(use-package nyan-mode
:ensure t
:init
(setq-default nyan-animate-nyancat t
nyan-wavy-trail t)
:config
(nyan-mode t))
(when (display-graphic-p)
(use-package nyan-prompt
:ensure t
:config
(add-hook 'eshell-load-hook 'nyan-prompt-enable)))
2016-10-10 13:36:08 +00:00
;; Zone!
(use-package zone-nyan
:ensure t
:init
(setq zone-programs [zone-nyan])
(setq-default zone-nyan-hide-progress t))
2016-10-10 13:36:08 +00:00
(use-package zone
:config
(zone-when-idle 60))
;; Magit and friends
(use-package magit
:ensure t
:init
(setq magit-auto-revert-mode nil)
(setq magit-last-seen-setup-instructions "1.4.0")
:bind
(("C-x g" . magit-status)))
(use-package magithub
:ensure t)
(use-package magit-gerrit
:ensure t
:init
(setq-default magit-gerrit-remote "gerrit"))
(use-package origami
:ensure t
:demand
:config
(define-prefix-command 'origami-mode-map)
(global-set-key (kbd "C-x C-z") 'origami-mode-map)
(global-origami-mode)
:bind
(:map origami-mode-map
("o" . origami-open-node)
("O" . origami-open-node-recursively)
("c" . origami-close-node)
("C" . origami-close-node-recursively)
("a" . origami-toggle-node)
("A" . origami-recursively-toggle-node)
("R" . origami-open-all-nodes)
("M" . origami-close-all-nodes)
("v" . origami-show-only-node)
("k" . origami-previous-fold)
("j" . origami-forward-fold)
("x" . origami-reset)))
(use-package helm-ag
:ensure t
2016-10-10 18:39:31 +00:00
:bind
(("C-x M-a" . helm-do-ag)))
2016-10-10 18:39:31 +00:00
2016-10-14 13:31:34 +00:00
(use-package smartparens
:ensure t
:demand
:config
(show-smartparens-global-mode t)
(add-hook 'prog-mode-hook
'turn-on-smartparens-strict-mode)
(add-hook 'markdown-mode-hook
'turn-on-smartparens-strict-mode)
:bind
(([f9] . smartparens-strict-mode)))
2014-10-05 12:57:41 +00:00
(use-package smart-mode-line
:ensure t
:config
(sml/setup))
(use-package company
:ensure t
:config
(global-company-mode))
(use-package helm-company
:ensure t
:after
company
helm
:bind
(:map company-mode-map
("C-S-j" . helm-company)
:map company-active-map
("C-S-j" . helm-company)))
(use-package projectile
:ensure t
:config
(projectile-global-mode t))
(use-package helm-projectile
:ensure t
:init
(setq projectile-completion-system 'helm)
:config
(helm-projectile-on))
(use-package drag-stuff
:ensure t
:config
(drag-stuff-global-mode t))
;; Git gutter
(use-package git-gutter
:ensure t
:config
(global-git-gutter-mode t))
2016-10-12 08:36:56 +00:00
;; Org mode
(use-package org
:ensure t
:demand
2016-10-12 08:36:56 +00:00
:init
(require 'xdg-paths)
(setq-default org-crypt-key "B0740C4C"
org-default-notes-file (concat user-documents-directory
(convert-standard-filename
"/orgmode/notes.org"))
org-directory (concat user-documents-directory
(convert-standard-filename "/orgmode/"))
org-agenda-files (concat user-documents-directory
(convert-standard-filename
"/orgmode/agenda_files"))
org-ellipsis "…#"
org-startup-folded 'content
org-mobile-directory (concat user-documents-directory
(convert-standard-filename
"/orgmode/mobile/"))
org-mobile-inbox-for-pull (concat
user-documents-directory
(convert-standard-filename
2016-10-20 06:42:55 +00:00
"/orgmode/from-mobile.org"))
org-log-done 'time)
:config
(unless (boundp 'org-capture-templates)
(setq org-capture-templates nil))
(add-to-list 'org-capture-templates
'("p" "Blog post"
entry (file+datetree (concat org-directory "blog.org"))
"* %^{Title} :blog:\n :PROPERTIES:\n :on: %T\n :END:\n %i%?"))
(setq org-time-stamp-formats '("<%Y-%m-%d>" . "<%Y-%m-%d %H:%M>"))
:bind
2016-10-24 07:32:53 +00:00
(:map gpolonkai/pers-map
("a" . org-agenda-list)
:map org-mode-map
("SPC" . org-space-key)))
2016-10-12 08:36:56 +00:00
(use-package org-bullets
:ensure t
:init
(add-hook 'org-mode-hook
(lambda ()
(if (display-graphic-p) org-bullets-mode))))
;; Waka-waka
(use-package wakatime-mode
:ensure t
:init
(setq-default wakatime-cli-path "/usr/local/bin/wakatime")
:config
(global-wakatime-mode t))
2016-10-13 09:01:25 +00:00
(use-package ace-window
:ensure t
:init
(setq aw-keys '(?a ?o ?e ?u ?i ?d ?h ?t ?n)
aw-background nil)
2016-10-13 09:01:25 +00:00
:bind
(("M-P" . ace-window)))
2016-10-13 09:01:25 +00:00
2016-10-14 09:12:52 +00:00
(use-package avy
:ensure t
2016-10-14 09:12:52 +00:00
:demand
:config
(avy-setup-default)
:bind
(("C-:" . avy-goto-char)
("C-'" . avy-goto-char-2)
("M-g f" . avy-goto-line)
("M-g w" . avy-goto-word-1)
("M-g e" . avy-goto-word-0)))
(use-package diminish
:ensure t
:defer t)
(use-package focus
:ensure t
:bind
(([f8] . focus-mode)))
(use-package coffee-mode
:ensure t)
(use-package command-log-mode
:ensure t)
(use-package company-c-headers
:ensure t)
(use-package company-shell
:ensure t)
(use-package electric-case
:ensure t
:config
(add-hook 'c-mode-hook ''electric-case-c-init))
(use-package electric-spacing
:ensure t
:bind
(([f7] . electric-spacing-mode)))
(use-package emamux
:ensure t)
(use-package flycheck
:ensure t)
(use-package flycheck-pkg-config
:ensure t)
(use-package git-messenger
:ensure t)
(use-package git-timemachine
:ensure t
:bind
(([f6] . git-timemachine-toggle)))
(use-package gitconfig-mode
:ensure t)
(use-package gitignore-mode
:ensure t)
(use-package gnugo
:ensure t)
(use-package gobgen
:ensure t)
(use-package goto-last-change
:ensure t
:bind
(("M-g /" . goto-last-change)))
(use-package helm-chrome
:ensure t)
(use-package helm-flycheck
:ensure t)
(use-package helm-flyspell
:ensure t
:demand
:bind
(:map flyspell-mode-map
("C-M-i" . helm-flyspell-correct)))
(use-package helm-github-stars
:ensure t
:init
(setq-default helm-github-stars-username "gergelypolonkai"))
(use-package helm-google
:ensure t)
(use-package hyde
:ensure t)
(use-package id-manager
:ensure t)
(use-package identica-mode
:ensure t)
(use-package jinja2-mode
:ensure t)
(use-package js2-mode
:ensure t)
(use-package json-mode
:ensure t)
(use-package markdown-mode
:ensure t)
(use-package mc-extras
:ensure t)
(use-package ng2-mode
:ensure t)
(use-package org-projectile
:ensure t)
(use-package sass-mode
:ensure t)
(use-package smart-mode-line-powerline-theme
:ensure t
:init
(setq-default sml/theme 'powerline))
(use-package spinner
:ensure t)
(use-package sx
2016-10-24 12:36:59 +00:00
:ensure t
:demand
:bind
(:map gpolonkai/pers-map
("qi" . sx-inbox)
("qs" . sx-search)))
(use-package typescript-mode
:ensure t)
(use-package vala-mode
:ensure t
:init
(add-to-list 'auto-mode-alist '("\\.vala\\'" . vala-mode)))
(use-package xlicense
:ensure t)
(use-package yaml-mode
:ensure t
:init
(add-to-list 'auto-mode-alist '("\\.yml\\'" . yaml-mode)))
2016-10-17 08:17:24 +00:00
(use-package helm-smex
:ensure t
2016-10-17 08:17:24 +00:00
:bind
(("M-X" . helm-smex)))
(use-package ediff
:ensure t
:init
(setq-default ediff-merge-split-window-function 'split-window-horizontally
ediff-split-window-function 'split-window-vertically
ediff-window-setup-function 'ediff-setup-windows-plain))
2016-10-17 15:43:18 +00:00
(use-package plantuml-mode
:ensure t
2016-10-17 15:43:18 +00:00
:init
(setq plantuml-jar-path
(expand-file-name
;; Make sure we have a download location even if XDG is not
;; working
(cond
((xdg-user-dir "DOWNLOAD")
(concat (xdg-user-dir "DOWNLOAD") "/plantuml.jar"))
(t
"~/Downloads/plantuml.jar"))))
2016-10-17 15:43:18 +00:00
(defvaralias 'org-plantuml-jar-path 'plantuml-jar-path)
:config
(org-babel-do-load-languages
'org-babel-load-languages
'((plantuml . t))))
2016-10-17 14:24:31 +00:00
(use-package org-random-todo
:ensure t
:config
;; Dont bug me too often…
(setq org-random-todo-how-often 3600))
2016-10-20 06:42:55 +00:00
(use-package calendar
:init
(setq calendar-week-start-day 1
calendar-latitude 47.4
calendar-longitude 19.0
calendar-location-name "Budapest, Hungary"
calendar-time-zone 60
calendar-standard-time-zone-name "CET"
calendar-daylight-time-zone-name "CEST"))
2016-10-20 06:42:55 +00:00
(use-package yasnippet
:ensure t
:config
(yas-global-mode 1))
(use-package vala-snippets
:ensure t
:after
yasnippet)
2016-10-20 12:09:15 +00:00
(use-package hungarian-holidays
:ensure t
2016-10-20 12:09:15 +00:00
:config
(hungarian-holidays-add))
2016-10-20 12:29:42 +00:00
(use-package beacon
:ensure t
2016-10-21 16:46:10 +00:00
:demand
2016-10-20 12:29:42 +00:00
:config
2016-10-21 16:46:10 +00:00
(beacon-mode 1)
:bind
(:map gpolonkai/pers-map
("b" . beacon-blink)))
2016-10-20 12:29:42 +00:00
(use-package flyspell
:config
(add-hook 'prog-mode-hook
2016-10-21 07:32:50 +00:00
'flyspell-prog-mode)
(add-hook 'text-mode-hook
2016-10-21 07:32:50 +00:00
'flyspell-mode))
(use-package helm-descbinds
:ensure t)
(use-package helm-describe-modes
:ensure t)
(use-package paren
:config
(show-paren-mode t))
(use-package autorevert
:config
(global-auto-revert-mode 1))
(use-package rainbow-delimiters
:ensure t
:config
(add-hook 'prog-mode-hook
#'rainbow-delimiters-mode))
(use-package rainbow-mode
:ensure t)
2016-10-21 08:18:21 +00:00
(use-package hungry-delete
:ensure t
2016-10-21 08:18:21 +00:00
:config
(global-hungry-delete-mode))
(use-package hl-line
:config
(global-hl-line-mode))
2016-10-21 12:43:37 +00:00
(use-package eww
:config
(setq eww-search-prefix "https://www.google.com/?q="))
(use-package electric
:config
;; This seems to be the default, but lets make sure…
(electric-indent-mode 1))
(use-package restclient
:ensure t)
(use-package company-restclient
:ensure t)
(use-package restclient-helm
:ensure t)
(use-package alert
:ensure t
:config
(setq alert-default-style 'notifications))
2016-10-24 07:49:07 +00:00
(use-package newsticker
2016-10-24 12:36:50 +00:00
:demand
2016-10-24 07:49:07 +00:00
:config
(setq newsticker-url-list '(("(or emacs irrelevant)"
"http://oremacs.com/atom.xml"
nil nil nil)
("think"
"http://batsov.com/atom.xml"
nil nil nil)
("Endless Parentheses"
"http://endlessparentheses.com/atom.xml"
2016-10-24 12:36:50 +00:00
nil nil nil)
2016-10-24 10:19:37 +00:00
("Irreal"
"http://irreal.org/blog/?feed=rss2"
nil nil nil)))
2016-10-24 07:49:07 +00:00
:bind
(:map gpolonkai/pers-map
("n" . newsticker-show-news)))
(use-package cheatsheet
:ensure t)
2016-10-24 07:48:25 +00:00
(use-package nxml
:config
(setq nxml-attribute-indent 4
nxml-child-indent 2
nxml-outline-child-indent 4))
(use-package savehist
:config
(savehist-mode 1))
2016-10-24 09:10:19 +00:00
;; Before this can be used, make sure the Symbola font is installed:
;; https://zhm.github.io/symbola/
(defun --set-emoji-font (frame)
"Adjust the font setting of FRAME so Emacs can display Emoji properly."
(if (eq system-type 'darwin)
;; For NS/Cocoa
(set-fontset-font t 'symbol
(font-spec :family "Apple Color Emoji")
frame 'prepend)
;; For Linux
(set-fontset-font t 'symbol
(font-spec :family "Symbola")
frame 'prepend)))
(use-package company-emoji
:ensure t
:after
company
:init
(--set-emoji-font nil)
:config
(add-to-list 'company-backends 'company-emoji)
(add-hook 'after-make-frame-functions
'--set-emoji-font))
2016-09-29 08:50:50 +00:00
;; Load my own functions
2016-09-15 14:08:54 +00:00
(load "gnu-c-header.el")
(load "toggle-window-split.el")
(load "round-number-to-decimals.el")
(load "transpose-windows.el")
(load "zim.el")
(load "clearcase.el")
(load "enclose-string.el")
2016-09-29 08:50:50 +00:00
(load "buf-manipulation.el")
(load "package-manip")
(load "text-manip")
2014-10-05 12:57:41 +00:00
2016-09-29 08:50:50 +00:00
;; Define aliases
(defalias 'yes-or-no-p 'y-or-n-p)
;; `c-mode' settings
(add-hook 'c-mode-hook
(lambda ()
(which-func-mode)))
2016-09-29 08:50:50 +00:00
(add-hook 'c-mode-common-hook
(lambda ()
(local-set-key (kbd "C-c o") 'ff-find-other-file)
(c-set-style "PERSONAL")
(setq tab-width 4
indent-tabs-mode nil)
(c-toggle-auto-newline 1)))
2016-09-29 08:50:50 +00:00
(add-hook 'c-initialization-hook
(lambda ()
(define-key c-mode-base-map (kbd "C-m") 'c-context-line-break)))
(defvaralias 'c-basic-offset 'tab-width)
(defvaralias 'cperl-indent-level 'tab-width)
(defconst my-c-style
'((c-tab-always-indent . t)
(c-comment-only-line-offset . 4)
(c-hanging-braces-alist . ((substatement-open after)
(brace-list-open)))
(c-hanging-colons-alist . ((member-init-intro before)
(inher-intro)
(case-label after)
(label after)
(access-label after)))
(c-cleanup-list . (scope-operator
empty-defun-braces
defun-close-semi))
(c-offsets-alist . ((arglist-close . +)
(arglist-intro . ++)
(substatement-open . 0)
(case-label . 4)
(block-open . 0)
2014-11-16 15:42:08 +00:00
(knr-argdecl-intro . -)
(comment-intro . 0)))
(c-echo-syntactic-information-p . t))
"My C Programming Style")
(c-add-style "PERSONAL" my-c-style)
2016-09-29 08:50:50 +00:00
(setq c-offset-alist '((member-init-intro . ++)))
2016-02-16 08:12:19 +00:00
2016-09-29 08:50:50 +00:00
;; Custom key bindings
(global-set-key (kbd "C-x _") 'maximize-window)
2016-02-16 08:12:19 +00:00
(global-set-key (kbd "C-c C-y") 'duplicate-line)
2016-09-29 08:50:50 +00:00
(global-set-key (kbd "M-(") 'æ-enclose-region)
(global-set-key (kbd "C-x w") 'webjump)
(global-set-key (kbd "<C-return>") 'open-line-below)
(global-set-key (kbd "<C-S-return>") 'open-line-above)
(global-set-key (kbd "C-x C-r") 'rename-current-buffer-file)
(global-set-key (kbd "C-x C-d") 'delete-current-buffer-file)
(global-set-key (kbd "C-x ~") 'toggle-char-case)
(define-key isearch-mode-map (kbd "<C-return>")
#'isearch-exit-other-end)
2016-10-20 12:17:30 +00:00
;; Kudos goes to
;; http://endlessparentheses.com/leave-the-cursor-at-start-of-match-after-isearch.html
(defun isearch-exit-other-end ()
"Exit isearch, at the opposite end of the string"
(interactive)
(isearch-exit)
(goto-char isearch-other-end))
2016-09-15 15:49:29 +00:00
2016-09-29 08:50:50 +00:00
;; Set up some global minor modes
(global-prettify-symbols-mode t)
;; Enable some functions
(put 'downcase-region 'disabled nil)
(put 'upcase-region 'disabled nil)
;; text-mode settings
(add-hook 'text-mode-hook (lambda () (visual-line-mode t)))
2016-09-29 08:50:50 +00:00
;; UI hacks: turn off scroll bar (thats why Nyan-cat is here) and the
;; toolbar (I dont really use it)
(if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
(if (fboundp 'tool-bar-mode) (tool-bar-mode -1))
2016-09-29 08:50:50 +00:00
;; Add some symbols to be prettified
(setq prettify-symbols-alist
'(("lambda" . 955) ; λ
("->" . 8594) ; →
("=>" . 8658) ; ⇒
("map" . 8614))) ; ↦
;; …and some pairs to complete
;; TODO: maybe add-to-list is a better way to do it
(setq insert-pair-alist
'(
(40 41) ; ()
(91 93) ; []
(123 125) ; {}
(60 62) ; <>
(34 34) ; ""
(39 39) ; ''
(96 39) ; `'
(8220 8221) ; “”
(8222 8221) ; „”
(8216 8217) ;
(8249 8250) ;
(8250 8249) ;
(171 187) ; «»
(187 171) ; »«
))
;; Check for package upgrades every Monday so I dont forget.
(check-for-package-upgrades-on-day 1)