Skip to content

Latest commit

 

History

History
534 lines (460 loc) · 15.1 KB

Emacs.org

File metadata and controls

534 lines (460 loc) · 15.1 KB

My emacs config

System settings

(setq make-backup-files nil)

packages

   (defvar bootstrap-version)
   (let ((bootstrap-file
	   (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
	  (bootstrap-version 6))
     (unless (file-exists-p bootstrap-file)
	(with-current-buffer
	    (url-retrieve-synchronously
	     "https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"
	     'silent 'inhibit-cookies)
	  (goto-char (point-max))
	  (eval-print-last-sexp)))
     (load bootstrap-file nil 'nomessage))
 (straight-use-package 'use-package)
 (setq straight-use-package-by-default t)
     (require 'package)

   (setq package-archives '(("melpa" . "https://melpa.org/packages/")
			     ("org" . "https://orgmode.org/elpa/")
			     ("elpa" . "https://elpa.gnu.org/packages/")))

   (package-initialize)
   (unless package-archive-contents
     (package-refresh-contents))

     ;; Initialize use-package on non-Linux platforms

   (straight-use-package 'use-package)
 (setq straight-use-package-by-default t)

basic ui

    (setq inhibit-startup-message t)
  (tool-bar-mode -1)
  (scroll-bar-mode -1)
  (set-fringe-mode 10)
  (global-display-line-numbers-mode t)
  (setq visible-bell nil)
  ;line numbers
  (column-number-mode)
(global-display-line-numbers-mode t)
(dolist (mode '(org-mode-hook
		  term-mode-hook
		  shell-mode-hook
		  eshell-mode-hook))
  (add-hook mode (lambda () (display-line-numbers-mode 0))))
(use-package all-the-icons-dired
:hook (dired-mode . all-the-icons-dired-mode))
 

font

    (defvar efs/default-font-size 120)
  (defvar efs/default-variable-font-size 120)
  (set-face-attribute 'default nil :font "Fira Code" :height efs/default-font-size)

  ;; Set the fixed pitch face
  (set-face-attribute 'fixed-pitch nil :font "Fira Code" :height efs/default-font-size)
(use-package ligature
  :config
(ligature-set-ligatures 't '("www"))
(ligature-set-ligatures 'prog-mode '("www" "**" "***" "**/" "*>" "*/" "\\\\" "\\\\\\" "{-" "::"
                                     ":::" ":=" "!!" "!=" "!==" "-}" "----" "-->" "->" "->>"
                                     "-<" "-<<" "-~" "#{" "#[" "##" "###" "####" "#(" "#?" "#_"
                                     "#_(" ".-" ".=" ".." "..<" "..." "?=" "??" ";;" "/*" "/**"
                                     "/=" "/==" "/>" "//" "///" "&&" "||" "||=" "|=" "|>" "^=" "$>"
                                     "++" "+++" "+>" "=:=" "==" "===" "==>" "=>" "=>>" "<="
                                     "=<<" "=/=" ">-" ">=" ">=>" ">>" ">>-" ">>=" ">>>" "<*"
                                     "<*>" "<|" "<|>" "<$" "<$>" "<!--" "<-" "<--" "<->" "<+"
                                     "<+>" "<=" "<==" "<=>" "<=<" "<>" "<<" "<<-" "<<=" "<<<"
                                     "<~" "<~~" "</" "</>" "~@" "~-" "~>" "~~" "~~>" "%%"))
)
(global-ligature-mode 't)

evil and general

     (use-package general
     :after evil
     :config
     (general-create-definer efs/leader-keys
	:keymaps '(normal insert visual emacs)
	:prefix "SPC"
	:global-prefix "C-SPC")

     (efs/leader-keys
	"f" '(:ignore f :which-key "file")
	"ff" 'find-file
	"a" '(:ignore a :which-key "bookmarks")
	"aa" 'bookmark-set
	"am" 'list-bookmarks
	"b" '(:ignore b :which-key "buffer")
	"bb" 'switch-to-buffer
	"bk" 'kill-buffer
	"t"  '(:ignore t :which-key "toggles")
 "th" '(counsel-load-theme :which-key "choose theme")
	"tm" 'treemacs
	"g" '(:ignore g :which-key "git")
	"gc" 'magit-commit
      "gf" 'magit-pull
	"gs" 'magit-status
	"gp" 'magit-push
	"ga"  'magit-stage-file
	"gu" 'magit-unstage-file
	"c" '(:ignore c :which-key "code")
	"cl" 'lsp
	"ca" 'lsp-execute-code-action
	"cg" '(:ignore cg :which-key "goto")
	"cgi" 'lsp-goto-implementation
	"cgd" 'lsp-goto-type-definition
	"cf" '(:ignore cf :which-key "find")
	"cfr" 'lsp-find-refrences
	"cfd" 'lsp-find-definition
	"cfi" 'lsp-find-implementation
	))

   (use-package evil
     :init
     (setq evil-want-integration t)
     (setq evil-want-keybinding nil)
     (setq evil-want-C-u-scroll t)
     (setq evil-want-C-i-jump nil)
     (setq evil-undo-system 'undo-tree)
     :config
     (evil-mode 1)
     (define-key evil-insert-state-map (kbd "C-g") 'evil-normal-state)
     (define-key evil-insert-state-map (kbd "C-h") 'evil-delete-backward-char-and-join)

     ;; Use visual line motions even outside of visual-line-mode buffers
     (evil-global-set-key 'motion "j" 'evil-next-visual-line)
     (evil-global-set-key 'motion "k" 'evil-previous-visual-line)

     (evil-set-initial-state 'messages-buffer-mode 'normal)
     (evil-set-initial-state 'dashboard-mode 'normal))

   (use-package evil-collection
     :after evil
     :config
     (evil-collection-init))
 (use-package undo-tree
   :straight t
   :after evil
   :init
   (global-undo-tree-mode))
 (use-package vimish-fold
   :straight t
   :after evil)
 (use-package evil-vimish-fold
   :after vimish-fold
   :init 
 (global-evil-vimish-fold-mode 1)
   )

Themeing

changed to nerd icons

	 (use-package doom-themes
	;; :init (load-theme 'doom-nova t)
	)
   (use-package catppuccin-theme
     :init (load-theme 'catppuccin t))
   (use-package modus-themes
     ;; :init (load-theme 'modus-operandi-tinted t)
     )
   ;; (load-theme 'modus-operandi)
     (use-package nerd-icons
	)
     (use-package doom-modeline
	:init (doom-modeline-mode 1)
	:custom ((doom-modeline-height 15)))

Dashboard

      (use-package dashboard
      :straight t
      :config
      (dashboard-setup-startup-hook))
  ;; Set the title
(setq dashboard-banner-logo-title "Welcome to the dungeon")
    (setq dashboard-items '((recents  . 5)
			    (bookmarks . 5)
			    (projects . 5)
			    (agenda . 5)
			    (registers . 5)))
  ;; (setq dashboard-center-content t)

  ;; To disable shortcut "jump" indicators for each section, set
  (setq dashboard-show-shortcuts nil)
(setq dashboard-display-icons-p t) ;; display icons on both GUI and terminal
(setq dashboard-icon-type 'nerd-icons) ;; use `nerd-icons' package

misc packages

  (use-package command-log-mode
  :commands command-log-mode)
(use-package which-key
  :defer 0
  :diminish which-key-mode
  :config
  (which-key-mode)
  (setq which-key-idle-delay 1))

(use-package evil-nerd-commenter
  :bind ("M-/" . evilnc-comment-or-uncomment-lines))

(use-package rainbow-delimiters
  :hook (prog-mode . rainbow-delimiters-mode))

Lsp and completions

  (use-package ivy
  :diminish
  :bind (("C-s" . swiper)
	   :map ivy-minibuffer-map
	   ("TAB" . ivy-alt-done)
	   ("C-l" . ivy-alt-done)
	   ("C-j" . ivy-next-line)
	   ("C-k" . ivy-previous-line)
	   :map ivy-switch-buffer-map
	   ("C-k" . ivy-previous-line)
	   ("C-l" . ivy-done)
	   ("C-d" . ivy-switch-buffer-kill)
	   :map ivy-reverse-i-search-map
	   ("C-k" . ivy-previous-line)
	   ("C-d" . ivy-reverse-i-search-kill))
  :config
  (ivy-mode 1))

(use-package ivy-rich
  :after ivy
  :init
  (ivy-rich-mode 1))

(use-package counsel
  :bind (("C-M-j" . 'counsel-switch-buffer)
	   :map minibuffer-local-map
	   ("C-r" . 'counsel-minibuffer-history))
  :custom
  (counsel-linux-app-format-function #'counsel-linux-app-format-function-name-only)
  :config
  (counsel-mode 1))

(use-package ivy-prescient
  :after counsel
  :custom
  (ivy-prescient-enable-filtering nil)
  :config
  ;; Uncomment the following line to have sorting remembered across sessions!
  ;(prescient-persist-mode 1)
  (ivy-prescient-mode 1))

(use-package helpful
  :commands (helpful-callable helpful-variable helpful-command helpful-key)
  :custom
  (counsel-describe-function-function #'helpful-callable)
  (counsel-describe-variable-function #'helpful-variable)
  :bind
  ([remap describe-function] . counsel-describe-function)
  ([remap describe-command] . helpful-command)
  ([remap describe-variable] . counsel-describe-variable)
  ([remap describe-key] . helpful-key))

(use-package hydra
  :defer t)

(defhydra hydra-text-scale (:timeout 4)
  "scale text"
  ("j" text-scale-increase "in")
  ("k" text-scale-decrease "out")
  ("f" nil "finished" :exit t))

(efs/leader-keys
  "ts" '(hydra-text-scale/body :which-key "scale text"))

(use-package flycheck
  :init (global-flycheck-mode))
;; company-mode 
;;(global-company-mode)

(use-package lsp-mode
  :commands lsp
  :hook ((rjsx-mode c-mode racekt-mode).lsp-mode)
  :init
  (setq lsp-keymap-prefix "C-c l")  ;; Or 'C-l', 's-l'
  :config
  (lsp-enable-which-key-integration t))

(use-package lsp-ui
  :hook (lsp-mode . lsp-ui-mode)
  :custom
  (lsp-ui-doc-position 'bottom))

(use-package lsp-treemacs
  :after lsp)

(use-package lsp-ivy
  :after lsp)

;; (use-package dap-mode
;;     :commands dap-debug
;;   :config
;;   ;; Set up Node debugging
;;   (require 'dap-node)
;;   (dap-node-setup) ;; Automatically installs Node debug adapter if needed

;;   ;; Bind `C-c l d` to `dap-hydra` for easy access
;;   (general-define-key
;;     :keymaps 'lsp-mode-map
;;     :prefix lsp-keymap-prefix
;;     "d" '(dap-hydra t :wk "debugger")))

(use-package company
  :after lsp-mode
  :hook (lsp-mode . company-mode)
  :bind (:map company-active-map
	   ("<tab>" . company-complete-selection))
	  (:map lsp-mode-map
	   ("<tab>" . company-indent-or-complete-common))
  :custom
  (company-minimum-prefix-length 1)
  (company-idle-delay 0.0))

(use-package company-box
  :hook (company-mode . company-box-mode))

snippets

  (use-package yasnippet
  :after ivy 
  :init
  (setq yas-snippet-dir "~/.emacs.d/snippets"))
(use-package yasnippet-snippets
  :after yasnippet)
(yas-global-mode t)

language modes

python

      (use-package python-mode
      :hook (python-mode . lsp-deferred)
      :custom
      ;; NOTE: Set these if Python 3 is called "python3" on your system!
      (python-shell-interpreter "python3")
      (dap-python-executable "python3")
      (dap-python-debugger 'debugpy)
      :config
      (require 'dap-python))

    (use-package pyvenv
      :after python-mode
      :config
      (pyvenv-mode 1))
    (use-package lsp-jedi
      :straight t)
(use-package lsp-pyright
    :straight t
        :hook (python-mode . (lambda () (require 'lsp-pyright)))
    :init (when (executable-find "python3")
              (setq lsp-pyright-python-executable-cmd "python3")))

typescript

(use-package typescript-mode
 :mode "\\.ts\\'"
 :hook (typescript-mode . lsp-deferred)
 :config
 (setq typescript-indent-level 2))

general programing

(electric-pair-mode 1)
(defun transparency (value)
 "Sets the transparency of the frame window. 0=transparent/100=opaque"
 (interactive "nTransparency Value 0 - 100 opaque:")
 (set-frame-parameter (selected-frame) 'alpha value))

Racket

(use-package racket-mode
  :mode "\\.rkt\\'"
 :hook(racket-mode . lsp-deferred) 
  

  ) 

pdf

(use-package pdf-tools
  :mode "\\.pdf\\'"

  ) 

Java

  (use-package lsp-java :mode "\\.java\\'"
:hook(java-mode . lsp-deferred) )
(use-package dap-mode :after lsp-mode :config (dap-auto-configure-mode))

Latex

(use-package auctex
  :straight t
  :mode "\\.tex\\'"
  ) 

javaScript

(use-package rjsx-mode
  :mode "\\.js\\'"
  )
(defun setup-tide-mode
    (interactive)
  (tide-setup)
  (flycheck-mode +1)
  (setq flycheck-mode-check-syntax-automatically '(save-mode-enabled))
  (tide-hl-identifier-mode +1)
  (company-mode+1))
(use-package tide
  :after (rjsx-mode company flycheck)
  :hook (rjsx-mode .setup-tide-mode))
(use-package prettier-js
  :after (rjsx-mode)
  :hook (rjsx-mode . prettier-js-mode))

projectile stuff

  (use-package projectile
  :diminish projectile-mode
  :config (projectile-mode)
  :custom ((projectile-completion-system 'ivy))
  :bind-keymap
  ("C-c p" . projectile-command-map)
  :init
  ;; NOTE: Set this to the folder where you keep your Git repos!
  (when (file-directory-p "~/Documents/repos")
    (setq projectile-project-search-path '("~/Documents/repos")))
  (setq projectile-switch-project-action #'projectile-dired))

(use-package counsel-projectile
  :after projectile
  :config (counsel-projectile-mode))

magit

 (use-package magit
  :commands magit-status
  :custom
  (magit-display-buffer-function #'magit-display-buffer-same-window-except-diff-v1))

;; NOTE: Make sure to configure a GitHub token before using this package!
;; - https://magit.vc/manual/forge/Token-Creation.html#Token-Creation
;; - https://magit.vc/manual/ghub/Getting-Started.html#Getting-Started
(use-package forge
  :after magit)

terminal

(use-package vterm
:commands vterm
:config
(setq term-prompt-regexp "^[^#$%>\n]*[#$%>] *")  ;; Set this to match your custom shell prompt
;;(setq vterm-shell "zsh")                       ;; Set this to customize the shell to launch
(setq vterm-max-scrollback 10000))

org mode

(defun efs/org-font-setup ()
;; Replace list hyphen with dot
(font-lock-add-keywords 'org-mode
			  '(("^ *\\([-]\\) "
			     (0 (prog1 () (compose-region (match-beginning 1) (match-end 1) ""))))))

;; Set faces for heading levels
(dolist (face '((org-level-1 . 1.2)
		  (org-level-2 . 1.1)
		  (org-level-3 . 1.05)
		  (org-level-4 . 1.0)
	 ))))
(use-package org-bullets
:hook (org-mode . org-bullets-mode)
:custom
(org-bullets-bullet-list '("" "" "" "" "" "" "")))
;; seting org directory
(setq org-directory "~/Documents/OrgFiles")
(setq org-agenda-files '("Tasks.org" "notes.org"))

mac os

(when(string= "darwin" system-type) 
(add-to-list 'image-types 'svg))