summaryrefslogtreecommitdiff
path: root/emacs-stardust
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@spawned.biz>2018-07-25 21:54:31 +0200
committerJoel Klinghed <the_jk@spawned.biz>2018-07-25 21:54:31 +0200
commit3221a435c8c1f668fc41c6acd327d27407896e27 (patch)
treeb23be554d7dc6051b464403a1161693f937e868d /emacs-stardust
parent8e2736f7a6f409ae96ab4266a8f581abc0d53f20 (diff)
Add config for stardust
Diffstat (limited to 'emacs-stardust')
-rw-r--r--emacs-stardust347
1 files changed, 347 insertions, 0 deletions
diff --git a/emacs-stardust b/emacs-stardust
new file mode 100644
index 0000000..1fa251e
--- /dev/null
+++ b/emacs-stardust
@@ -0,0 +1,347 @@
+;;; .emacs --- Config
+
+;;; Commentary:
+
+;;; Code:
+
+;; support local packages
+(add-to-list 'load-path "~/.emacs.d/site-lisp/")
+
+(require 'package)
+(add-to-list 'package-archives
+ '("melpa" . "https://melpa.org/packages/"))
+(package-initialize)
+(setq
+ package-selected-packages '(meson-mode flycheck))
+;; use (package-install-selected-packages) to install the ones above
+
+;; show matching parentheses (and other characters)
+(show-paren-mode t)
+
+;; hide tooltips
+(tooltip-mode -1)
+
+(setq
+ ;; skip startup message
+ inhibit-startup-message t
+ ;; show line and column number in mode-line
+ line-number-mode t
+ column-number-mode t
+ ;; increase undo
+ undo-limit 200000
+ undo-strong-limit 300000
+ ;; enable visible bell
+ visible-bell t
+ ;; enable font lockmode
+ global-font-lock-mode t
+ font-lock-mode t
+ font-lock-maximum-decoration t)
+
+;; Force more unique buffer names
+(require 'uniquify)
+(setq uniquify-buffer-name-style 'post-forward-angle-brackets)
+
+;; Clean the buffer list at midnight
+(require 'midnight)
+;; Set clean-buffer-list delay to 1 day
+(setq clean-buffer-list-delay-general 1)
+(if (not (boundp 'clean-buffer-list-kill-regexps))
+ (setq clean-buffer-list-kill-regexps '()))
+;; Add preprocessed buffers to the list
+(add-to-list 'clean-buffer-list-kill-regexps
+ '("\\`\\*.*-preprocessed\\*\\'"))
+
+(setq
+ ;; create backups
+ make-backup-files t
+ ;; don't ask to delete backup versions
+ delete-old-versions t
+ ;; use version control
+ version-control t)
+
+;; put all backup files in their own directory
+(let ((backup-dir "~/.emacs.d/backups/"))
+ (make-directory backup-dir :parents)
+ (setq backup-directory-alist
+ `((".*" . ,backup-dir))))
+
+;; show buffer in frame title
+(setq frame-title-format "%b %* emacs")
+
+;; frame parameters
+;; frame size
+(add-to-list 'default-frame-alist '(width . 80))
+(add-to-list 'default-frame-alist '(height . 36))
+;; tell WM that we really want those sizes
+(add-to-list 'default-frame-alist '(user-size . t))
+;; frame font and color
+(add-to-list 'default-frame-alist
+ '(font . "-*-inconsolata-*-*-*-*-*-120-*-*-*-*-*"))
+(add-to-list 'default-frame-alist '(cursor-color . "green"))
+(add-to-list 'default-frame-alist '(foreground-color . "grey"))
+(add-to-list 'default-frame-alist '(background-color . "black"))
+(add-to-list 'default-frame-alist '(background-mode . "dark"))
+
+;; Make man open in full frame instead of always creating half a frame
+(set-variable 'Man-notify-method (quote pushy))
+
+;; Toggle frame width
+(defun toggle-frame-width (frame)
+ "Toggle FRAME width between 100 and 80."
+ (when window-system
+ (let ((width (frame-width frame)))
+ (cond ((eq width 80)
+ (set-frame-width frame 100))
+ (t
+ (set-frame-width frame 80))))))
+
+(defun toggle-selected-frame-width ()
+ "Toggle selected frame width between 100 and 80."
+ (interactive)
+ (toggle-frame-width (selected-frame)))
+
+;; default styles
+(setq-default
+ ;; no tabs in indentation
+ indent-tabs-mode nil
+ ;; tab-width 4
+ tab-width 4
+ ;; c-basic-offset
+ c-basic-offset 4
+ ;; show trailing whitespace
+ show-trailing-whitespace t)
+
+;; enable c warnings
+(global-cwarn-mode t)
+
+;; auto inserts
+(eval-after-load 'autoinsert
+ '(define-auto-insert
+ '("\\.\\(hh\\|hxx\\|hpp\\)\\'" . "C++ header")
+ '((upcase
+ (mapconcat 'identity (split-string
+ (file-name-nondirectory buffer-file-name)
+ "[^a-zA-Z0-9]+") "_"))
+ "#ifndef " str \n
+ "#define " str \n
+ \n
+ _ \n
+ \n
+ "#endif // " str \n)))
+(eval-after-load 'autoinsert
+ '(define-auto-insert
+ '("\\.\\(CC?\\|cc\\|cxx\\|cpp\\|c++\\)\\'" . "C++ source")
+ '(nil
+ "#include \"common.hh\"" \n
+ \n
+ (let ((base (file-name-sans-extension buffer-file-name)))
+ (cond
+ ((file-exists-p
+ (concat base ".hh"))
+ (concat "#include \""
+ (file-name-nondirectory (concat base ".hh"))
+ "\"\n\n"))))
+ > _ \n)))
+(eval-after-load 'autoinsert
+ '(define-auto-insert
+ '("\\.\\([Hh]\\)\\'" . "C header")
+ '((upcase
+ (mapconcat 'identity (split-string
+ (file-name-nondirectory buffer-file-name)
+ "[^a-zA-Z0-9]+") "_"))
+ "#ifndef " str \n
+ "#define " str \n
+ \n
+ _ \n
+ \n
+ "#endif /* " str " */" \n)))
+(eval-after-load 'autoinsert
+ '(define-auto-insert
+ '("\\.\\([Cc]\\)\\'" . "C source")
+ '(nil
+ "#include \"common.h\"" \n
+ \n
+ (let ((base (file-name-sans-extension buffer-file-name)))
+ (cond
+ ((file-exists-p
+ (concat base ".h"))
+ (concat "#include \""
+ (file-name-nondirectory (concat base ".h"))
+ "\"\n\n"))))
+ > _ \n)))
+(eval-after-load 'autoinsert
+ '(define-auto-insert
+ '("[Mm]akefile\\'" . "Makefile")
+ '(nil
+ ".PHONY: all clean" \n
+ \n
+ "all: " _ \n
+ \n
+ "clean:" \n
+ \n)))
+(eval-after-load 'autoinsert
+ '(define-auto-insert
+ '("\\.\\(py\\)\\'" . "Python source")
+ '(nil
+ "#!/usr/bin/env python" \n
+ \n
+ _ \n)))
+(eval-after-load 'autoinsert
+ '(define-auto-insert
+ '("\\.\\(java\\)\\'" . "Java source")
+ '((file-name-base buffer-file-name)
+ "package " (mapconcat 'identity (member "com" (split-string (file-name-directory buffer-file-name) "/" t)) ".") ";" \n
+ \n
+ "class " str " {" \n
+ _ \n
+ str "() {" ?\n
+ " " "}" ?\n ;; > should work here but it doesn't
+ "}" \n)))
+(auto-insert-mode t)
+;; don't ask before using auto-insert
+(setq-default auto-insert-query nil)
+
+;; gpg
+(require 'epa-file)
+(epa-file-enable)
+
+;; keys
+(global-set-key (kbd "C-c o") 'ff-find-other-file)
+(global-set-key [?\C-x ?\t] 'toggle-selected-frame-width)
+
+;; flycheck
+(require 'flycheck)
+(global-flycheck-mode)
+
+;; replace ch alias fro grep with cchh alias, ie if starting with a ".h" file
+;; you might still want to search in cc files
+(eval-after-load "grep"
+ '(setf (cdr (assoc "ch" grep-files-aliases))
+ (cdr (assoc "cchh" grep-files-aliases))))
+
+(c-add-style
+ "common c"
+ '("gnu"
+ (c-basic-offset . 4)
+ (c-offsets-alist
+ .
+ ((substatement-open . 0)
+ (arglist-intro . ++)
+ (innamespace . 0)))))
+
+(add-hook 'c-mode-common-hook
+ (lambda()
+ (c-set-style "common c")))
+
+(c-add-style
+ "default c++"
+ '("common c"
+ (c-basic-offset . 2)))
+
+(defun get-base-dir (path needle)
+ "Get base directory for PATH using NEEDLE to cut."
+ (let ((parts (split-string path "/" t)))
+ (let ((index (cl-position needle parts :from-end t :test 'equal)))
+ (if index
+ (concat "/" (mapconcat 'identity (seq-take parts (+ index 1)) "/"))
+ path))))
+
+(make-variable-buffer-local 'flycheck-clang-definitions)
+(make-variable-buffer-local 'flycheck-clang-include-path)
+(make-variable-buffer-local 'flycheck-clang-language-standard)
+(make-variable-buffer-local 'flycheck-clang-warnings)
+
+(add-hook 'c++-mode-hook
+ (lambda()
+ (setq flycheck-clang-language-standard "c++14"
+ flycheck-clang-definitions '("HAVE_CONFIG_H")
+ flycheck-clang-include-path
+ '("../src" "../build"))
+ (c-set-style "default c++")
+ (when (and buffer-file-name
+ (string-match "/source/monmon/" buffer-file-name))
+ (setq flycheck-clang-include-path
+ '("../src" "../build"
+ "/usr/include/cairo"
+ "/usr/include/pango-1.0"
+ "/usr/include/pixman-1"
+ "/usr/include/freetype2"
+ "/usr/include/libpng16"
+ "/usr/include/harfbuzz"
+ "/usr/include/glib-2.0"
+ "/usr/lib/glib-2.0/include"
+ "/usr/lib/icecream/include")))
+ (when (and buffer-file-name
+ (string-match "/source/sawmill-0.5/" buffer-file-name))
+ (setq flycheck-clang-include-path
+ '("../src" "../build"
+ "/usr/include/librsvg-2.0"
+ "/usr/include/gdk-pixbuf-2.0"
+ "/usr/include/cairo"
+ "/usr/include/pixman-1"
+ "/usr/include/freetype2"
+ "/usr/include/libpng16"
+ "/usr/include/harfbuzz"
+ "/usr/include/glib-2.0"
+ "/usr/lib/glib-2.0/include"
+ "../subprojects/googletest-release-1.8.0/googletest/include"
+ "../subprojects/googletest-release-1.8.0/googlemock/include"
+ )))
+ ;; Chromium hook
+ (when (and buffer-file-name
+ (string-match "/chromium/src/" buffer-file-name))
+ (let ((base (get-base-dir (file-name-directory buffer-file-name) "src")))
+ (make-local-variable 'flycheck-clang-language-standard)
+ (make-local-variable 'flycheck-clang-include-path)
+ (setq flycheck-clang-language-standard "c++14"
+ flycheck-clang-definitions (list "OS_ANDROID")
+ flycheck-clang-warnings (list "no-unused-parameter")
+ flycheck-clang-include-path (list base
+ (concat base "/out_gradle/BetaArm7Debug/gen")
+ (concat base "/out_gradle/BetaArm7Release/gen"))))
+ (require 'google-c-style)
+ (c-add-style "Google" google-c-style t))
+ ;; ofa hook
+ (when (and buffer-file-name
+ (string-match "/mobile/mobile/" buffer-file-name))
+ (let ((base (get-base-dir (file-name-directory buffer-file-name) "mobile")))
+ (make-local-variable 'flycheck-clang-language-standard)
+ (make-local-variable 'flycheck-clang-definitions)
+ (make-local-variable 'flycheck-clang-include-path)
+ (setq flycheck-clang-language-standard "c++14"
+ flycheck-clang-definitions (list "OS_ANDROID")
+ flycheck-clang-warnings (list "no-unused-parameter")
+ flycheck-clang-include-path (list base (concat base "/../../chromium/src")
+ (concat base "/../../chromium/src/third_party/re2/src")
+ (concat base "/../../chromium/src/out_gradle/BetaArm7Debug/gen")
+ (concat base "/../../chromium/src/out_gradle/BetaArm7Release/gen"))))
+ (require 'google-c-style)
+ (c-add-style "Google" google-c-style t))))
+
+;; Opera Java hook
+(add-hook 'java-mode-hook
+ (lambda()
+ (when (and buffer-file-name
+ (string-match "/opera/head" buffer-file-name))
+ (require 'flycheck-android-experimental)
+ (setq flycheck-android-java-checkstyle-jar
+ "../../chromium/src/third_party/checkstyle/checkstyle-8.0-all.jar"
+ flycheck-android-java-checkstyle-path
+ "tools/checkstyle"
+ flycheck-android-java-checkstyle-config
+ "checkstyle-config-android.xml"
+ flycheck-android-java-checkstyle-properties
+ "checkstyle.properties"
+ flycheck-android-java-variant
+ "devArm7Debug"
+ flycheck-android-java-skip-gen t)
+ (require 'google-c-style)
+ (google-set-c-style)
+ (setq c-file-style "Google")
+ (c-set-offset 'arglist-intro '++)
+ (c-set-offset 'arglist-cont nil)
+ (c-set-offset 'arglist-cont-nonempty '++)
+ (setq indent-tabs-mode nil)
+ (setq c-basic-offset 4))))
+
+;;;