summaryrefslogtreecommitdiff
path: root/init.el
diff options
context:
space:
mode:
Diffstat (limited to 'init.el')
-rw-r--r--init.el241
1 files changed, 241 insertions, 0 deletions
diff --git a/init.el b/init.el
new file mode 100644
index 0000000..fccabbc
--- /dev/null
+++ b/init.el
@@ -0,0 +1,241 @@
+;;; -*- lexical-binding: t -*-
+
+(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.
+ '(bongo-custom-backend-matchers '((vlc (local-file) . "opus")))
+ '(bongo-enabled-backends '(vlc))
+ '(bongo-insert-intermediate-headers t)
+ '(custom-enabled-themes '(tsdh-dark))
+ '(display-time-24hr-format t)
+ '(display-time-day-and-date t)
+ '(display-time-mode nil)
+ '(inhibit-startup-screen t)
+ '(menu-bar-mode nil)
+ '(package-archives
+ '(("gnu" . "https://elpa.gnu.org/packages/")
+ ("nongnu" . "https://elpa.nongnu.org/nongnu/")
+ ("melpa" . "https://melpa.org/packages/")))
+ '(package-selected-packages
+ '(moe-theme ample-theme monokai-theme zenburn-theme edit-server simple-httpd melancholy-theme volume selectrum origami imenu-anywhere hydra highlight gdscript-mode free-keys folding fold-this f dumb-jump bongo))
+ '(scroll-bar-mode nil)
+ '(tool-bar-mode nil)
+ '(transient-mark-mode nil))
+(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.
+ '(header-line ((t (:inverse-video t :box (:line-width (1 . -1) :color "red" :style released-button))))))
+
+
+;; stuff I will always want
+(electric-pair-mode 1)
+(global-hl-line-mode 1)
+
+;; common hooks
+(add-hook 'text-mode-hook (lambda () (flyspell-mode 1)))
+(add-hook 'prog-mode-hook (lambda () (hs-minor-mode 1)))
+
+;; transparancy
+(add-to-list 'default-frame-alist '(alpha-background . 90)) ; For all new frames
+(defun toggle-frame-transparency ()
+ "Toggle transparency."
+ (interactive)
+ (let ((alpha-transparency 90))
+ (if (eq alpha-transparency (frame-parameter nil 'alpha-background))
+ (set-frame-parameter nil 'alpha-background 100)
+ (set-frame-parameter nil 'alpha-background alpha-transparency))))
+
+;; mode line stuff
+(require 'battery)
+(defun with-face (str &rest face-plist)
+ (propertize str 'face face-plist))
+(defun make-mode-line-info-string ()
+ "generates the mode line string that contains all the info to the right"
+ (concat (format-time-string "%a, %b %+4Y-%0m-%0d ")
+ (with-face (format-time-string "%R ")
+ :weight 'bold)
+ (with-face (format "<%03.2f> " (car (load-average 1)))
+ :foreground "#da70d6")
+ (with-face (let* ((mi (memory-info))
+ (tm (float (car mi)))
+ (fm (float (car (cdr mi))))
+ (ts (float (car (cdr (cdr mi)))))
+ (fs (float (car (cdr (cdr (cdr mi)))))))
+ (format "{%.2f %.2f} " (- 1 (/ fm tm)) (- 1 (/ fs ts))))
+ :foreground "#00ced1")
+ (with-face (battery-format "[%b%p%%%%] " (and battery-status-function (funcall battery-status-function)))
+ :weight 'bold)))
+(setq global-mode-string '("" (:eval (make-mode-line-info-string))))
+
+;; custom func keybinds
+(global-unset-key (kbd "M-w"))
+(global-set-key (kbd "M-w") 'copy-region-as-kill) ;;make copying not flash cursor
+(defun zap-whitespace ()
+ "zaps the whitespace around the point in both directions"
+ (interactive)
+ (push-mark)
+ (skip-chars-backward " \t\n")
+ (push-mark)
+ (skip-chars-forward " \t\n")
+ (delete-region (mark) (point))
+ (pop-mark)
+ (goto-char (mark))
+ (pop-mark))
+(global-unset-key (kbd "M-z"))
+(global-set-key (kbd "M-z") 'zap-whitespace)
+(defun wrap-sexp (&optional arg)
+ "Wraps the following sexp in a pair of parens and places inside the new pair, with prefix arg do the same backwards, pushing the mark"
+ (interactive "P")
+ (message "%s" arg)
+ (if arg
+ (progn
+ (push-mark)
+ (insert-pair -1 ?\( ?\)))
+ (insert-pair 1 ?\( ?\))))
+(global-set-key (kbd "C-M-z") 'wrap-sexp)
+
+;;move buffers between windows in a convient way
+(defun swap-buffer ()
+ "Cycles the assignment of buffers to windows"
+ (interactive)
+ (cond ((one-window-p) (display-buffer (other-buffer)))
+ ((let* ((buffer-a (current-buffer))
+ (window-b (cadr (window-list)))
+ (buffer-b (window-buffer window-b)))
+ (set-window-buffer window-b buffer-a)
+ (switch-to-buffer buffer-b)
+ (other-window 1)))))
+;;replace shrink window
+(global-unset-key (kbd "C-x -"))
+(global-set-key (kbd "C-x -") 'swap-buffer)
+
+;; quick window switching
+(global-set-key (kbd "M-o") 'other-window)
+(global-set-key (kbd "M-W") 'switch-to-buffer)
+
+;; save/restore window config
+(setq current-saved-layout ?0)
+(seq-do (lambda (number)
+ (let* ((string (int-to-string number))
+ (char (string-to-char string))
+ (key (kbd (concat "M-" string))))
+ (global-unset-key key)
+ (global-set-key key (lambda ()
+ (interactive)
+ (window-configuration-to-register current-saved-layout)
+ (unless (window-configuration-p (car (get-register char)))
+ (window-configuration-to-register char))
+ (jump-to-register char)
+ (setq current-saved-layout char)))))
+ '(0 1 2 3 4 5 6 7 8 9))
+
+;; get me a calculator
+(global-unset-key (kbd "M-c"))
+(global-set-key (kbd "M-c") 'calc)
+
+;; compilation stuff
+(global-unset-key (kbd "M-n"))
+(global-set-key (kbd "M-n") 'compile)
+(global-unset-key (kbd "M-m"))
+(global-set-key (kbd "M-m") 'recompile)
+
+;; latex stuff
+(require 'tex-mode)
+(define-key latex-mode-map (kbd "C-c m") (lambda () (interactive)
+ (insert "\\[\n\n\\]")
+ (backward-char 3)))
+
+;; region folding
+(require 'fold-this)
+
+;; folding keybinds
+(defun fold-this-fold-forward (&optional arg)
+ (interactive "p")
+ (push-mark)
+ (forward-sexp arg)
+ (fold-this (mark) (point))
+ (pop-mark))
+(defun fold-this-fold-backward (&optional arg)
+ (interactive "p")
+ (push-mark)
+ (backward-sexp arg)
+ (fold-this (point) (mark))
+ (pop-mark))
+
+(define-prefix-command 'fold-map)
+(global-set-key (kbd "M-F") 'fold-map)
+
+(define-key fold-map (kbd "d") 'fold-this)
+;; (global-set-key (kbd "M-F d") 'fold-this)
+(define-key fold-map (kbd "e") 'fold-this-unfold-at-point)
+;; (global-set-key (kbd "M-F e") 'fold-this-unfold-at-point)
+(define-key fold-map (kbd "t") 'hs-toggle-hiding)
+;; (global-set-key (kbd "M-F t") 'hs-toggle-hiding)
+(define-key fold-map (kbd "f") 'fold-this-fold-forward)
+(define-key fold-map (kbd "b") 'fold-this-fold-backward)
+
+;; better minibuffer complete
+(selectrum-mode 1)
+(savehist-mode)
+(setq selectrum-display-style '(horizontal))
+(setq selectrum-display-action '(display-buffer-in-side-window (side . bottom) (slot . -1)))
+(use-package orderless
+ :ensure t
+ :custom
+ (completion-styles '(orderless basic))
+ (orderless-matching-styles '(orderless-literal orderless-regexp orderless-prefixes))
+ (orderless-skip-highlighting (lambda () selectrum-is-active))
+ (selectrum-highlight-candidates-function #'orderless-highlight-matches))
+
+;; better in-buffer completion
+(require 'company)
+(add-hook 'prog-mode-hook (lambda ()
+ (company-mode 1)))
+(global-unset-key (kbd "M-/"))
+(global-set-key (kbd "M-/") 'company-complete)
+
+;; exwm stuff
+;;(load "~/.emacs.d/exwm-pref.el")
+
+;; mail stuff
+;; (load "~/.emacs.d/mail.el")
+
+;; music
+;; (load "~/.emacs.d/bongo.el")
+;; (load "~/.emacs.d/youtube-dl.el")
+;; (load "~/.emacs.d/bongo-populate.el")
+
+;; allow using emacsclient
+(server-start)
+
+;; don't ask about killing buffers
+(setq kill-buffer-query-functions (delq 'process-kill-buffer-query-function kill-buffer-query-functions))
+
+;; allow doing webpage startup
+;; (use-package edit-server
+;; :ensure t
+;; :commands edit-server-start
+;; :init (if after-init-time
+;; (edit-server-start)
+;; (add-hook 'after-init-hook
+;; #'(lambda() (edit-server-start))))
+;; :config (setq edit-server-new-frame-alist
+;; '((name . "Edit with Emacs FRAME")
+;; (top . 200)
+;; (left . 200)
+;; (width . 80)
+;; (height . 25)
+;; (minibuffer . t)
+;; (menu-bar-lines . t))))
+
+;; (load-file "~/.emacs.d/async-eval.el")
+
+(put 'dired-find-alternate-file 'disabled nil)
+(put 'upcase-region 'disabled nil)
+(put 'list-timers 'disabled nil)
+(put 'narrow-to-region 'disabled nil)
+