summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Cunningham <cc@localhost>2024-05-28 11:19:22 -0700
committerChristian Cunningham <cc@localhost>2024-05-28 11:19:22 -0700
commitf14c2d3fe50de3c55e7c9684e93cdf5608a00b89 (patch)
treea8ea3bdb68779ecdce6d7be8b7d8f56a9ff3b4c1
Initial Commit
-rw-r--r--.gitignore2
-rw-r--r--Osaka Regular-Mono.otfbin0 -> 2004456 bytes
-rw-r--r--nemacs-boilerplate.el17
-rw-r--r--nemacs-functions.el10
-rw-r--r--nemacs-hooks.el10
-rw-r--r--nemacs-keys.el4
-rw-r--r--nemacs-package-auto-package-update.el9
-rw-r--r--nemacs-package-diminish.el7
-rw-r--r--nemacs-package-ido.el16
-rw-r--r--nemacs-package-org.el65
-rw-r--r--nemacs-packages.el44
-rw-r--r--nemacs-personal.el60
-rw-r--r--nemacs-splash.el11
-rw-r--r--nemacs-user.el16
-rw-r--r--nemacs-util.el54
-rw-r--r--nemacs.el34
16 files changed, 359 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ad70b42
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+.DS_Store
+dashboard.org
diff --git a/Osaka Regular-Mono.otf b/Osaka Regular-Mono.otf
new file mode 100644
index 0000000..f7a68cc
--- /dev/null
+++ b/Osaka Regular-Mono.otf
Binary files differ
diff --git a/nemacs-boilerplate.el b/nemacs-boilerplate.el
new file mode 100644
index 0000000..30841d1
--- /dev/null
+++ b/nemacs-boilerplate.el
@@ -0,0 +1,17 @@
+(setq gc-cons-threshold 402653184
+ gc-cons-percentage 0.6)
+
+(defvar startup/file-name-handler-alist file-name-handler-alist)
+(setq file-name-handler-alist nil)
+
+(defun startup/revert-file-name-handler-alist ()
+ (setq file-name-handler-alist startup/file-name-handler-alist))
+
+(defun startup/reset-gc ()
+ (setq gc-cons-threshold 16777216
+ gc-cons-percentage 0.1))
+
+(add-hook 'emacs-startup-hook 'startup/revert-file-name-handler-alist)
+(add-hook 'emacs-startup-hook 'startup/reset-gc)
+
+(provide 'nemacs-boilerplate)
diff --git a/nemacs-functions.el b/nemacs-functions.el
new file mode 100644
index 0000000..5513fae
--- /dev/null
+++ b/nemacs-functions.el
@@ -0,0 +1,10 @@
+(defun nemacs/replace-in-buffer ()
+ (interactive)
+ (save-excursion
+ (if (equal mark-active nil) (mark-word))
+ (setq nm/rib/current-word (buffer-substring-no-properties (mark) (point)))
+ (setq nm/rib/old-string (read-string "OLD string:\n" nm/rib/current-word))
+ (setq nm/rib/new-string (read-string "NEW string:\n" nm/rib/old-string))
+ (query-replace nm/rib/old-string nm/rib/new-string nil (point-min) (point-max))))
+
+(provide 'nemacs-functions)
diff --git a/nemacs-hooks.el b/nemacs-hooks.el
new file mode 100644
index 0000000..754e58a
--- /dev/null
+++ b/nemacs-hooks.el
@@ -0,0 +1,10 @@
+;; HTML-mode
+(add-hook 'html-mode-hook
+ (lambda ()
+ (set (make-local-variable 'sgml-basic-offset) 4)))
+
+;; Org Mode
+(setq org-latex-compiler nm/user/latex-compiler
+ org-export-with-smart-quotes t)
+
+(provide 'nemacs-hooks)
diff --git a/nemacs-keys.el b/nemacs-keys.el
new file mode 100644
index 0000000..1715900
--- /dev/null
+++ b/nemacs-keys.el
@@ -0,0 +1,4 @@
+;(global-set-key (kbd "C-x w") 'ace-select-window)
+(global-set-key (kbd "C-z") 'nemacs/replace-in-buffer)
+
+(provide 'nemacs-keys)
diff --git a/nemacs-package-auto-package-update.el b/nemacs-package-auto-package-update.el
new file mode 100644
index 0000000..a099125
--- /dev/null
+++ b/nemacs-package-auto-package-update.el
@@ -0,0 +1,9 @@
+(use-package auto-package-update
+ :defer nil
+ :ensure t
+ :config
+ (setq auto-package-update-delete-old-versions t)
+ (setq auto-package-update-hide-results t)
+ (auto-package-update-maybe))
+
+(provide 'nemacs-package-auto-package-update)
diff --git a/nemacs-package-diminish.el b/nemacs-package-diminish.el
new file mode 100644
index 0000000..d283082
--- /dev/null
+++ b/nemacs-package-diminish.el
@@ -0,0 +1,7 @@
+(use-package diminish
+ :ensure t
+ :config
+ (diminish 'visual-line-mode)
+ (diminish 'abbrev-mode))
+
+(provide 'nemacs-package-diminish)
diff --git a/nemacs-package-ido.el b/nemacs-package-ido.el
new file mode 100644
index 0000000..5b5d3a9
--- /dev/null
+++ b/nemacs-package-ido.el
@@ -0,0 +1,16 @@
+(use-package ido
+ :ensure t
+ :init
+ (ido-mode 1)
+ :config
+ (setq ido-enable-flex-matching nil)
+ (setq ido-create-new-buffer 'always)
+ (setq ido-everywhere t))
+(use-package ido-vertical-mode
+ :ensure t
+ :config
+ (setq ido-vertical-define-keys 'C-n-C-p-up-and-down)
+ :init
+ (ido-vertical-mode 1))
+
+(provide 'nemacs-package-ido)
diff --git a/nemacs-package-org.el b/nemacs-package-org.el
new file mode 100644
index 0000000..5284334
--- /dev/null
+++ b/nemacs-package-org.el
@@ -0,0 +1,65 @@
+(use-package org
+ :init
+ (custom-declare-face '+org-todo-active '((t (:inherit (bold font-lock-constant-face org-todo)))) "")
+ (custom-declare-face '+org-todo-project '((t (:inherit (bold font-lock-doc-face org-todo)))) "")
+ (custom-declare-face '+org-todo-onhold '((t (:inherit (bold warning org-todo)))) "")
+ (custom-declare-face '+org-todo-cancel '((t (:inherit (bold error org-todo)))) "")
+ (unless (file-exists-p nm/user/org-directory)
+ (make-directory nm/user/org-directory))
+ (setq org-directory nm/user/org-directory
+ org-agenda-files (list (concat nm/user/org-directory nm/user/org-todo-file-name))
+ org-todo-keywords
+ '((sequence "TODO(t)"
+ "STRT(s)"
+ "WAIT(w)"
+ "|"
+ "DONE(d)"
+ "KILL(k)")
+ (sequence "[ ](T)"
+ "[-](S)"
+ "[?](W)"
+ "|"
+ "[X](D)")
+ (sequence "|"
+ "OKAY(o)"
+ "YES(y)"
+ "NO(n)"))
+ org-capture-templates
+ '(("n" "Notes" entry (file+olp+datetree (concat nm/user/org-directory nm/user/org-notes-file-name) "Notes")
+ "* %?\nEntered on %U\n %i\n %a")
+ ("t" "Todo" entry (file+headline (concat nm/user/org-directory nm/user/org-todo-file-name) "Tasks")
+ "* TODO %?\n %i\n %a"))
+ org-todo-keyword-faces
+ '(("[-]" . +org-todo-active)
+ ("STRT" . +org-todo-active)
+ ("[?]" . +org-todo-onhold)
+ ("WAIT" . +org-todo-onhold)
+ ("HOLD" . +org-todo-onhold)
+ ("PROJ" . +org-todo-project)
+ ("NO" . +org-todo-cancel)
+ ("KILL" . +org-todo-cancel)))
+ :config
+ (global-set-key (kbd "C-c l") 'org-store-link)
+ (global-set-key (kbd "C-c a") 'org-agenda)
+ (global-set-key (kbd "C-c c") 'org-capture))
+
+(defun nemacs/hide-org-mode-stars ()
+ "Hides the section stars"
+ (font-lock-add-keywords
+ nil
+ '(("^\\*+ "
+ (0
+ (prog1 nil
+ (put-text-property (match-beginning 0) (match-end 0)
+ 'invisible t)))))))
+
+(if nm/user/org-hideaway
+ (add-hook 'org-mode-hook #'nemacs/hide-org-mode-stars))
+(setq org-hide-emphasis-markers nm/user/org-hideaway)
+
+(custom-set-faces
+ '(org-level-1 ((t (:inherit outline-1 :extend nil :weight extra-bold :height 1.4))))
+ '(org-level-2 ((t (:inherit outline-2 :extend nil :slant italic :weight bold :height 1.2))))
+ '(org-level-3 ((t (:inherit outline-3 :extend nil :weight semi-bold)))))
+
+(provide 'nemacs-package-org)
diff --git a/nemacs-packages.el b/nemacs-packages.el
new file mode 100644
index 0000000..b9b7a80
--- /dev/null
+++ b/nemacs-packages.el
@@ -0,0 +1,44 @@
+;; Automatically update packages
+(require 'nemacs-package-auto-package-update)
+;; Org Mode
+(require 'nemacs-package-org)
+;; Remove Minor Modes from Modeline
+(require 'nemacs-package-diminish)
+;; Flyspell Autocorrect
+(use-package flyspell
+ :ensure t
+ :diminish flyspell-mode)
+;; Which-key mode
+(use-package which-key
+ :ensure t
+ :diminish which-key-mode
+ :init
+ (which-key-mode +1))
+;; Parentheses
+(use-package paren
+ :ensure t
+ :config
+ (show-paren-mode +1)
+ (setq show-paren-style 'expression
+ show-paren-when-point-inside-paren t
+ show-parent-when-point-in-periphery t))
+;; Ido Completions
+(require 'nemacs-package-ido)
+;; HTML Highlighting
+(use-package htmlize
+ :ensure t)
+;; Argument documentation in the status bar
+(use-package eldoc
+ :ensure t
+ :diminish eldoc-mode
+ :hook
+ ((emacs-lisp-mode-hook lisp-interaction-mode-hook) . eldoc-mode))
+;; Avy
+(use-package avy
+ :ensure t
+ :config
+ (global-set-key (kbd "C-:") 'avy-goto-word-0)
+ (global-set-key (kbd "M-g l") 'avy-goto-line)
+ (global-set-key (kbd "M-g w") 'avy-goto-word-0))
+
+(provide 'nemacs-packages)
diff --git a/nemacs-personal.el b/nemacs-personal.el
new file mode 100644
index 0000000..f7e82ad
--- /dev/null
+++ b/nemacs-personal.el
@@ -0,0 +1,60 @@
+;; Ignore bell
+(setq ring-bell-function 'ignore)
+
+(setq python-shell-interpreter "~/.micromamba/envs/emacs-py/bin/ipython"
+ python-shell-interpreter-args "--pylab")
+
+
+;(add-hook 'python-ts-mode-hook #'(lambda () (progn
+; (local-set-key (kbd "C-c l a") 'eglot-code-action-inline)
+; (local-set-key (kbd "C-c l r") 'eglot-rename)
+; (local-set-key (kbd "C-c l f") 'eglot-format)
+; (local-set-key (kbd "C-c l d") 'eldoc))))
+;(add-hook 'python-ts-mode-hook 'eglot-ensure)
+
+(add-to-list 'major-mode-remap-alist '(python-mode . python-ts-mode))
+
+(setq org-format-latex-options (plist-put org-format-latex-options :scale 1.8))
+(let ((png (cdr (assoc 'dvipng org-preview-latex-process-alist))))
+ (plist-put png :latex-compiler '("latex -interaction nonstopmode -output-directory %o %F"))
+ (plist-put png :image-converter '("dvipng -D %D -T tight -o %O %F"))
+ (plist-put png :transparent-image-converter '("dvipng -D %D -T tight -bg Transparent -o %O %F")))
+
+(org-babel-do-load-languages
+ 'org-babel-load-languages
+ '((python . t)
+ (gnuplot . t)
+ (R . t)))
+(setq org-babel-python-command python-shell-interpreter)
+(setq org-babel-R-command "/usr/local/bin/R --slave --no-save")
+(setq org-babel-gnuplot-command "/usr/local/bin/gnuplot")
+(setq org-confirm-babel-evaluate nil)
+
+(defun nm/personal/ignore-angle-brackets ()
+ "Ignore angle brackets in org mode"
+ (modify-syntax-entry ?< ".")
+ (modify-syntax-entry ?> "."))
+(add-hook 'org-mode-hook 'nm/personal/ignore-angle-brackets)
+
+(add-to-list 'load-path "~/.emacs.d/extras/")
+(require 'writegood-mode)
+(global-set-key (kbd "C-c g") 'writegood-mode)
+
+(with-eval-after-load 'python
+ (defun python-shell-completion-native-try ()
+ "Return non-nil if can trigger native completion."
+ (let ((python-shell-completion-native-enable t)
+ (python-shell-completion-native-output-timeout
+ python-shell-completion-native-try-output-timeout))
+ (python-shell-completion-native-get-completions
+ (get-buffer-process (current-buffer))
+ nil "_"))))
+
+(setq sentence-end-double-space nil)
+
+(setq nm/dashboard-file nil)
+(setq nm/dashboard-file "~/nemacs/dashboard.org")
+(if nm/dashboard-file
+ (find-file nm/dashboard-file))
+
+(provide 'nemacs-personal)
diff --git a/nemacs-splash.el b/nemacs-splash.el
new file mode 100644
index 0000000..d9e01c8
--- /dev/null
+++ b/nemacs-splash.el
@@ -0,0 +1,11 @@
+(switch-to-buffer "*splash*")
+(with-current-buffer "*splash*"
+ (let* ((message "Welcome to nEmacs")
+ (message-len (length message)))
+ (insert
+ (concat
+ (make-string (/ (- (window-total-width) message-len) 2) ? )
+ message
+ "\n"))))
+
+(provide 'nemacs-splash)
diff --git a/nemacs-user.el b/nemacs-user.el
new file mode 100644
index 0000000..337c18c
--- /dev/null
+++ b/nemacs-user.el
@@ -0,0 +1,16 @@
+(setq user-full-name "Sergey Bilovytskyy"
+ user-mail-address "sergey@sbrl.xyz")
+
+(setq default-directory "~/"
+ default-input-method "ukrainian-computer"
+ disable-lockfiles nil)
+
+(setq nm/user/latex-compiler "lualatex"
+ nm/user/org-directory "~/org/"
+ nm/user/org-todo-file-name "todo.org"
+ nm/user/org-notes-file-name "notes.org"
+ nm/user/org-hideaway t)
+
+(setq-default mode-line-format nil)
+
+(provide 'nemacs-user)
diff --git a/nemacs-util.el b/nemacs-util.el
new file mode 100644
index 0000000..e847891
--- /dev/null
+++ b/nemacs-util.el
@@ -0,0 +1,54 @@
+(setq create-lockfiles disable-lockfiles)
+(setq backup-directory-alist
+ `((".*" . ,temporary-file-directory)))
+(setq auto-save-file-name-transforms
+ `((".*" ,temporary-file-directory t)))
+
+(setq image-types (cons 'svg image-types))
+
+(menu-bar-mode -1)
+(scroll-bar-mode -1)
+(toggle-scroll-bar -1)
+(tool-bar-mode -1)
+(set-fringe-mode 0)
+(display-battery-mode +1)
+(global-prettify-symbols-mode t)
+(blink-cursor-mode +1)
+(global-hl-line-mode -1)
+(global-visual-line-mode +1)
+(blink-cursor-mode +1)
+(global-hl-line-mode -1)
+(global-visual-line-mode +1)
+
+(setq-default indicate-empty-lines +1
+ indicate-buffer-boundaries +1)
+
+(setq electric-pair-pairs '(
+ (?\{ . ?\})
+ (?\( . ?\))
+ (?\[ . ?\])
+ (?\" . ?\")
+ ))
+(electric-pair-mode t)
+
+(defun nemacs/my-frame-config (&optional frame)
+ (with-selected-frame (or frame (selected-frame))
+ (set-frame-parameter (selected-frame) 'alpha '(95 . 90))
+ (cond
+ ((find-font (font-spec :name "Andale Mono"))
+ (set-frame-font "Andale Mono-14")))
+ (set-face-attribute 'default nil :height 140)))
+
+(defun nemacs/my-silly-frame-config (&optional frame)
+ (with-selected-frame (or frame (selected-frame))
+ (set-frame-parameter (selected-frame) 'alpha '(95 . 90))
+ (cond
+ ((find-font (font-spec :name "Liga Comic Mono"))
+ (set-frame-font "Liga Comic Mono-14")))
+ (set-face-attribute 'default nil :height 140)))
+
+(add-to-list 'default-frame-alist '(fullscreen . maximized))
+(add-hook 'after-make-frame-functions 'nemacs/my-frame-config)
+(add-hook 'after-init-hook 'nemacs/my-frame-config)
+
+(provide 'nemacs-util)
diff --git a/nemacs.el b/nemacs.el
new file mode 100644
index 0000000..421fca7
--- /dev/null
+++ b/nemacs.el
@@ -0,0 +1,34 @@
+(require 'package)
+(setq package-enable-at-startup nil)
+(add-to-list 'package-archives
+ '("melpa" . "https://melpa.org/packages/") t)
+(package-initialize)
+
+(unless (package-installed-p 'use-package)
+ (package-refresh-contents)
+ (package-install 'use-package))
+
+(add-to-list 'load-path "~/nemacs/")
+(require 'nemacs-boilerplate)
+(require 'nemacs-user)
+(require 'nemacs-util)
+(require 'nemacs-packages)
+(require 'nemacs-functions)
+(require 'nemacs-keys)
+(require 'nemacs-hooks)
+
+(setq inhibit-startup-screen t)
+(toggle-frame-maximized)
+;;(require 'nemacs-splash)
+
+(put 'narrow-to-region 'disabled nil)
+(require 'nemacs-personal)
+
+(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.
+ '(org-level-1 ((t (:inherit outline-1 :extend nil :weight extra-bold :height 1.4))))
+ '(org-level-2 ((t (:inherit outline-2 :extend nil :slant italic :weight bold :height 1.2))))
+ '(org-level-3 ((t (:inherit outline-3 :extend nil :weight semi-bold)))))