Skip to content

Latest commit

 

History

History
429 lines (368 loc) · 12 KB

my-init.org

File metadata and controls

429 lines (368 loc) · 12 KB

General Settings

  (package-initialize)
  ;; add after this line
  ;; global bindings outside of config variables
  (global-set-key (kbd "C-c r") 'rename-buffer)
  (global-set-key (kbd "C-x M-s") 'eshell)
  ;;settings
  (add-hook 'prog-mode-hook 'display-line-numbers-mode)

  (setq inhibit-startup-message t)

  ;; make ~/.saves if you don't have it
  (setq backup-directory-alist '(("." . "~/.saves")))

  (show-paren-mode 1)

  (menu-bar-mode -1)

  (tool-bar-mode -1)

  (scroll-bar-mode -1)

  (global-hl-line-mode +1)

  (setq display-time-default-load-average nil)
  (display-time-mode t)
  ;; packages

  (unless (package-installed-p 'use-package)
    (package-install 'use-package))

  (use-package smartparens
    :ensure t)
  (require 'smartparens-config)
  (fringe-mode 1)
  (setq disabled-command-function nil)
(use-package sudo-edit
  :ensure t)
(global-set-key (kbd "C-c M-r") 'sudo-edit)
  (setq auth-sources '("~/.netrc")) ;;this was done for the sake of my auth info is for emails and tramp will auto read if auth-sources is not set

UI (themes and dashboard)

    (use-package dashboard
      :ensure t
      :config
      (dashboard-setup-startup-hook))
(setq initial-buffer-choice (lambda () (get-buffer "*dashboard*")))
    (setq dashboard-banner-logo-title "Welcome To the Best OS")
    (setq dashboard-items '((recents . 10)
                            (bookmarks . 5)
                            (projects . 5)))
    (setq dashboard-center-content t)
    (setq dashboard-set-file-icons t)
    (setq dashboard-startup-banner "~/.emacs.d/dash2.png")
    (use-package which-key
      :ensure t
      :config (which-key-mode))
    (define-key which-key-mode-map (kbd "C-x <f5>") 'which-key-C-h-dispatch)
    (define-key which-key-mode-map (kbd "C-c <f5>") 'which-key-C-h-dispatch)
    (define-key which-key-mode-map (kbd "<escape> <f5>") 'which-key-C-h-dispatch)

    (use-package all-the-icons
      :ensure t)
    (use-package doom-modeline
      :ensure t
      :hook (after-init . doom-modeline-mode))

    (use-package doom-themes
      :ensure t
      :config
      (load-theme 'doom-gruvbox t))

Org Settings and packages

(setq org-hide-emphasis-markers t)
(font-lock-add-keywords 'org-mode
                        '(("^ *\\([-]\\) "
                           (0 (prog1 () (compose-region (match-beginning 1)
                           (match-end 1) ""))))))
(use-package org-bullets
  :ensure t
  :config
  (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1))))
(setq org-support-shift-select t)
(add-hook 'org-mode-hook #'smartparens-mode)
(with-eval-after-load 'org       
  (setq org-startup-indented t) ; Enable `org-indent-mode' by default
  (add-hook 'org-mode-hook #'visual-line-mode))

(custom-set-variables
 '(org-directory "~/Documents/org")
 '(org-agenda-files (list org-directory)))
(use-package ox-hugo
   :ensure t
   :after ox)

Spell Check and syntax

;;spell check setup for Emacs  
(dolist (hook '(text-mode-hook))
  (add-hook hook (lambda () (flyspell-mode 1))))
(dolist (mode '(emacs-lisp-mode-hook
                inferior-lisp-mode-hook
                clojure-mode-hook
                python-mode-hook
                js-mode-hook
                R-mode-hook
                lua-mode-hook))
  (add-hook mode
            '(lambda ()
               (flyspell-prog-mode))))

(global-set-key (kbd "<f8>") 'ispell-word)
(defun flyspell-check-next-highlighted-word ()
  "Custom function to spell check next highlighted word"
  (interactive)
  (flyspell-goto-next-error)
  (ispell-word))
(global-set-key (kbd "M-<f8>") 'flyspell-check-next-highlighted-word)
(use-package flycheck
  :ensure t
  :init (global-flycheck-mode))
(use-package exec-path-from-shell
  :ensure t)
(when (memq window-system '(mac ns x))
  (exec-path-from-shell-initialize))

auto complete (company)

(use-package company
    :ensure t
    :defer t
    :diminish (company-mode . "")
    :init
    (global-company-mode)
    :config
    (setq company-tooltip-align-annotations t
          company-idle-delay 0.2
          ;; min prefix of 2 chars
          company-minimum-prefix-length 1
          company-require-match nil))
(add-hook 'after-init-hook 'global-company-mode)
  (use-package company-quickhelp          ; Show help in tooltip
    :ensure t
    :defer t
    :init (with-eval-after-load 'company
            (company-quickhelp-mode)))
(define-key company-active-map (kbd "M-.") 'company-show-location)

ivy counsel swiper projectile

(use-package ivy
  :ensure t)
(use-package swiper
  :ensure t)
(use-package counsel
  :ensure t)
(use-package counsel-projectile
  :ensure t)
(use-package projectile
  :ensure t)
(ivy-mode 1)
(setq ivy-initial-inputs-alist nil)
(setq ivy-use-virtual-buffers t)
(setq ivy-count-format "(%d/%d) ")
(setq enable-recursive-minibuffers t)
(global-set-key (kbd "C-c C-r") 'ivy-resume)
(global-set-key (kbd "C-s") 'swiper-isearch)
(global-set-key (kbd "<f6>") 'ivy-resume)
(global-set-key (kbd "M-x") 'counsel-M-x)
(global-set-key (kbd "C-x C-f") 'counsel-find-file)
(global-set-key (kbd "<f1> f") 'counsel-describe-function)
(global-set-key (kbd "<f1> v") 'counsel-describe-variable)
(global-set-key (kbd "<f2> i") 'counsel-info-lookup-symbol)
(global-set-key (kbd "<f2> u") 'counsel-unicode-char)
(projectile-mode +1)
(define-key projectile-mode-map (kbd "s-p") 'projectile-command-map)

god mode

(use-package god-mode
  :ensure t)
(define-key god-local-mode-map (kbd "z") #'repeat)
(define-key god-local-mode-map (kbd "i") #'god-local-mode)
(define-key god-local-mode-map (kbd ".") #'repeat)
(global-set-key (kbd "C-x C-1") 'delete-other-windows)
(global-set-key (kbd "C-x C-2") 'split-window-below)
(global-set-key (kbd "C-x C-3") 'split-window-right)
(global-set-key (kbd "C-x C-0") 'delete-window)
(add-to-list 'god-exempt-major-modes 'dired-mode 'mu4e)
(setq god-exempt-major-modes nil)
(setq god-exempt-predicates nil)
(setq which-key-enable-god-mode-support t)
(global-set-key (kbd "M-SPC") #'god-mode-all)

coding languages(also add matching pairs)

elisp

(add-hook 'emacs-lisp-mode-hook #'smartparens-mode)

R

(use-package ess
  :ensure t)
(require 'ess-r-mode)
(use-package ess-R-data-view
  :ensure t)
  (add-hook 'ess-mode-hook #'smartparens-mode)

common lisp

(use-package slime
  :ensure t)
(setq inferior-lisp-program "sbcl")
(use-package slime-company
  :ensure t)
  (add-hook 'lisp-mode-hook #'smartparens-mode)
(slime-setup '(slime-fancy slime-company))

rust

(use-package rust-mode
  :ensure t)
(require 'rust-mode)
(add-hook 'rust-mode-hook
          (lambda () (setq indent-tabs-mode nil)))
(use-package flycheck-rust
  :ensure t)
(with-eval-after-load 'rust-mode
  (add-hook 'flycheck-mode-hook #'flycheck-rust-setup))
(use-package racer
  :ensure t)
(add-hook 'rust-mode-hook #'racer-mode)
(add-hook 'racer-mode-hook #'company-mode)
(require 'rust-mode)
(define-key rust-mode-map (kbd "TAB") #'company-indent-or-complete-common)
(setq company-tooltip-align-annotations t)
(setq rust-format-on-save t)
(add-hook 'rust-mode-hook #'smartparens-mode)
(setq racer-rust-src-path (concat(getenv "HOME")"/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/src/"))
;; you can get this by testing racer in cli and grabbing the path it shows

common lisp

(use-package anaconda-mode
 :ensure t)
(add-hook 'python-mode-hook 'anaconda-mode)
(add-hook 'python-mode-hook 'anaconda-eldoc-mode)
(use-package company-anaconda
 :ensure t)
(eval-after-load "company"
 '(add-to-list 'company-backends 'company-anaconda))

misc packages

   (use-package magit
     :ensure t)
   (global-set-key (kbd "C-x g") 'magit-status)
   (global-set-key (kbd "C-c g") 'magit-dispatch)

   (use-package tldr
     :ensure t)

   (use-package darkroom
     :ensure t)
   (global-set-key (kbd "C-c d") 'darkroom-mode)

   (use-package expand-region
     :ensure t)
   (global-set-key (kbd "C-=") 'er/expand-region)
   (global-set-key (kbd "C--") 'er/contract-region)

   (use-package steam
     :ensure t)
   (setq steam-username "4games") ;; (super unneded just for fun cause why not)

   (use-package iedit
     :ensure t)
  (global-set-key (kbd "C-c i") 'iedit-mode)
(use-package pdf-tools
  :ensure t)
(add-to-list 'auto-mode-alist '("\\.pdf\\'" . pdf-view-mode))
(use-package spotify
  :ensure t)
(global-set-key (kbd "s-<pause>") 'spotify-playpause)
(global-set-key (kbd "s-M-<pause>") 'spotify-next)
(global-set-key (kbd "s-C-<pause>") 'spotify-previous)

(use-package emojify
  :ensure t)
(add-hook 'after-init-hook #'global-emojify-mode)

ERC

(require 'erc)
(erc-spelling-mode 1)
(setq erc-echo-notices-in-minibuffer-flag t)
(require 'erc-match)
    (setq erc-keywords '("shuwan4games")) ;set your irc name so you can see highlights of your mentions
(defun start-erc ()
  "Log into freenode with less keystrokes"
  (interactive)
  (let
      ((password-cache nil))
    (erc
     :server "irc.freenode.net"
     :port "6667"
     :nick "shuwan4games"                ;set your username here
     :password (password-read (format "Your password for freenode? ")))))
(global-set-key (kbd "C-c e") 'start-erc)

Dired

  (use-package dired-single
    :ensure t)
(defun my-dired-init ()
  "Bunch of stuff to run for dired, either immediately or when it's
   loaded."
  ;; <add other stuff here>
  (define-key dired-mode-map [remap dired-find-file]
    'dired-single-buffer)
  (define-key dired-mode-map [remap dired-mouse-find-file-other-window]
    'dired-single-buffer-mouse)
  (define-key dired-mode-map [remap dired-up-directory]
    'dired-single-up-directory))

;; if dired's already loaded, then the keymap will be bound
(if (boundp 'dired-mode-map)
    ;; we're good to go; just add our bindings
    (my-dired-init)
  ;; it's not loaded yet, so add our bindings to the load-hook
  (add-hook 'dired-load-hook 'my-dired-init))
(global-set-key [(f5)] 'dired-single-magic-buffer)
(global-set-key [(control f5)] (function
        (lambda nil (interactive)
        (dired-single-magic-buffer default-directory))))
(global-set-key [(shift f5)] (function
        (lambda nil (interactive)
        (message "Current directory is: %s" default-directory))))
(global-set-key [(meta f5)] 'dired-single-toggle-buffer-name)

email

(require 'mu4e)

(setq mu4e-maildir "~/.mail"
mu4e-attachment-dir "~/Downloads")

 ;;Get mail
(setq mu4e-get-mail-command "mbsync protonmail"
mu4e-change-filenames-when-moving t   ; needed for mbsync
mu4e-update-interval 600)             ; update every 10 minutes

 ;;Send mail
(setq message-send-mail-function 'smtpmail-send-it
smtpmail-auth-credentials "~/.authinfo.gpg"
smtpmail-smtp-server "127.0.0.1"
smtpmail-stream-type 'starttls
smtpmail-smtp-service 1025)

(global-set-key (kbd "C-c M-m") 'mu4e)
(setq browse-url-browser-function 'browse-url-generic)
(setq browse-url-generic-program "firefox")

website

(use-package org2blog
  :ensure t)
(add-hook 'org-mode-hook #'org2blog-maybe-start)
(setq org2blog/wp-blog-alist
      '(("emacs rocks"
         :url "https://www.emacs.rocks/xmlrpc.php"
         :username "shuwan")))
 (global-set-key (kbd "<f7>") 'org2blog-user-interface)

packages not in MELPA (quelpa)

(use-package quelpa
  :ensure t)
(use-package quelpa-use-package
  :ensure t)
(quelpa
 '(quelpa-use-package
   :fetcher git
   :url "https://github.com/quelpa/quelpa-use-package.git"))
(require 'quelpa-use-package)
(use-package matrix-client
  :quelpa (matrix-client :fetcher github :repo "alphapapa/matrix-client.el"
                         :files (:defaults "logo.png" "matrix-client-standalone.el.sh")))
(global-set-key (kbd "C-x M-m") 'matrix-client-frame)