From f14c2d3fe50de3c55e7c9684e93cdf5608a00b89 Mon Sep 17 00:00:00 2001 From: Christian Cunningham Date: Tue, 28 May 2024 11:19:22 -0700 Subject: Initial Commit --- .gitignore | 2 ++ Osaka Regular-Mono.otf | Bin 0 -> 2004456 bytes nemacs-boilerplate.el | 17 +++++++++ nemacs-functions.el | 10 ++++++ nemacs-hooks.el | 10 ++++++ nemacs-keys.el | 4 +++ nemacs-package-auto-package-update.el | 9 +++++ nemacs-package-diminish.el | 7 ++++ nemacs-package-ido.el | 16 +++++++++ nemacs-package-org.el | 65 ++++++++++++++++++++++++++++++++++ nemacs-packages.el | 44 +++++++++++++++++++++++ nemacs-personal.el | 60 +++++++++++++++++++++++++++++++ nemacs-splash.el | 11 ++++++ nemacs-user.el | 16 +++++++++ nemacs-util.el | 54 ++++++++++++++++++++++++++++ nemacs.el | 34 ++++++++++++++++++ 16 files changed, 359 insertions(+) create mode 100644 .gitignore create mode 100644 Osaka Regular-Mono.otf create mode 100644 nemacs-boilerplate.el create mode 100644 nemacs-functions.el create mode 100644 nemacs-hooks.el create mode 100644 nemacs-keys.el create mode 100644 nemacs-package-auto-package-update.el create mode 100644 nemacs-package-diminish.el create mode 100644 nemacs-package-ido.el create mode 100644 nemacs-package-org.el create mode 100644 nemacs-packages.el create mode 100644 nemacs-personal.el create mode 100644 nemacs-splash.el create mode 100644 nemacs-user.el create mode 100644 nemacs-util.el create mode 100644 nemacs.el 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 Binary files /dev/null and b/Osaka Regular-Mono.otf 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))))) -- cgit v1.2.1