(unless (package-installed-p 'evil ) (package-install 'evil ))
(use-package evil :config (evil-mode))
(use-package tex :ensure auctex)
(use-package auctex-latexmk)
(use-package helm :diminish helm-mode
:init
(global-set-key (kbd " M-x" ) 'helm-M-x )
(setq helm-autoresize-mode t )
(setq helm-display-header-line nil )
(setq helm-buffer-max-length 30 )
(helm-mode 1 )
(add-hook 'helm-minibuffer-set-up-hook 'helm-exchange-minibuffer-and-header-line ))
(use-package helm-bibtex
:init
(with-eval-after-load 'helm-bibtex
(require 'bibtex-completion )
; ; changing the default action of helm-bibtex
(helm-add-action-to-source " Insert BibTeX key" 'helm-bibtex-insert-citation helm-source-bibtex 0 )
(setq bibtex-completion-cite-prompt-for-optional-arguments nil )
(setq bibtex-completion-display-formats (quote ((t . " ${year:4} ${author:26} ${title:**} " ))))))
(use-package org-ref)
(use-package org-roam)
(use-package org-roam-ui)
(use-package openwith :init (openwith-mode t )
(cond ((equal system-type 'gnu/linux )
(setq process-connection-type nil )
(setq openwith-associations '((" \\ .pdf\\ '" " xdg-open" (file)))))
((equal system-type 'darwin )
(setq openwith-associations '((" \\ .pdf\\ '" " open -a Skim.app" (file))
(" \\ .hwp\\ '" " open" (file))
(" \\ .hwpx\\ '" " open" (file))
(" \\ .pptx\\ '" " open" (file))
(" \\ .xlsx\\ '" " open" (file))
(" \\ .docx\\ '" " open" (file))
(" \\ .djvu\\ '" " open" (file)))))
(t
(setq openwith-associations '((" \\ .pdf\\ '" " open" (file))
(" \\ .hwp\\ '" " open" (file))
(" \\ .hwpx\\ '" " open" (file))
(" \\ .pptx\\ '" " open" (file))
(" \\ .xlsx\\ '" " open" (file))
(" \\ .docx\\ '" " open" (file))
(" \\ .djvu\\ '" " open" (file)))))))
(use-package yasnippet :diminish yas-minor-mode
:init
(setq yas-snippet-dirs (list (concat *nbm-home* " nbm-user-settings/snippets/" )
(concat " ~/nbm-root/newbiemacs/nbm-user-settings/snippets" )))
(setq yas-triggers-in-field t ); Enable nested triggering of snippets
(add-to-list 'warning-suppress-types '(yasnippet backquote-change))
(yas-global-mode 1 ) (yas-reload-all ))
(use-package spacemacs-theme :defer t
:init (load-theme 'spacemacs-dark t ))
(use-package spaceline)
(use-package which-key :diminish which-key-mode
:init
(setq which-key-sort-order 'which-key-key-order-alpha )
(setq which-key-idle-delay 0.1 )
(setq which-key-prefix-prefix nil )
(which-key-mode 1 )
(set-face-attribute 'which-key-key-face nil
:foreground " MediumSpringGreen" :weight 'bold )
(set-face-attribute 'which-key-separator-face nil
:foreground " Antiquewhite1" )
(set-face-attribute 'which-key-command-description-face nil
:foreground " SandyBrown" )
(set-face-attribute 'which-key-group-description-face nil
:foreground " Deepskyblue1" )
(set-face-attribute 'which-key-note-face nil
:foreground " Mediumpurple1" ))
(use-package magit
:init
(setq transient-values
'((magit-log:magit-log-mode " -n256" " --graph" " --color" " --decorate" ))))
(use-package evil-surround
:bind (:map evil-visual-state-map
(" s" . evil-surround-region))
:init (global-evil-surround-mode 1 ))
(use-package evil-org :diminish evil-org-mode
:init
(with-eval-after-load 'evil-org
(add-to-list 'load-path (concat (getenv " HOME" ) " /.emacs.d/plugins/evil-org-mode" ))
(add-hook 'org-mode-hook 'evil-org-mode )
(evil-org-set-key-theme '(navigation insert textobjects additional calendar))
(evil-define-key 'insert 'evil-org-mode (kbd " C-d" ) 'delete-char )
(evil-define-key 'insert 'evil-org-mode (kbd " RET" ) 'org-return-and-maybe-indent )
(require 'evil-org-agenda )
(evil-org-agenda-set-keys)))
(use-package evil-nerd-commenter)
(use-package undo-tree :diminish undo-tree-mode
:init
(evil-set-undo-system 'undo-tree )
(global-undo-tree-mode 1 ))
(use-package company :diminish company-mode
:init (global-company-mode))
(use-package org-bullets
:init
(add-hook 'org-mode-hook (lambda () (org-bullets-mode 1 ))))
(use-package ox-reveal)
(use-package org-pomodoro)
(use-package winum
:init
(setq winum-keymap
(let ((map (make-sparse-keymap )))
(define-key map (kbd " M-0" ) 'winum-select-window-0-or-10 )
(define-key map (kbd " M-1" ) 'winum-select-window-1 )
(define-key map (kbd " M-2" ) 'winum-select-window-2 )
(define-key map (kbd " M-3" ) 'winum-select-window-3 )
(define-key map (kbd " M-4" ) 'winum-select-window-4 )
(define-key map (kbd " M-5" ) 'winum-select-window-5 )
(define-key map (kbd " M-6" ) 'winum-select-window-6 )
(define-key map (kbd " M-7" ) 'winum-select-window-7 )
(define-key map (kbd " M-8" ) 'winum-select-window-8 )
map))
(winum-mode))
(use-package anzu :diminish anzu-mode
:init
(global-anzu-mode +1 )
(setq anzu-cons-mode-line-p nil )
(custom-set-faces
`(lazy-highlight ((t (:foreground " #Ffd60a" :background " #Ff3e96" ))))))
(use-package rainbow-delimiters :diminish rainbow-delimiters-mode
:init
(add-hook 'emacs-lisp-mode-hook #'rainbow-delimiters-mode ) ; coloring nested parentheses
(add-hook 'python-mode-hook #'rainbow-delimiters-mode )
(add-hook 'LaTeX-mode-hook #'rainbow-delimiters-mode ))
(use-package smartparens :diminish smartparens-mode
:init
(require 'smartparens-config )
(smartparens-global-mode))
(use-package valign :diminish valign-mode
:init (add-hook 'org-mode-hook #'valign-mode ))
(use-package beacon :diminish beacon-mode
:init (beacon-mode 1 ))
(use-package avy
:init
(setq avy-background t )
(setq avy-keys (number-sequence ?a ?z ))
(global-set-key (kbd " M-n" ) 'avy-goto-word-or-subword-1 )
(setq avy-all-windows nil ))
(use-package org-mac-link)
(use-package diminish)
(with-eval-after-load 'org-indent (diminish 'org-indent-mode ))
(with-eval-after-load 'reftex (diminish 'reftex-mode ))
(with-eval-after-load 'autorevert (diminish 'auto-revert-mode ))
(with-eval-after-load 'eldoc (diminish 'eldoc-mode ))
(diminish 'visual-line-mode )
(diminish 'org-roam-ui-mode )
(diminish 'org-roam-ui-follow-mode )
(dolist (file (directory-files (concat (getenv " HOME" ) " /nbm-root/nbm-system" ) t " [.]el$" ))
(load-file file))
(setq bookmark-default-file (concat *nbm-home* " nbm-user-settings/references/bookmark.el" ))
(nbm-key-tree-load)
(cond ((equal system-type 'windows-nt )
(setq ispell-program-name " hunspell" )
(setq ispell-dictionary " en_US" )
(setq ispell-hunspell-dictionary-alist '((" en_US" " c:/msys64/mingw64/share/hunspell/en_US.aff" )))
(setq ispell-local-dictionary-alist '((" en_US" " [[:alpha:]]" " [^[:alpha:]]" " [']" nil (" -d" " en_US" ) nil utf-8))))
((equal system-type 'darwin )
(if (file-exists-p " /opt/homebrew/bin/ispell" )
(setq ispell-program-name " /opt/homebrew/bin/ispell" )
(setq ispell-program-name " /usr/local/bin/ispell" )))
((equal system-type 'gnu/linux )
(setq ispell-program-name " /usr/bin/ispell" )))
(unless (file-exists-p (concat *nbm-home* " nbm-user-settings/references/my-dictionary" ))
(copy-file (concat (getenv " HOME" ) " /nbm-root/newbiemacs/nbm-user-settings/references/my-dictionary" )
(concat *nbm-home* " nbm-user-settings/references/my-dictionary" )))
(setq ispell-personal-dictionary (concat *nbm-home* " nbm-user-settings/references/my-dictionary" ))
(setq mac-command-modifier 'meta )
(setq mac-option-modifier 'apple )
(setq x-select-enable-clipboard t )
(setq delete-by-moving-to-trash t )
(when (eq system-type 'darwin )
(setq trash-directory " ~/.Trash" ))
(setq help-window-select t )
(defalias 'yes-or-no-p 'y-or-n-p )
(setq large-file-warning-threshold nil )
(save-place-mode )
(setq find-file-visit-truename t )
(recentf-mode 1 )
(setq recentf-max-menu-items 55 )
(setq recentf-max-saved-items 55 )
(setq sentence-end-double-space nil )
(add-to-list 'auto-mode-alist '(" \\ .sage\\ '" . python-mode))
(global-visual-line-mode )
(global-hl-line-mode )
(setq max-mini-window-height 0.8 )
(tool-bar-mode -1 )
(setq scroll-step 1 ) ; ; keyboard scroll one line at a time
(set-face-attribute 'default nil :height 150 )
(setq ring-bell-function 'ignore )
(setq resize-mini-windows t )
(set-cursor-color " LightGreen" )
(setq inhibit-startup-screen t )
(global-tab-line-mode)
(setq tab-line-new-button-show nil )
(setq tab-line-separator " " )
(set-face-attribute 'tab-line-tab nil
:background " YellowGreen" :foreground " black" :box nil )
(set-face-attribute 'tab-line-tab-current nil
:background " Yellow1" :foreground " black" :box nil )
(set-face-attribute 'tab-line-tab-inactive nil
:background " DarkGray" :foreground " black" :box nil )
(set-face-attribute 'tab-line-highlight nil
:background " Seagreen1" :foreground 'unspecified )
(setq tab-line-exclude-modes
'(help-mode completion-list-mode org-agenda-mode helm-major-mode magit-status-mode))
(setq tab-line-tab-name-function 'tab-line-tab-name-truncated-buffer )
(setq tab-line-tab-name-truncated-max 15 )
(spaceline-spacemacs-theme)
(spaceline-helm-mode)
(spaceline-info-mode)
(setq winum-auto-setup-mode-line nil )
(setq mode-line-position (list " (%l,%c)" ))
(setq display-time-mode t )
(setq size-indication-mode t )
(setq spaceline-highlight-face-func 'spaceline-highlight-face-evil-state )
(spaceline-toggle-input-method-on)
(spaceline-toggle-version-control-off)
(spaceline-toggle-buffer-encoding-abbrev-off)
(setq spaceline-org-clock-p t )
(setq org-clock-mode-line-total 'today )
(evil-set-leader '(normal visual motion) (kbd " SPC" ))
(evil-set-leader '(normal visual motion) (kbd " ," ) t )
(evil-set-leader '(normal visual motion insert emacs) (kbd " M-o" ))
(evil-set-leader '(normal visual motion insert emacs) (kbd " M-RET" ) t )
(define-key evil-visual-state-map (kbd " j" ) 'evil-next-visual-line )
(define-key evil-visual-state-map (kbd " k" ) 'evil-previous-visual-line )
(define-key evil-visual-state-map (kbd " <down>" ) 'evil-next-visual-line )
(define-key evil-visual-state-map (kbd " <up>" ) 'evil-previous-visual-line )
(define-key evil-normal-state-map (kbd " j" ) 'evil-next-visual-line )
(define-key evil-normal-state-map (kbd " k" ) 'evil-previous-visual-line )
(define-key evil-normal-state-map (kbd " <down>" ) 'evil-next-visual-line )
(define-key evil-normal-state-map (kbd " <up>" ) 'evil-previous-visual-line )
(define-key evil-insert-state-map (kbd " C-y" ) 'yank )
(define-key evil-insert-state-map (kbd " M-y" ) 'helm-show-kill-ring )
(server-start ) ; This is needed for Skim to inverse search
(setq TeX-source-correlate-mode 1 )
(setq reftex-default-bibliography (concat *nbm-home* " nbm-user-settings/references/ref.bib" ))
(setq TeX-save-query nil )
(setq TeX-auto-save t )
(setq TeX-electric-math (cons " \\ ( " " \\ )" ))
(setq reftex-plug-into-AUCTeX t )
(add-hook 'LaTeX-mode-hook 'LaTeX-math-mode )
(add-hook 'LaTeX-mode-hook 'turn-on-reftex )
(add-hook 'LaTeX-mode-hook (lambda () (setq TeX-command-default " LatexMk" )))
; ; On Mac, Skim will be used as a pdf-viewer.
(when (equal system-type 'darwin )
(setq TeX-view-program-list
'((" Skim" " /Applications/Skim.app/Contents/SharedSupport/displayline -b -g %n %o" ))
TeX-view-program-selection '((output-pdf " Skim" ))))
; ; On Windows, SumatraPDF will be used as a pdf-viewer.
(when (equal system-type 'windows-nt )
(load-file (concat (getenv " HOME" ) " /nbm-root/nbm-windows-config.el" )))
; ; The following is helpful for recognizing ^ and _ in latex code.
(custom-set-faces
'(font-latex-script-char-face ((t (:foreground " #Ff9f0a" ))))
'(font-latex-sectioning-1-face ((t (:foreground " #Ff82ab" ))))
'(font-latex-sectioning-2-face ((t (:foreground " #Ffd60a" )))))
(evil-define-key '(normal visual) LaTeX-mode-map (kbd " %" ) 'nbm-latex-evil-jump-item )
(evil-define-key 'emacs reftex-toc-mode-map (kbd " q" ) 'nbm-reftex-toc-quit )
(evil-define-key 'emacs reftex-toc-mode-map (kbd " RET" ) 'nbm-reftex-toc-goto-line-and-hide )
(evil-define-key 'emacs reftex-toc-mode-map (kbd " j" ) 'reftex-toc-next )
(evil-define-key 'emacs reftex-toc-mode-map (kbd " k" ) 'reftex-toc-previous )
(evil-define-key 'emacs reftex-select-label-mode-map (kbd " k" ) 'reftex-select-previous )
(evil-define-key 'emacs reftex-select-label-mode-map (kbd " j" ) 'reftex-select-next )
(global-set-key " \C -\M -e" 'nbm-end-of-defun )
(define-key evil-normal-state-map (kbd " ]]" ) 'nbm-end-of-defun )
(define-key evil-visual-state-map (kbd " ]]" ) 'nbm-end-of-defun )
(auctex-latexmk-setup)
(setq auctex-latexmk-inherit-TeX-PDF-mode t )
; ; To make latexmk use pdflatex we need ~/.latexmkrc file.
(unless (file-exists-p (concat (getenv " HOME" ) " /.latexmkrc" ))
(find-file (concat (getenv " HOME" ) " /.latexmkrc" ))
(insert " $pdf_mode = 1;" )
(save-buffer ) (kill-buffer ))
(require 'reftex-ref )
(setq LaTeX-clean-intermediate-suffixes (remove " \\ .synctex\\ .gz" LaTeX-clean-intermediate-suffixes))
(global-set-key " \C -cl" 'org-store-link )
(global-set-key " \C -cc" 'org-capture )
(setq org-return-follows-link t )
(evil-define-key 'normal org-mode-map (kbd " RET" ) 'org-open-at-point )
(setq org-directory (concat *nbm-home* " org/" ))
(setq org-default-notes-file (concat org-directory " /capture.org" ))
(setq org-agenda-span 1 )
(setq org-log-into-drawer t )
(setq org-startup-with-inline-images nil )
(setq org-duration-format (quote h:mm))
(setq org-startup-indented t )
(setq org-ref-default-bibliography(concat *nbm-home* " nbm-user-settings/references/ref.bib" )
bibtex-completion-bibliography (concat *nbm-home* " nbm-user-settings/references/ref.bib" ))
(eval-after-load " org" '(require 'ox-md nil t ))
(setq org-format-latex-options (plist-put org-format-latex-options :scale 2.0 ))
(define-key org-mode-map (kbd " M-m" ) 'nbm-org-toggle-latex-mode )
(define-key LaTeX-mode-map (kbd " M-m" ) 'nbm-org-toggle-latex-mode )
(define-key org-mode-map (kbd " <drag-n-drop>" ) 'nbm-org-drag-n-drop )
(setq org-imenu-depth 9 )
(nbm-org-load-agenda-files)
(when (package-installed-p 'org-roam )
(setq org-roam-directory (concat *nbm-home* " org/" ))
(org-roam-db-autosync-mode)
(setq org-roam-capture-templates '((" d" " default" plain " %?"
:target (file+head " ${slug}.org"
" #+title: ${title}\n " )))))
(font-lock-add-keywords 'python-mode
'((" <\\ |>\\ |=" . 'anzu-replace-to )
(" +\\ |-\\ |\\ ^\\ |/\\ |*" . 'compilation-info )
(" \\ b[0-9]+\\ b" . 'org-document-info )))
(setq dired-dwim-target t )
(evil-define-key 'normal dired-mode-map (kbd " M-<backspace>" ) 'newbie )
(evil-define-key 'normal dired-mode-map (kbd " SPC" ) 'evil-send-leader )
(evil-define-key 'normal dired-mode-map (kbd " ," ) 'evil-send-localleader )
(evil-define-key 'emacs dired-mode-map (kbd " M-<backspace>" ) 'newbie )
(evil-define-key 'emacs dired-mode-map (kbd " SPC" ) 'evil-send-leader )
(evil-define-key 'emacs dired-mode-map (kbd " ," ) 'evil-send-localleader )
Editing styles (Emacs, Vim, Windows)
(setq evil-default-state 'emacs )
(evil-set-initial-state 'org-agenda-mode 'emacs )
(evil-set-initial-state 'diff-mode 'emacs )
(evil-set-initial-state 'help-mode 'emacs )
(evil-set-initial-state 'Info-mode 'emacs )
(evil-set-initial-state 'org-mode 'emacs )
(unless (nbm-get-user-variable " editing-style" )
(nbm-set-user-variable " editing-style" " windows" ))
(when (equal (nbm-get-user-variable " editing-style" ) " emacs" )
(evil-global-set-key 'emacs (kbd " C-r" ) 'evil-redo ))
(unless (equal (nbm-get-user-variable " editing-style" ) " emacs" )
(define-key minibuffer-local-map (kbd " C-v" ) 'yank )
(define-key minibuffer-local-map (kbd " M-v" ) 'yank )
(define-key helm-map (kbd " C-v" ) 'yank )
(define-key helm-map (kbd " M-v" ) 'yank ))
(when (equal (nbm-get-user-variable " editing-style" ) " vim" )
(evil-set-initial-state 'text-mode 'normal )
(evil-set-initial-state 'org-mode 'normal )
(evil-set-initial-state 'latex-mode 'normal )
(evil-set-initial-state 'bibtex-mode 'normal )
(evil-set-initial-state 'emacs-lisp-mode 'normal )
(evil-set-initial-state 'fundamental-mode 'normal )
(evil-set-initial-state 'snippet-mode 'normal )
(evil-set-initial-state 'python-mode 'normal ))
(when (equal (nbm-get-user-variable " editing-style" ) " windows" )
(eval-after-load 'org
(progn
(define-key org-mode-map (kbd " <S-up>" ) nil )
(define-key org-mode-map (kbd " <S-down>" ) nil )
(define-key org-mode-map (kbd " <S-right>" ) nil )
(define-key org-mode-map (kbd " <S-left>" ) nil )))
(evil-global-set-key 'emacs (kbd " C-v" ) 'yank )
(evil-global-set-key 'emacs (kbd " C-c" ) 'nbm-windows-ctrl-c )
(evil-global-set-key 'emacs (kbd " C-x" ) 'nbm-windows-ctrl-x )
(evil-global-set-key 'emacs (kbd " C-a" ) 'mark-whole-buffer )
(evil-global-set-key 'emacs (kbd " C-f" ) 'isearch-forward )
(evil-global-set-key 'emacs (kbd " C-S-f" ) 'query-replace )
(evil-global-set-key 'emacs (kbd " C-s" ) 'save-buffer )
(evil-global-set-key 'emacs (kbd " C-w" ) 'kill-this-buffer )
(evil-global-set-key 'emacs (kbd " C-1" ) 'delete-other-windows )
(define-key key-translation-map (kbd " ESC" ) (kbd " C-g" ))
(define-key key-translation-map (kbd " C-z" ) (kbd " C-/" ))
(evil-global-set-key 'emacs (kbd " C-y" ) 'evil-redo )
(global-set-key " \C -c\C -c" 'org-capture-finalize )
(global-set-key " \C -c\C -k" 'org-capture-kill )
(setq org-support-shift-select t ))
(when (window-system ) ; if emacs is run as an application other than terminal
(if *nbm-startup-frame*
(nbm-set-startup-frame)
(nbm-magnet-move-frame ?l )))
(newbie)
(if (get-buffer " *scratch*" ) (kill-buffer " *scratch*" ))