From 27b93dab37c9fe758420235234bfe68fca5ab0e7 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 19 Jun 2024 02:20:04 -0700 Subject: [PATCH 001/334] Bump version --- Eask | 2 +- init.el | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Eask b/Eask index aabed09c..e6e38799 100755 --- a/Eask +++ b/Eask @@ -1,5 +1,5 @@ (package "jcs-emacs" - "9.1.0" + "9.1.1" "Emacs configuration works across all OSs") (website-url "https://github.com/jcs-emacs/jcs-emacs") diff --git a/init.el b/init.el index 32cb99c5..885bfa41 100755 --- a/init.el +++ b/init.el @@ -42,7 +42,7 @@ ;; (@* "Version" ) ;; -(defconst jcs-emacs-version-no "9.1.0" +(defconst jcs-emacs-version-no "9.1.1" "JCS-Emacs version.") (defun jcs-emacs-version () From b7ae9f647ad57f98b70d2f60d76e8c4ef9211df5 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 19 Jun 2024 02:36:03 -0700 Subject: [PATCH 002/334] feat(edit): Revert must kill buffer --- lisp/lib/jcs-edit.el | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/lisp/lib/jcs-edit.el b/lisp/lib/jcs-edit.el index a7863cf7..b65057db 100644 --- a/lisp/lib/jcs-edit.el +++ b/lisp/lib/jcs-edit.el @@ -315,6 +315,12 @@ ;; (@* "Kill Buffer" ) ;; +(defconst jcs-must-kill-buffer-list + `(,(regexp-quote (buffer-name (messages-buffer))) + "[*]compilation" "[*]output" "[*]execrun") + "List of buffer name that must be killed when maybe kill; unless it shows up +in multiple windows.") + (jcs-advice-add 'bury-buffer :after (run-hooks 'buffer-list-update-hook)) @@ -355,14 +361,20 @@ Otherwise just switch to the previous buffer to keep the buffer. If optional argument ECP-SAME is non-nil then it allows same buffer on the other window." (interactive) - (let ((shown-multiple-p (jcs-buffer-shown-in-multiple-window-p (buffer-name) 'strict)) - (cur-buf (current-buffer)) - is-killed) + (let* + ((name (buffer-name)) + (must-kill-p (jcs-contain-list-type-str name jcs-must-kill-buffer-list 'regex)) + (multiple-p (jcs-buffer-shown-in-multiple-window-p name 'strict)) + (cur-buf (current-buffer)) + is-killed) (cond ;; (1) Centain conditions, we bury it! - ((or shown-multiple-p + ((or multiple-p (and (jcs-virtual-buffer-p) (not (jcs-invalid-buffer-p)))) - (jcs-bury-buffer)) + (jcs-bury-buffer) + (when (and must-kill-p (not multiple-p)) + (setq is-killed t) + (with-current-buffer cur-buf (kill-this-buffer)))) ;; (2) Else, we kill it! (t (jcs-kill-this-buffer) From c407b9859489c5b31697c9f61871b9e8254baaf7 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 19 Jun 2024 02:42:43 -0700 Subject: [PATCH 003/334] feat: Replace must kill buffer list with derived mode --- lisp/lib/jcs-edit.el | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/lisp/lib/jcs-edit.el b/lisp/lib/jcs-edit.el index b65057db..5575ff0d 100644 --- a/lisp/lib/jcs-edit.el +++ b/lisp/lib/jcs-edit.el @@ -315,12 +315,6 @@ ;; (@* "Kill Buffer" ) ;; -(defconst jcs-must-kill-buffer-list - `(,(regexp-quote (buffer-name (messages-buffer))) - "[*]compilation" "[*]output" "[*]execrun") - "List of buffer name that must be killed when maybe kill; unless it shows up -in multiple windows.") - (jcs-advice-add 'bury-buffer :after (run-hooks 'buffer-list-update-hook)) @@ -363,7 +357,8 @@ other window." (interactive) (let* ((name (buffer-name)) - (must-kill-p (jcs-contain-list-type-str name jcs-must-kill-buffer-list 'regex)) + (must-kill-p (derived-mode-p 'compilation-mode 'comint-mode + 'messages-buffer-mode)) (multiple-p (jcs-buffer-shown-in-multiple-window-p name 'strict)) (cur-buf (current-buffer)) is-killed) From 0d50bc167407f7a7aaf022c83c30f10b57ccec91 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 19 Jun 2024 02:43:25 -0700 Subject: [PATCH 004/334] docs: Changelig --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 96e708b7..23a73804 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how ## 9.1.1 (Unreleased) > Released N/A -* N/A +* feat: Replace must kill buffer list with derived mode (c407b9859489c5b31697c9f61871b9e8254baaf7) ## 9.1.0 > Released Jun 19, 2024 From f27f78eea6a438c9e1d3242dbcc68e1dca7fa8d1 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Thu, 20 Jun 2024 16:36:51 -0700 Subject: [PATCH 005/334] feat: Add project reload for Elisp prproject --- lisp/jcs-project.el | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lisp/jcs-project.el b/lisp/jcs-project.el index 40364730..0c3c454f 100755 --- a/lisp/jcs-project.el +++ b/lisp/jcs-project.el @@ -76,5 +76,20 @@ If optional argument DIR is nil, use variable `default-directory' instead." (interactive) (jcs-with-other-window (project-find-file))) +;; +;; (@* "Elisp" ) +;; + +(defun jcs-project-el-reload () + "Reload current elisp project." + (interactive) + (if-let* ((project (project-current)) + (files (project-files project)) + (files (cl-remove-if-not (lambda (filename) + (string-suffix-p ".el" filename)) + files))) + (mapc #'load-file files) + (user-error "[WARNING] Currently not under an Elisp project"))) + (provide 'jcs-project) ;;; jcs-project.el ends here From 5e70272c70505a5fb7d800fce57d5f99878d894b Mon Sep 17 00:00:00 2001 From: JenChieh Date: Thu, 20 Jun 2024 16:37:14 -0700 Subject: [PATCH 006/334] feat: Ensure startup buffers are in right order --- modules/ui/dashboard/config.el | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/ui/dashboard/config.el b/modules/ui/dashboard/config.el index 6f34f4ec..ce7cd7fc 100644 --- a/modules/ui/dashboard/config.el +++ b/modules/ui/dashboard/config.el @@ -19,7 +19,11 @@ (save-selected-window (switch-to-buffer-other-window (get-scratch-buffer-create))) ;; Make sure dashboard buffer left most! - (centaur-tabs-move-current-tab-to-left)))) + (centaur-tabs-move-current-tab-to-left) + ;; Make messages buffer to the right most. + (with-current-buffer (messages-buffer) + (centaur-tabs-move-current-tab-to-right) + (centaur-tabs-move-current-tab-to-right))))) :init (setq dashboard-banner-logo-title (concat "[J C S " (if elenv-graphic-p "•" "-") " E M A C S]") From ac060c0c1b23a0d11e55f0fe505388f159a5c4f9 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Thu, 20 Jun 2024 20:03:35 -0700 Subject: [PATCH 007/334] fix: Hide minibuffer and echo area --- modules/emacs/buffer-menu/config.el | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/emacs/buffer-menu/config.el b/modules/emacs/buffer-menu/config.el index e78ad6f5..a465c30d 100644 --- a/modules/emacs/buffer-menu/config.el +++ b/modules/emacs/buffer-menu/config.el @@ -8,6 +8,7 @@ :init (setq diminish-buffer-list '("[*]jcs" ; config wise + "[*]Echo Area" "[*]Minibuf-" "[*]helm" "[*]esup-" "[*]quelpa-" "[*]easky" "[*]quickrun" "[*]Apropos[*]" "[*]Backtrace[*]" "[*]Compile-Log[*]" From fb94d028db79b4176335df4bd5e5dfb0b90e2e65 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Thu, 20 Jun 2024 22:13:53 -0700 Subject: [PATCH 008/334] fix: Respect auto-scroll-bar instead --- lisp/jcs-disp.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/jcs-disp.el b/lisp/jcs-disp.el index a60b47e5..0f017eee 100644 --- a/lisp/jcs-disp.el +++ b/lisp/jcs-disp.el @@ -58,7 +58,7 @@ Note this is opposite logic to the toggle mode function." echo-bar-minibuffer nil) :config (jcs-advice-add 'echo-bar-update :after - (when echo-bar-mode + (when auto-scroll-bar-mode (auto-scroll-bar--hide-minibuffer)))) (use-package region-state From 3dc69346e9b8e7906a5c33fba85773015970982a Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 21 Jun 2024 02:26:06 -0700 Subject: [PATCH 009/334] fix: Reorder undo config --- modules/emacs/undo/config.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/emacs/undo/config.el b/modules/emacs/undo/config.el index dbca25e5..c9d4f88e 100644 --- a/modules/emacs/undo/config.el +++ b/modules/emacs/undo/config.el @@ -5,11 +5,11 @@ undo-strong-limit 3000000 ; 3mb (default is 240kb) undo-outer-limit 48000000) ; 48mb (default is 24mb) -(use-package undo-tree-vf :hook (undo-tree-mode . undo-tree-vf-mode)) - (use-package undo-tree :init (setq undo-tree-auto-save-history nil) (message-clean-mode-add-echo-commands '( undo-tree-undo undo-tree-redo)) :config (global-undo-tree-mode t)) + +(use-package undo-tree-vf :hook (undo-tree-mode . undo-tree-vf-mode)) From 9ee6b303827aca77dfdb9295c309b479ad5b0a96 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 21 Jun 2024 02:26:17 -0700 Subject: [PATCH 010/334] fix: Kill buffer in undo visualizer buffer --- lisp/lib/jcs-edit.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/lib/jcs-edit.el b/lisp/lib/jcs-edit.el index 5575ff0d..069ecf2d 100644 --- a/lisp/lib/jcs-edit.el +++ b/lisp/lib/jcs-edit.el @@ -328,7 +328,9 @@ "Bury this buffer." (interactive) (let ((bn (jcs-buffer-name-or-buffer-file-name))) - (jcs-funcall-fboundp #'undo-tree-kill-visualizer) + (when (and (featurep 'undo-tree) + (not (equal bn undo-tree-visualizer-buffer-name))) + (jcs-funcall-fboundp #'undo-tree-kill-visualizer)) (bury-buffer) (when (or (jcs-buffer-menu-p) (string= bn (jcs-buffer-name-or-buffer-file-name))) From 1f8ea2ea23912594967811f35df3919f5b05dcb7 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 21 Jun 2024 03:08:10 -0700 Subject: [PATCH 011/334] Echo undo command --- lisp/jcs-env.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/jcs-env.el b/lisp/jcs-env.el index 51136d0b..8c25f4e9 100755 --- a/lisp/jcs-env.el +++ b/lisp/jcs-env.el @@ -203,7 +203,8 @@ isearch-done undefined toggle-truncate-lines - after-find-file ff-find-the-other-file) + after-find-file ff-find-the-other-file + undo) message-clean-mode-minor-mode 'echo)) (use-package msgu From b89f9791c5dcb80d2136f20d9a3900cfd77e3d85 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 21 Jun 2024 03:08:16 -0700 Subject: [PATCH 012/334] Revert undo module order --- modules/emacs/undo/config.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/emacs/undo/config.el b/modules/emacs/undo/config.el index c9d4f88e..dbca25e5 100644 --- a/modules/emacs/undo/config.el +++ b/modules/emacs/undo/config.el @@ -5,11 +5,11 @@ undo-strong-limit 3000000 ; 3mb (default is 240kb) undo-outer-limit 48000000) ; 48mb (default is 24mb) +(use-package undo-tree-vf :hook (undo-tree-mode . undo-tree-vf-mode)) + (use-package undo-tree :init (setq undo-tree-auto-save-history nil) (message-clean-mode-add-echo-commands '( undo-tree-undo undo-tree-redo)) :config (global-undo-tree-mode t)) - -(use-package undo-tree-vf :hook (undo-tree-mode . undo-tree-vf-mode)) From 5f446e1dfb7cb6cb99320204595c36975eece593 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 21 Jun 2024 16:40:52 -0700 Subject: [PATCH 013/334] feat: Rename fboundp funcall to apply --- lisp/jcs-disp.el | 6 +++--- lisp/jcs-function.el | 2 +- lisp/jcs-hook.el | 20 ++++++++++---------- lisp/lib/jcs-edit.el | 6 +++--- lisp/lib/jcs-util.el | 4 ++-- modules/ui/dashboard/config.el | 2 +- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/lisp/jcs-disp.el b/lisp/jcs-disp.el index 0f017eee..544c8b9d 100644 --- a/lisp/jcs-disp.el +++ b/lisp/jcs-disp.el @@ -9,7 +9,7 @@ (defun jcs-debugging-p () "Return non-nil if current in debugging session." (or (elenv-debugging-p) - (ignore-errors (jcs-funcall-fboundp #'dap--cur-active-session-or-die)))) + (ignore-errors (jcs-fboundp-apply #'dap--cur-active-session-or-die)))) (defun jcs-reload-active-mode () "Reload the active mode. @@ -18,10 +18,10 @@ Note this is opposite logic to the toggle mode function." (when (featurep 'jcs-modeline) (msgu-silent (cond - ((jcs-funcall-fboundp #'jcs-backtrace-occurs-p) (jcs-hit-backtrace)) + ((jcs-fboundp-apply #'jcs-backtrace-occurs-p) (jcs-hit-backtrace)) ((active-minibuffer-window) (jcs-modeline-dark-blue)) ((jcs-debugging-p) (jcs-modeline-dark-orange)) - ((jcs-funcall-fboundp #'zoom-window--enable-p) (jcs-modeline-dark-green)) + ((jcs-fboundp-apply #'zoom-window--enable-p) (jcs-modeline-dark-green)) (t (jcs-modeline-gray)))))) ;; diff --git a/lisp/jcs-function.el b/lisp/jcs-function.el index 052c0893..95c9c233 100755 --- a/lisp/jcs-function.el +++ b/lisp/jcs-function.el @@ -75,7 +75,7 @@ (defun jcs-lsp-maybe-shutdown () "Maybe shutdown the workspace." - (when-let ((workspaces (jcs-funcall-fboundp #'lsp-workspaces))) + (when-let ((workspaces (jcs-fboundp-apply #'lsp-workspaces))) (dolist (workspace workspaces) (let* ((buffers (lsp--workspace-buffers workspace)) (buffers (cl-remove-if-not #'buffer-live-p buffers))) diff --git a/lisp/jcs-hook.el b/lisp/jcs-hook.el index 80c4ccfc..d807867e 100755 --- a/lisp/jcs-hook.el +++ b/lisp/jcs-hook.el @@ -10,10 +10,10 @@ "When window is focus." (jcs-reload-active-mode) (when (featurep 'recentf) (msgu-silent (recentf-cleanup))) - (jcs-funcall-fboundp #'jcs-diff-hl-update) - (jcs-funcall-fboundp #'jcs-buffer-menu-refresh-buffer) - (jcs-funcall-fboundp #'jcs-dashboard-refresh-buffer) - (jcs-funcall-fboundp #'jcs-vertico-refresh)) + (jcs-fboundp-apply #'jcs-diff-hl-update) + (jcs-fboundp-apply #'jcs-buffer-menu-refresh-buffer) + (jcs-fboundp-apply #'jcs-dashboard-refresh-buffer) + (jcs-fboundp-apply #'jcs-vertico-refresh)) (defun jcs-hook--focus-out () "When window is not focus." @@ -26,9 +26,9 @@ (jcs-add-hook 'window-state-change-hook (when (and (not (active-minibuffer-window)) - (not (jcs-funcall-fboundp #'company--active-p))) - (jcs-funcall-fboundp #'jcs-buffer-menu-refresh-buffer) - (jcs-funcall-fboundp #'jcs-dashboard-refresh-buffer))) + (not (jcs-fboundp-apply #'company--active-p))) + (jcs-fboundp-apply #'jcs-buffer-menu-refresh-buffer) + (jcs-fboundp-apply #'jcs-dashboard-refresh-buffer))) ;; ;; (@* "Find Files" ) @@ -110,10 +110,10 @@ ;; (jcs-add-hook 'pre-command-hook - (jcs-funcall-fboundp #'jcs--er/record-history)) + (jcs-fboundp-apply #'jcs--er/record-history)) (jcs-add-hook 'post-command-hook - (jcs-funcall-fboundp #'jcs--er/resolve-region) + (jcs-fboundp-apply #'jcs--er/resolve-region) (jcs-reload-active-mode)) ;; @@ -174,7 +174,7 @@ ;; (jcs-advice-add '(keyboard-quit top-level) :before - (jcs-funcall-fboundp #'jcs-backtrace-exit)) + (jcs-fboundp-apply #'jcs-backtrace-exit)) (provide 'jcs-hook) ;;; jcs-hook.el ends here diff --git a/lisp/lib/jcs-edit.el b/lisp/lib/jcs-edit.el index 069ecf2d..bd800979 100644 --- a/lisp/lib/jcs-edit.el +++ b/lisp/lib/jcs-edit.el @@ -237,7 +237,7 @@ ;; (jcs-advice-add 'save-buffer :before - (jcs-funcall-fboundp #'company-abort) + (jcs-fboundp-apply #'company-abort) ;; Delete trailing whitespaces execpt the current line (when (bound-and-true-p whitespace-cleanup-mode) (whitespace-cleanup-region (point-min) (line-beginning-position)) @@ -330,7 +330,7 @@ (let ((bn (jcs-buffer-name-or-buffer-file-name))) (when (and (featurep 'undo-tree) (not (equal bn undo-tree-visualizer-buffer-name))) - (jcs-funcall-fboundp #'undo-tree-kill-visualizer)) + (jcs-fboundp-apply #'undo-tree-kill-visualizer)) (bury-buffer) (when (or (jcs-buffer-menu-p) (string= bn (jcs-buffer-name-or-buffer-file-name))) @@ -408,7 +408,7 @@ other window." (msgu-inhibit-log (when (jcs-lsp-connected-p) (lsp-disconnect)) (jcs-save-window-excursion (find-alternate-file filename)) - (jcs-funcall-fboundp #'undo-tree-kill-visualizer) + (jcs-fboundp-apply #'undo-tree-kill-visualizer) (msgu-current "[INFO] Reopened file => '%s'" filename)))) ;; diff --git a/lisp/lib/jcs-util.el b/lisp/lib/jcs-util.el index 877d9b5e..0c745856 100644 --- a/lisp/lib/jcs-util.el +++ b/lisp/lib/jcs-util.el @@ -271,9 +271,9 @@ Notice PATH can either be `buffer-name' or `buffer-file-name'." ;; (@* "Function" ) ;; -(defun jcs-funcall-fboundp (fnc &rest args) +(defun jcs-fboundp-apply (fnc &rest args) "Call FNC with ARGS if exists." - (when (fboundp fnc) (if args (funcall fnc args) (funcall fnc)))) + (when (fboundp fnc) (apply fnc args))) ;; ;; (@* "Key" ) diff --git a/modules/ui/dashboard/config.el b/modules/ui/dashboard/config.el index ce7cd7fc..3442d5e9 100644 --- a/modules/ui/dashboard/config.el +++ b/modules/ui/dashboard/config.el @@ -216,7 +216,7 @@ (defun jcs-dashboard--goto-section (name) "Move to section NAME declares in variable `dashboard-item-shortcuts'." - (jcs-funcall-fboundp (intern (format "dashboard-jump-to-%s" name)))) + (jcs-fboundp-apply (intern (format "dashboard-jump-to-%s" name)))) (defun jcs-dashboard-current-index (name &optional pos) "Return the idex by NAME from POS." From 4370b93f9b20048a4bf3938800fe7e2d1c36664e Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 22 Jun 2024 04:12:43 -0700 Subject: [PATCH 014/334] feat: set resize mini windows --- lisp/jcs-env.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-env.el b/lisp/jcs-env.el index 8c25f4e9..b7ac6ca1 100755 --- a/lisp/jcs-env.el +++ b/lisp/jcs-env.el @@ -215,6 +215,7 @@ ;; ;;; Minibuffer (setq enable-recursive-minibuffers t + resize-mini-windows t completion-styles '(partial-completion) ; easy on `company-mode' completion-category-defaults nil completion-ignored-extensions nil From 23ae9136559c37275f096bef037962b0d39555f8 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 22 Jun 2024 16:25:41 -0700 Subject: [PATCH 015/334] fix(echo-bar): Avoid mess up window config from echo-bar --- lisp/jcs-hook.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-hook.el b/lisp/jcs-hook.el index d807867e..67dd4d91 100755 --- a/lisp/jcs-hook.el +++ b/lisp/jcs-hook.el @@ -110,6 +110,7 @@ ;; (jcs-add-hook 'pre-command-hook + (message nil) ; Avoid `echo-bar' mess up window config! (jcs-fboundp-apply #'jcs--er/record-history)) (jcs-add-hook 'post-command-hook From 112814fc2c53923f9a72a02a2a5fe90effeebaaf Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 22 Jun 2024 16:27:25 -0700 Subject: [PATCH 016/334] revert echo-bar fix --- lisp/jcs-hook.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/jcs-hook.el b/lisp/jcs-hook.el index 67dd4d91..d807867e 100755 --- a/lisp/jcs-hook.el +++ b/lisp/jcs-hook.el @@ -110,7 +110,6 @@ ;; (jcs-add-hook 'pre-command-hook - (message nil) ; Avoid `echo-bar' mess up window config! (jcs-fboundp-apply #'jcs--er/record-history)) (jcs-add-hook 'post-command-hook From 2af4796e45861a2ad6674b457772b0d8596b0a46 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 22 Jun 2024 19:06:18 -0700 Subject: [PATCH 017/334] chore: Update elenv display api --- modules/ui/dashboard/config.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ui/dashboard/config.el b/modules/ui/dashboard/config.el index 3442d5e9..580c421e 100644 --- a/modules/ui/dashboard/config.el +++ b/modules/ui/dashboard/config.el @@ -12,7 +12,7 @@ . (lambda () (unless noninteractive ;; Split windows depends on the display size! - (if (elenv-display-vertical-p) + (if (elenv-monitor-vertical-p) (ignore-errors (split-window-vertically)) (ignore-errors (split-window-horizontally))) ;; Switch to scratch buffer for other window From 0af7dfcc565b3813ac8776c6f75bf15fc5c74ea5 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 22 Jun 2024 19:20:49 -0700 Subject: [PATCH 018/334] feat: Add new package responsive-window --- lisp/jcs-hook.el | 1 + lisp/jcs-package.el | 1 + 2 files changed, 2 insertions(+) diff --git a/lisp/jcs-hook.el b/lisp/jcs-hook.el index d807867e..19e0f00f 100755 --- a/lisp/jcs-hook.el +++ b/lisp/jcs-hook.el @@ -88,6 +88,7 @@ (recentf-excl-mode 1) (global-region-occurrences-highlighter-mode 1) (repos-window-mode 1) + (responsive-window-mode 1) (transient-mark-mode t) (vs-revbuf-mode 1) (which-key-mode 1) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 930708ea..c62b6d2c 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -383,6 +383,7 @@ region-occurrences-highlighter region-state repos-window + responsive-window restart-emacs robots-txt-mode scad-mode From 5b3a435cb4bf6dbbca0eceb10bb7653852484eae Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 22 Jun 2024 19:21:52 -0700 Subject: [PATCH 019/334] chore: Changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 23a73804..2ebeeed4 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how > Released N/A * feat: Replace must kill buffer list with derived mode (c407b9859489c5b31697c9f61871b9e8254baaf7) +* feat: Add new package `responsive-window` (0af7dfcc565b3813ac8776c6f75bf15fc5c74ea5) ## 9.1.0 > Released Jun 19, 2024 From 27971aa8572890597231d3bd492d688f8578a396 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 24 Jun 2024 02:01:14 -0700 Subject: [PATCH 020/334] feat: Add advice ignore errors --- lisp/jcs-ui.el | 1 + lisp/lib/jcs-edit.el | 5 ++--- lisp/lib/jcs-util.el | 8 ++++++++ modules/tools/lsp/config.el | 2 +- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lisp/jcs-ui.el b/lisp/jcs-ui.el index e158c639..76865232 100644 --- a/lisp/jcs-ui.el +++ b/lisp/jcs-ui.el @@ -42,6 +42,7 @@ (jcs--buffer-wrap--fixed-fake-header) (jcs--buffer-wrap--fixed-window-off))) + ;; ;;; Font diff --git a/lisp/lib/jcs-edit.el b/lisp/lib/jcs-edit.el index bd800979..aa26f5f8 100644 --- a/lisp/lib/jcs-edit.el +++ b/lisp/lib/jcs-edit.el @@ -7,7 +7,7 @@ ;; ;; Inhibit error output -(jcs-advice-add 'jit-lock-function :around (ignore-errors (apply arg0 args))) +(jcs-advice-ignore-errors 'jit-lock-function) ;; ;; (@* "Move Between Word (Wrapper)" ) @@ -84,8 +84,7 @@ ;; (@* "Indentation" ) ;; -(jcs-advice-add 'indent-region :around - (ignore-errors (apply arg0 args))) +(jcs-advice-ignore-errors 'indent-region) (jcs-advice-add 'indent-line-to :before (indent-control-ensure-tab-width)) diff --git a/lisp/lib/jcs-util.el b/lisp/lib/jcs-util.el index 0c745856..0e79d2d0 100644 --- a/lisp/lib/jcs-util.el +++ b/lisp/lib/jcs-util.el @@ -10,6 +10,14 @@ "Convert NAME to hook." (intern (concat (jcs-2str name) "-hook"))) +;; +;; (@* "Advice" ) +;; + +(defun jcs-advice-ignore-errors (fnc) + "Ignore errors for FNC." + (jcs-advice-add fnc :around (ignore-errors (apply arg0 args)))) + ;; ;; (@* "Macro" ) ;; diff --git a/modules/tools/lsp/config.el b/modules/tools/lsp/config.el index 87469d30..95b1f6e6 100644 --- a/modules/tools/lsp/config.el +++ b/modules/tools/lsp/config.el @@ -36,7 +36,7 @@ lsp-client-packages) (setq lsp--client-packages-required t))) ;; Don't log request error after the server has started - (jcs-advice-add 'lsp--on-idle :around (ignore-errors (apply arg0 args)))) + (jcs-advice-ignore-errors 'lsp--on-idle)) (use-package lsp-ui :bind ( :map lsp-ui-doc-frame-mode-map From 2222812ec1226122548b38ca33fdd6d3f67a005c Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 24 Jun 2024 03:18:16 -0700 Subject: [PATCH 021/334] style: newline --- lisp/jcs-ui.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/jcs-ui.el b/lisp/jcs-ui.el index 76865232..e158c639 100644 --- a/lisp/jcs-ui.el +++ b/lisp/jcs-ui.el @@ -42,7 +42,6 @@ (jcs--buffer-wrap--fixed-fake-header) (jcs--buffer-wrap--fixed-window-off))) - ;; ;;; Font From 2f72ff6c635516980d4fb61a16e235a3984af122 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 24 Jun 2024 21:59:52 -0700 Subject: [PATCH 022/334] feat: Remove minimap key bindings --- lisp/jcs-key.el | 3 --- 1 file changed, 3 deletions(-) diff --git a/lisp/jcs-key.el b/lisp/jcs-key.el index 01192aa7..d0591c36 100755 --- a/lisp/jcs-key.el +++ b/lisp/jcs-key.el @@ -165,9 +165,6 @@ ("\e:" . View-back-to-mark) ("\e;" . exchange-point-and-mark) -;;; Minimap - ((kbd "C-k m") . minimap-mode) - ;;; Mode Toggle ((kbd "C-k `") . (lambda () (interactive) (zoom-window-zoom) (jcs-reload-active-mode))) From 5370044d59891787e97db5aa23cd635f5f56fe7b Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 24 Jun 2024 22:00:09 -0700 Subject: [PATCH 023/334] feat: Add clear command history command --- modules/completion/vertico/config.el | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/completion/vertico/config.el b/modules/completion/vertico/config.el index 33b793ac..4b4cf18c 100644 --- a/modules/completion/vertico/config.el +++ b/modules/completion/vertico/config.el @@ -212,3 +212,11 @@ (defun jcs-minibuffer--post-command () "Minibuffer post command hook." (run-hooks 'jcs-minibuffer-post-command-hook)) + +(defun jcs-clear-M-x-history () + "Clear M-x command history." + (interactive) + (let ((count (1- (length extended-command-history)))) ; Don't include itself! + (setq extended-command-history nil) + (msgu-inhibit-log + (message "[INFO] Command history cleared: %s" count)))) From 9fb76045be772a4e46bb0841ba68f9af73b09715 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 24 Jun 2024 22:00:35 -0700 Subject: [PATCH 024/334] docs: Remove minimap key bindings --- docs/keybindings.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/keybindings.md b/docs/keybindings.md index f3374ae3..9b428550 100755 --- a/docs/keybindings.md +++ b/docs/keybindings.md @@ -343,7 +343,6 @@ Here is the list of key bindings that are defined in this configuration. * Alt+= - Increase the frame's transparency. * Alt+- - Decrease the frame's transparency. * Ctrl+k, f - Change font style. -* Ctrl+k, m - Toggle minimap. * Alt+i - Show End of Line. * Ctrl+k, b - Show white space. * Ctrl+r, Ctrl+w - Show white space. From 8b4cf6420e7d777f38eca4faddf19c47ce40bcdc Mon Sep 17 00:00:00 2001 From: JenChieh Date: Tue, 25 Jun 2024 04:23:33 -0700 Subject: [PATCH 025/334] feat: Start responsive window at beginning --- lisp/jcs-hook.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/jcs-hook.el b/lisp/jcs-hook.el index 19e0f00f..50765c17 100755 --- a/lisp/jcs-hook.el +++ b/lisp/jcs-hook.el @@ -65,6 +65,7 @@ (jcs-echobar-mode 1) (jcs-frametitle-mode 1) (jcs-modeline-mode 1) + (responsive-window-mode 1) (vertico-mode 1) (window-divider-mode 1) (jcs-require '(jcs-edit)) @@ -88,7 +89,6 @@ (recentf-excl-mode 1) (global-region-occurrences-highlighter-mode 1) (repos-window-mode 1) - (responsive-window-mode 1) (transient-mark-mode t) (vs-revbuf-mode 1) (which-key-mode 1) From 62039e725e816ad381b6a8d126bb28be22d65101 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Thu, 27 Jun 2024 00:03:16 -0700 Subject: [PATCH 026/334] fix: Record the window starting point --- lisp/lib/jcs-window.el | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/lisp/lib/jcs-window.el b/lisp/lib/jcs-window.el index 524693dd..306e59ce 100644 --- a/lisp/lib/jcs-window.el +++ b/lisp/lib/jcs-window.el @@ -152,37 +152,36 @@ ALL-FRAMES." (defvar jcs-window--record-buffer-names nil "Record all windows' buffer.") (defvar jcs-window--record-points nil "Record all windows point.") -(defvar jcs-window--record-first-visible-lines nil - "Record all windows' first visible line.") +(defvar jcs-window--record-wstarts nil "Record all windows starting points.") (defun jcs-window-record-once () "Record windows status once." - (let ((buf-names nil) (pts nil) (f-lns nil)) + (let ((buf-names nil) (pts nil) (wstarts nil)) ;; Record down all the window information with the same buffer opened. (jcs-walk-windows (lambda () (jcs-push (jcs-buffer-name-or-buffer-file-name) buf-names) ; Record as string! (jcs-push (point) pts) - (jcs-push (jcs-first-visible-line-in-window) f-lns))) + (jcs-push (window-start) wstarts))) (push buf-names jcs-window--record-buffer-names) (push pts jcs-window--record-points) - (push f-lns jcs-window--record-first-visible-lines))) + (push wstarts jcs-window--record-wstarts))) (defun jcs-window-restore-once () "Restore windows status once." (let ((buf-names (pop jcs-window--record-buffer-names)) (pts (pop jcs-window--record-points)) - (f-lns (pop jcs-window--record-first-visible-lines)) + (wstarts (pop jcs-window--record-wstarts)) (win-cnt 0)) ;; Restore the window information after, including opening the same buffer. (jcs-walk-windows (lambda () (let* ((buf-name (nth win-cnt buf-names)) (current-pt (nth win-cnt pts)) - (current-first-vs-line (nth win-cnt f-lns)) + (current-wstart (nth win-cnt wstarts)) (actual-buf (jcs-get-buffer-by-path buf-name))) (if actual-buf (switch-to-buffer actual-buf) (find-file buf-name)) - (jcs-make-first-visible-line-to current-first-vs-line) + (set-window-start nil current-wstart) (goto-char current-pt) (cl-incf win-cnt)))))) From b663d26669d35c69d0c99dc3a8353946fd2cb7cf Mon Sep 17 00:00:00 2001 From: JenChieh Date: Thu, 27 Jun 2024 16:46:47 -0700 Subject: [PATCH 027/334] fix: Force load el files --- lisp/jcs-project.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/jcs-project.el b/lisp/jcs-project.el index 0c3c454f..f2818af4 100755 --- a/lisp/jcs-project.el +++ b/lisp/jcs-project.el @@ -88,7 +88,9 @@ If optional argument DIR is nil, use variable `default-directory' instead." (files (cl-remove-if-not (lambda (filename) (string-suffix-p ".el" filename)) files))) - (mapc #'load-file files) + (mapc (lambda (file) + (ignore-errors (load-file file))) + files) (user-error "[WARNING] Currently not under an Elisp project"))) (provide 'jcs-project) From 0c995aa207eb820d7b0d0778aa23da2c96b12e5f Mon Sep 17 00:00:00 2001 From: JenChieh Date: Thu, 27 Jun 2024 16:48:31 -0700 Subject: [PATCH 028/334] fix: Load theme before on --- lisp/jcs-hook.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/jcs-hook.el b/lisp/jcs-hook.el index 50765c17..ab008964 100755 --- a/lisp/jcs-hook.el +++ b/lisp/jcs-hook.el @@ -49,9 +49,10 @@ (jcs-add-hook 'after-init-hook (jcs-modules-load-entry) - (jcs-require '(dashboard on)) + (jcs-require '(dashboard)) (use-ttf-set-default-font) (jcs-setup-default-theme) + (jcs-require '(on)) (message nil)) ; mute at the very end! (jcs-add-hook 'on-init-ui-hook From 995e293c858a1cc03f48b07293d3276e5d9cdbce Mon Sep 17 00:00:00 2001 From: JenChieh Date: Thu, 27 Jun 2024 16:48:51 -0700 Subject: [PATCH 029/334] fix(tabs): Merge re-enable to upstream --- modules/ui/tabs/config.el | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index 32b5bf84..1915cbe6 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -21,10 +21,7 @@ ;; prevents that. centaur-tabs-cycle-scope 'tabs) :config - (advice-add 'centaur-tabs-buffer-track-killed :override #'ignore) - - (jcs-add-hook 'jcs-after-load-theme-hook - (jcs-re-enable-mode-if-was-enabled #'centaur-tabs-mode))) + (advice-add 'centaur-tabs-buffer-track-killed :override #'ignore)) ;; ;;; Buffer Groups From bdd716ee6854b7c3c405fc72d609dd99287d32fd Mon Sep 17 00:00:00 2001 From: JenChieh Date: Thu, 27 Jun 2024 16:55:34 -0700 Subject: [PATCH 030/334] chore: Changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ebeeed4..c85f717a 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,9 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * feat: Replace must kill buffer list with derived mode (c407b9859489c5b31697c9f61871b9e8254baaf7) * feat: Add new package `responsive-window` (0af7dfcc565b3813ac8776c6f75bf15fc5c74ea5) +* fix: Record the window starting point instead first visible line (62039e725e816ad381b6a8d126bb28be22d65101) +* fix: Force load project elisp files (b663d26669d35c69d0c99dc3a8353946fd2cb7cf) +* fix: Load theme before `on` prevent potential UI package's errors (0c995aa207eb820d7b0d0778aa23da2c96b12e5f) ## 9.1.0 > Released Jun 19, 2024 From 3d0796322203b7c27e5b1fb55579fc92b96ba526 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 29 Jun 2024 01:14:26 -0700 Subject: [PATCH 031/334] feat(buffer-menu): Diminish checkdoc output --- modules/emacs/buffer-menu/config.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/emacs/buffer-menu/config.el b/modules/emacs/buffer-menu/config.el index a465c30d..6fa05a6e 100644 --- a/modules/emacs/buffer-menu/config.el +++ b/modules/emacs/buffer-menu/config.el @@ -82,7 +82,8 @@ "help-mode" "custom-mode" "list-environment-mode" "shell-mode" "eshell-mode" - "sqlite-mode"))) + "sqlite-mode" + "checkdoc-output-mode"))) ;; ;; (@* "Hook" ) From 10d3cfec176ec495159f865756f9051fc0834033 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 29 Jun 2024 01:14:38 -0700 Subject: [PATCH 032/334] feat: Output project path --- lisp/jcs-project.el | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lisp/jcs-project.el b/lisp/jcs-project.el index f2818af4..0000c0d2 100755 --- a/lisp/jcs-project.el +++ b/lisp/jcs-project.el @@ -84,13 +84,16 @@ If optional argument DIR is nil, use variable `default-directory' instead." "Reload current elisp project." (interactive) (if-let* ((project (project-current)) + (root (project-root project)) (files (project-files project)) (files (cl-remove-if-not (lambda (filename) (string-suffix-p ".el" filename)) files))) - (mapc (lambda (file) - (ignore-errors (load-file file))) - files) + (progn + (mapc (lambda (file) + (ignore-errors (load-file file))) + files) + (message "[INFO] Reloading project %s... done!" root)) (user-error "[WARNING] Currently not under an Elisp project"))) (provide 'jcs-project) From 5b80a242b3691455aefe8fe24b5bcb2c386af358 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 29 Jun 2024 01:14:57 -0700 Subject: [PATCH 033/334] chore(tab-line): Tweak icons --- modules/ui/tabs/config.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index 1915cbe6..ce7c6f60 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -7,6 +7,8 @@ centaur-tabs-set-icons t centaur-tabs-icon-type 'nerd-icons centaur-tabs-gray-out-icons 'buffer + centaur-tabs-icons-prefix "" + centaur-tabs-icon-scale-factor 0.9 centaur-tabs-set-modified-marker t centaur-tabs-buffer-groups-function #'jcs-tab-buffer-groups-function centaur-tabs-hide-tab-function #'ignore From 20e11c0699f5be91ae1518f1768c4d640a4c56ab Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 29 Jun 2024 12:34:37 -0700 Subject: [PATCH 034/334] fix(tabs): No longer need to refill it --- lisp/lib/jcs-edit.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/lisp/lib/jcs-edit.el b/lisp/lib/jcs-edit.el index aa26f5f8..cd56a372 100644 --- a/lisp/lib/jcs-edit.el +++ b/lisp/lib/jcs-edit.el @@ -343,8 +343,6 @@ (interactive) (jcs-lsp-maybe-shutdown) (kill-this-buffer) - (when (bound-and-true-p centaur-tabs-mode) - (centaur-tabs-refill-tabs)) (jcs-project--track-open-projects) ;; If still in the buffer menu, try switch to the previous buffer. (when (jcs-buffer-menu-p) (switch-to-prev-buffer))) From db62832fe9c3e2e812180c5952f9b229d442ac93 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 29 Jun 2024 21:55:56 -0700 Subject: [PATCH 035/334] chore: Moved to elenv --- lisp/jcs-hook.el | 2 +- lisp/jcs-theme.el | 2 +- lisp/jcs-ui.el | 2 +- lisp/lib/jcs-edit.el | 2 +- lisp/lib/jcs-util.el | 59 +++----------------------------- lisp/lib/jcs-window.el | 53 ---------------------------- modules/lang/csharp/config.el | 2 +- modules/tools/debugger/config.el | 4 +-- modules/tools/lookup/config.el | 2 +- modules/ui/dashboard/config.el | 2 +- 10 files changed, 13 insertions(+), 117 deletions(-) diff --git a/lisp/jcs-hook.el b/lisp/jcs-hook.el index ab008964..0f262020 100755 --- a/lisp/jcs-hook.el +++ b/lisp/jcs-hook.el @@ -149,7 +149,7 @@ ;; XXX: See the bug https://github.com/immerrr/lua-mode/issues/172 (unless (jcs-contain-list-type-str "-" (list comment-start comment-end) 'regex) (modify-syntax-entry ?- "_")) - (unless (jcs-space-p) + (unless (elenv-buffer-use-spaces-p) (msgu-inhibit-log (message "[INFO] Detect tabs in buffer `%s'; turn on `%s' automatically" (propertize (buffer-name) 'face 'font-lock-type-face) diff --git a/lisp/jcs-theme.el b/lisp/jcs-theme.el index 42a6008e..f387fe6a 100755 --- a/lisp/jcs-theme.el +++ b/lisp/jcs-theme.el @@ -12,7 +12,7 @@ (defun jcs-light-theme-p () "Return non-nil if current theme is light theme." - (ignore-errors (jcs-light-color-p (face-background 'default)))) + (ignore-errors (elenv-light-color-p (face-background 'default)))) (defun jcs-theme-call (fnc) "Execute FNC with default arguments." diff --git a/lisp/jcs-ui.el b/lisp/jcs-ui.el index e158c639..e2c184ce 100644 --- a/lisp/jcs-ui.el +++ b/lisp/jcs-ui.el @@ -34,7 +34,7 @@ ((< 0 buffer-wrap--delta-lines) (ignore-errors (forward-line 1))) (t - (jcs-goto-line (1- (line-number-at-pos (point-max)))))) + (elenv-goto-line (1- (line-number-at-pos (point-max)))))) (unless (ignore-errors (tabulated-list-get-entry)) (ignore-errors (forward-line 1)))))) diff --git a/lisp/lib/jcs-edit.el b/lisp/lib/jcs-edit.el index cd56a372..a8389156 100644 --- a/lisp/lib/jcs-edit.el +++ b/lisp/lib/jcs-edit.el @@ -404,7 +404,7 @@ other window." (when-let ((filename (buffer-file-name))) (msgu-inhibit-log (when (jcs-lsp-connected-p) (lsp-disconnect)) - (jcs-save-window-excursion (find-alternate-file filename)) + (elenv-save-window-excursion (find-alternate-file filename)) (jcs-fboundp-apply #'undo-tree-kill-visualizer) (msgu-current "[INFO] Reopened file => '%s'" filename)))) diff --git a/lisp/lib/jcs-util.el b/lisp/lib/jcs-util.el index 0e79d2d0..31801cfd 100644 --- a/lisp/lib/jcs-util.el +++ b/lisp/lib/jcs-util.el @@ -8,7 +8,7 @@ (defun jcs-as-hook (name) "Convert NAME to hook." - (intern (concat (jcs-2str name) "-hook"))) + (intern (concat (elenv-2str name) "-hook"))) ;; ;; (@* "Advice" ) @@ -38,17 +38,6 @@ (add-hook hook (lambda (&optional arg0 arg1 arg2 &rest args) ,@body)))) (t (add-hook ,hooks (lambda (&optional arg0 arg1 arg2 &rest args) ,@body))))) -(defmacro jcs-save-excursion (&rest body) - "Re-implementation `save-excursion' in FNC with ARGS." - (declare (indent 0) (debug t)) - `(let ((ln (line-number-at-pos nil t)) (col (current-column))) - ,@body (jcs-goto-line ln) (move-to-column col))) - -(defmacro jcs-save-window-excursion (&rest body) - "Execute BODY without touching window's layout/settings." - (declare (indent 0) (debug t)) - `(elenv-with-no-redisplay (jcs-window-record-once) ,@body (jcs-window-restore-once))) - (defmacro jcs-when-buffer-window (buffer-or-name &rest body) "Execute BODY in window BUFFER-OR-NAME." (declare (indent 1) (debug t)) @@ -201,28 +190,6 @@ TYPE is the return type; can be 'object or 'string." (`string (push buf-name buf-lst)))))) buf-lst)) -(defun jcs-get-buffer-by-path (path) - "Return the buffer by file PATH. - -Notice PATH can either be `buffer-name' or `buffer-file-name'." - (let ((buf-lst (buffer-list)) target-buf) - (when (cl-some (lambda (buf) - (setq target-buf buf) - (string= (jcs-buffer-name-or-buffer-file-name buf) path)) - buf-lst) - target-buf))) - -;; -;; (@* "Color" ) -;; - -(defun jcs-light-color-p (hex-code) - "Return non-nil if HEX-CODE is in light tone." - (when elenv-graphic-p - (let ((gray (nth 0 (color-values "gray"))) - (color (nth 0 (color-values hex-code)))) - (< gray color)))) - ;; ;; (@* "Command" ) ;; @@ -272,7 +239,7 @@ Notice PATH can either be `buffer-name' or `buffer-file-name'." (select-window (jcs-get-largest-window nil nil t)) (switch-to-buffer (nth 0 record)) (jcs-make-first-visible-line-to (nth 3 record)) - (jcs-goto-line (nth 1 record)) + (elenv-goto-line (nth 1 record)) (move-to-column (nth 2 record)))) ;; @@ -410,14 +377,6 @@ Notice PATH can either be `buffer-name' or `buffer-file-name'." ;; (@* "Line" ) ;; -(defun jcs-goto-line (ln) - "Goto LN line number." - (goto-char (point-min)) (forward-line (1- ln))) - -(defun jcs-space-p () - "Return t if the buffer uses spaces instead of tabs." - (= (how-many "^\t" (point-min) (point-max)) 0)) - (defun jcs-first-char-in-line-column () "Return column in first character in line." (save-excursion (back-to-indentation) (current-column))) @@ -460,19 +419,13 @@ Notice PATH can either be `buffer-name' or `buffer-file-name'." "Last line number in current visible window." (line-number-at-pos (window-end) t)) -(defun jcs-line-number-at-pos-relative (&optional pos rel-line) - "Return line number relative to REL-LINE from POS. - -If optional argument REL-LINE is nil; we will use first visible line instead." - (- (line-number-at-pos pos t) (or rel-line (jcs-first-visible-line-in-window)))) - (defun jcs-make-first-visible-line-to (ln) "Make the first visible line to target line, LN." - (jcs-goto-line ln) (jcs-recenter-top-bottom 'top)) + (elenv-goto-line ln) (jcs-recenter-top-bottom 'top)) (defun jcs-make-last-visible-line-to (ln) "Make the last visible line to target line, LN." - (jcs-goto-line ln) (jcs-recenter-top-bottom 'bottom)) + (elenv-goto-line ln) (jcs-recenter-top-bottom 'bottom)) (defun jcs-recenter-top-bottom (type) "Recenter the window by TYPE." @@ -684,10 +637,6 @@ If optional argument REVERSE is non-nil, LIST item and ELT argument." ;; (@* "String" ) ;; -(defun jcs-2str (obj) - "Convert OBJ to string." - (format "%s" obj)) - (defun jcs-string-compare-p (regexp str type &optional ignore-case) "Compare STR with REGEXP by TYPE. diff --git a/lisp/lib/jcs-window.el b/lisp/lib/jcs-window.el index 306e59ce..846b2d9d 100644 --- a/lisp/lib/jcs-window.el +++ b/lisp/lib/jcs-window.el @@ -17,10 +17,6 @@ ;; (@* "Frame" ) ;; -(defun jcs-frame-util-p (&optional frame) - "Return non-nil if FRAME is an utility frame." - (frame-parent (or frame (selected-frame)))) - (defun jcs-make-frame () "Select new frame after make frame." (interactive) @@ -107,16 +103,6 @@ For argument TYPE; see function `jcs-string-compare-p' description." For argument TYPE; see function `jcs-string-compare-p' description." (>= (jcs-buffer-shown-count buf-name type) 2)) -(defun jcs-walk-windows (fun &optional minibuf all-frames) - "See function `walk-windows' description for arguments FUN, MINIBUF and -ALL-FRAMES." - (elenv-with-no-redisplay - (walk-windows - (lambda (win) - (unless (jcs-frame-util-p (window-frame win)) - (with-selected-window win (funcall fun)))) - minibuf all-frames))) - ;; ;; (@* "Deleting" ) ;; @@ -146,44 +132,5 @@ ALL-FRAMES." (interactive) (while (ignore-errors (select-window (window-in-direction 'above))))) -;; -;; (@* "Restore Windows Status" ) -;; - -(defvar jcs-window--record-buffer-names nil "Record all windows' buffer.") -(defvar jcs-window--record-points nil "Record all windows point.") -(defvar jcs-window--record-wstarts nil "Record all windows starting points.") - -(defun jcs-window-record-once () - "Record windows status once." - (let ((buf-names nil) (pts nil) (wstarts nil)) - ;; Record down all the window information with the same buffer opened. - (jcs-walk-windows - (lambda () - (jcs-push (jcs-buffer-name-or-buffer-file-name) buf-names) ; Record as string! - (jcs-push (point) pts) - (jcs-push (window-start) wstarts))) - (push buf-names jcs-window--record-buffer-names) - (push pts jcs-window--record-points) - (push wstarts jcs-window--record-wstarts))) - -(defun jcs-window-restore-once () - "Restore windows status once." - (let ((buf-names (pop jcs-window--record-buffer-names)) - (pts (pop jcs-window--record-points)) - (wstarts (pop jcs-window--record-wstarts)) - (win-cnt 0)) - ;; Restore the window information after, including opening the same buffer. - (jcs-walk-windows - (lambda () - (let* ((buf-name (nth win-cnt buf-names)) - (current-pt (nth win-cnt pts)) - (current-wstart (nth win-cnt wstarts)) - (actual-buf (jcs-get-buffer-by-path buf-name))) - (if actual-buf (switch-to-buffer actual-buf) (find-file buf-name)) - (set-window-start nil current-wstart) - (goto-char current-pt) - (cl-incf win-cnt)))))) - (provide 'jcs-window) ;;; jcs-window.el ends here diff --git a/modules/lang/csharp/config.el b/modules/lang/csharp/config.el index b82b5b22..0f025e1d 100644 --- a/modules/lang/csharp/config.el +++ b/modules/lang/csharp/config.el @@ -50,7 +50,7 @@ (jcs-add-hook 'meta-view-after-insert-hook (run-hooks 'prog-mode-hook) ; treat as prog-mode (setq-local ts-fold-summary-show nil) - (jcs-save-excursion ; fold all comments + (elenv-save-excursion ; fold all comments (goto-char (point-min)) (call-interactively #'ts-fold-close) (let (continuation) diff --git a/modules/tools/debugger/config.el b/modules/tools/debugger/config.el index 8d73a518..bc408dbc 100644 --- a/modules/tools/debugger/config.el +++ b/modules/tools/debugger/config.el @@ -5,7 +5,7 @@ gdb-many-windows t) (jcs-add-hook '(dap-mode-hook) - (let* ((mode-name (jcs-2str major-mode)) + (let* ((mode-name (elenv-2str major-mode)) (guess-req (s-replace "-mode" "" mode-name))) (require (intern (format "dap-%s" guess-req)) nil t))) @@ -14,7 +14,7 @@ `(cond ((elenv-debugging-p) ,@form1) ((jcs-debugging-p) ,@form2) (t (message "[INFO] Invalid debugger action: `%s`" - (propertize (jcs-2str this-command) + (propertize (elenv-2str this-command) 'face 'font-lock-type-face))))) (defun jcs-debug-toggle-break-point () diff --git a/modules/tools/lookup/config.el b/modules/tools/lookup/config.el index a3beaa41..72cff46e 100644 --- a/modules/tools/lookup/config.el +++ b/modules/tools/lookup/config.el @@ -30,7 +30,7 @@ t) ((derived-mode-p 'lisp-data-mode) (if (or (ignore-errors (call-interactively #'elisp-def)) - (ignore-errors (xref-find-definitions (jcs-2str (symbol-at-point))))) + (ignore-errors (xref-find-definitions (elenv-2str (symbol-at-point))))) (progn (jcs-recenter-top-bottom 'middle) t) (user-error "[INFO] No definition found for current target"))) ((ignore-errors (meta-view-at-point))) diff --git a/modules/ui/dashboard/config.el b/modules/ui/dashboard/config.el index 580c421e..b090ae6b 100644 --- a/modules/ui/dashboard/config.el +++ b/modules/ui/dashboard/config.el @@ -141,7 +141,7 @@ (jcs-when-buffer-window dashboard-buffer-name (jcs-with-dashboard-last-path (msgu-silent - (jcs-save-window-excursion (dashboard-refresh-buffer)))))) + (elenv-save-window-excursion (dashboard-refresh-buffer)))))) (jcs-advice-add 'dashboard-remove-item-under :around (jcs-with-dashboard-last-path (apply arg0 args))) From 29dc4ba45f7c2a0243f0f90d61fd08630346a70e Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 30 Jun 2024 20:54:43 -0700 Subject: [PATCH 036/334] chore(fold): No need to render after save --- modules/editor/fold/config.el | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/modules/editor/fold/config.el b/modules/editor/fold/config.el index 759b8eaf..add858f8 100644 --- a/modules/editor/fold/config.el +++ b/modules/editor/fold/config.el @@ -15,7 +15,4 @@ (setq line-reminder-add-line-function (lambda (&rest _) (null (ts-fold--overlays-in 'ts-fold-indicators-window (selected-window) - (line-beginning-position) (line-end-position))))) - (jcs-advice-add 'line-reminder-transfer-to-saved-lines :after - ;; Refresh indicators for package `ts-fold'. - (ts-fold-indicators-refresh))) + (line-beginning-position) (line-end-position)))))) From f8da615fcd272629bdd44937f27d6b34aaf494e5 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 1 Jul 2024 03:16:09 -0700 Subject: [PATCH 037/334] feat: Moved IO to elenv --- lisp/lib/jcs-util.el | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/lisp/lib/jcs-util.el b/lisp/lib/jcs-util.el index 31801cfd..391a0093 100644 --- a/lisp/lib/jcs-util.el +++ b/lisp/lib/jcs-util.el @@ -190,20 +190,6 @@ TYPE is the return type; can be 'object or 'string." (`string (push buf-name buf-lst)))))) buf-lst)) -;; -;; (@* "Command" ) -;; - -(defun jcs-shell-execute (cmd &rest args) - "Return non-nil if CMD executed succesfully with ARGS." - (save-window-excursion - (msgu-silent - (= 0 (shell-command - (concat cmd " " - (mapconcat #'shell-quote-argument - (cl-remove-if #'s-blank-str-p args) - " "))))))) - ;; ;; (@* "Event" ) ;; @@ -598,23 +584,6 @@ If optional argument REVERSE is non-nil, LIST item and ELT argument." (if (= args 1) (unless (symbol-value name) (funcall-interactively name 1)) (when (symbol-value name) (funcall-interactively name -1))))) -;; -;; (@* "I/O" ) -;; - -(defun jcs-file-content (path) - "Return PATH file content." - (if (file-exists-p path) - (with-temp-buffer (insert-file-contents path) (buffer-string)) - "")) - -(defun jcs-move-path (path dest) - "Move PATH to DEST." - (ignore-errors (make-directory dest t)) - (jcs-shell-execute (if elenv-windows "move" "mv") - (unless elenv-windows "-f") - (expand-file-name path) (expand-file-name dest))) - ;; ;; (@* "File" ) ;; From 5395ec527300c91d3d0b0dc40cb7e8a9e77bf4b9 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Tue, 2 Jul 2024 01:22:26 -0700 Subject: [PATCH 038/334] feat: Improve messaging renmaing file --- lisp/lib/jcs-edit.el | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lisp/lib/jcs-edit.el b/lisp/lib/jcs-edit.el index a8389156..8e359bb7 100644 --- a/lisp/lib/jcs-edit.el +++ b/lisp/lib/jcs-edit.el @@ -306,9 +306,10 @@ (rename-buffer new-name) (set-visited-file-name new-name) (set-buffer-modified-p nil) - (if (string= name new-file-name) - (message "Filename doesn't change, `%s`" name) - (message "Rename file `%s` to `%s`" name new-file-name))))))) + (msgu-inhibit-log + (if (string= name new-file-name) + (msgu-current "[INFO] Filename doesn't change, `%s`" name) + (msgu-current "[INFO] Rename file `%s` to `%s`" name new-file-name)))))))) ;; ;; (@* "Kill Buffer" ) From 4d7f0c78cb640876bbd3546c0d4bbddca87fe302 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 5 Jul 2024 02:24:18 -0700 Subject: [PATCH 039/334] tweak(lsp): Disable inlay hints update on scroll --- modules/tools/lsp/config.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/tools/lsp/config.el b/modules/tools/lsp/config.el index 95b1f6e6..ff48fb17 100644 --- a/modules/tools/lsp/config.el +++ b/modules/tools/lsp/config.el @@ -12,8 +12,9 @@ lsp-enable-on-type-formatting nil ;; Make breadcrumbs opt-in; they're redundant with the modeline and imenu lsp-headerline-breadcrumb-enable nil - ;; Inlay + ;; Inlay Hints lsp-inlay-hint-enable t + lsp-update-inlay-hints-on-scroll nil ; XXX: Bad performance. ;; Make TCP connection is already slow; only try to connect once lsp-tcp-connection-timeout 0.01) From 46d66c381ee0b9f683c2f58ac9a6735b08b7fc48 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 13 Jul 2024 03:39:33 -0700 Subject: [PATCH 040/334] perf: Use window buffer change hook instead state change --- lisp/jcs-hook.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/jcs-hook.el b/lisp/jcs-hook.el index 0f262020..b9140e01 100755 --- a/lisp/jcs-hook.el +++ b/lisp/jcs-hook.el @@ -24,7 +24,7 @@ (if (frame-focus-state) (jcs-hook--focus-in) (jcs-hook--focus-out))) -(jcs-add-hook 'window-state-change-hook +(jcs-add-hook 'window-buffer-change-functions (when (and (not (active-minibuffer-window)) (not (jcs-fboundp-apply #'company--active-p))) (jcs-fboundp-apply #'jcs-buffer-menu-refresh-buffer) From 767a824e34977c7fda03e04cd9d6f30737a1d7cb Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 13 Jul 2024 17:15:40 -0700 Subject: [PATCH 041/334] feat(buffer-menu): Also hide the main esup buffer --- modules/emacs/buffer-menu/config.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/emacs/buffer-menu/config.el b/modules/emacs/buffer-menu/config.el index 6fa05a6e..1e7b052f 100644 --- a/modules/emacs/buffer-menu/config.el +++ b/modules/emacs/buffer-menu/config.el @@ -9,7 +9,7 @@ (setq diminish-buffer-list '("[*]jcs" ; config wise "[*]Echo Area" "[*]Minibuf-" - "[*]helm" "[*]esup-" "[*]quelpa-" + "[*]helm" "[*]esup" "[*]quelpa-" "[*]easky" "[*]quickrun" "[*]Apropos[*]" "[*]Backtrace[*]" "[*]Compile-Log[*]" "[*]Ibuffer[*]" From 50e48d98ce7d007434a048adc282f6b34d7b5fd6 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 13 Jul 2024 19:28:09 -0700 Subject: [PATCH 042/334] feat: Add clean-buffers --- lisp/jcs-module.el | 1 + lisp/jcs-package.el | 1 + modules/emacs/clean-buffers/config.el | 10 ++++++++++ 3 files changed, 12 insertions(+) create mode 100644 modules/emacs/clean-buffers/config.el diff --git a/lisp/jcs-module.el b/lisp/jcs-module.el index 85f83610..deccc7cb 100644 --- a/lisp/jcs-module.el +++ b/lisp/jcs-module.el @@ -26,6 +26,7 @@ (( vs-edit-mode vsc-edit-mode vs-comment-return) . "editor/vs") (backtrace . "emacs/backtrace") + (clean-buffers . "emacs/clean-buffers") (compile . "emacs/compile") (conf-mode . "emacs/conf-mode") (dired . "emacs/dired") diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index c62b6d2c..4fccb253 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -78,6 +78,7 @@ centaur-tabs chatgpt-sideline cisco-router-mode + clean-buffers clhs cmake-font-lock cobol-mode diff --git a/modules/emacs/clean-buffers/config.el b/modules/emacs/clean-buffers/config.el new file mode 100644 index 00000000..674048c0 --- /dev/null +++ b/modules/emacs/clean-buffers/config.el @@ -0,0 +1,10 @@ +;;; emacs/clean-buffers/config.el -*- lexical-binding: t; -*- + +(use-package clean-buffers + :init + (setq clean-buffers-kill-active-buffer t + clean-buffers-useless-buffer-names + '("\\*CPU-Profiler-Report " + "\\*Memory-Profiler-Report " + "\\*esup") + clean-buffers-useful-buffer-names nil)) From 841479bd8f88b2f5a689a9cef141b9126c61c93a Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 13 Jul 2024 19:45:55 -0700 Subject: [PATCH 043/334] feat: Refresh buffer menu after cleaning --- modules/emacs/clean-buffers/config.el | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/modules/emacs/clean-buffers/config.el b/modules/emacs/clean-buffers/config.el index 674048c0..943d70d9 100644 --- a/modules/emacs/clean-buffers/config.el +++ b/modules/emacs/clean-buffers/config.el @@ -4,7 +4,11 @@ :init (setq clean-buffers-kill-active-buffer t clean-buffers-useless-buffer-names - '("\\*CPU-Profiler-Report " - "\\*Memory-Profiler-Report " - "\\*esup") - clean-buffers-useful-buffer-names nil)) + '("[*]CPU-Profiler-Report " + "[*]Memory-Profiler-Report " + "[*]esup" + "[*]Process List") + clean-buffers-useful-buffer-names nil) + :config + (jcs-advice-add 'clean-buffers-kill-useless-buffers :after + (jcs-buffer-menu-refresh-buffer))) From a364331a414f5e48b6b555a9669074a53ff4435a Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 13 Jul 2024 19:46:06 -0700 Subject: [PATCH 044/334] feat: Bind cleaning commands --- docs/keybindings.md | 11 ++++++++--- lisp/jcs-key.el | 4 ++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/docs/keybindings.md b/docs/keybindings.md index 9b428550..13185dc5 100755 --- a/docs/keybindings.md +++ b/docs/keybindings.md @@ -129,6 +129,11 @@ Here is the list of key bindings that are defined in this configuration. * Ctrl+Shift+= - Previous output buffer. * Ctrl+Shift+- - Next output buffer. +#### Cleaning + +* Alt+Shift+9 - Clear the `M-x` command history. +* Alt+Shift+0 - Clean the useless buffers. + #### Search * Ctrl+f - Search through file. @@ -145,8 +150,8 @@ Here is the list of key bindings that are defined in this configuration. #### Todo -* Ctrl+f10 - Goto the `previous` highlighted TODO related symbols. -* Ctrl+f11 - Goto the `next` highlighted TODO related symbols. +* Ctrl+f10 - Go to the `previous` highlighted TODO related symbols. +* Ctrl+f11 - Go to the `next` highlighted TODO related symbols. #### Commenting / Uncommenting @@ -159,7 +164,7 @@ Here is the list of key bindings that are defined in this configuration. * Alt+0 - Ask and set the current document string style. -#### Formating +#### Formatting * Ctrl+k, Ctrl+f - Format region. * Ctrl+k, Ctrl+d - Format document. diff --git a/lisp/jcs-key.el b/lisp/jcs-key.el index d0591c36..65c41dbd 100755 --- a/lisp/jcs-key.el +++ b/lisp/jcs-key.el @@ -53,6 +53,10 @@ ((kbd "") . top-level) ((kbd "S-") . keyboard-escape-quit) +;;; Cleaning + ((kbd "M-(") . jcs-clear-M-x-history) + ((kbd "M-)") . clean-buffers-kill-useless-buffers) + ;;; Comment / Uncomment ((kbd "C-/") . smart-comment) ((kbd "C-k C-c") . comment-region) From 04020d7596f88ede7b4b9817b4abd7171f76f2c9 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 14 Jul 2024 01:06:56 -0700 Subject: [PATCH 045/334] feat: Clean diminished buffers --- modules/emacs/clean-buffers/config.el | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/modules/emacs/clean-buffers/config.el b/modules/emacs/clean-buffers/config.el index 943d70d9..94306799 100644 --- a/modules/emacs/clean-buffers/config.el +++ b/modules/emacs/clean-buffers/config.el @@ -3,12 +3,14 @@ (use-package clean-buffers :init (setq clean-buffers-kill-active-buffer t - clean-buffers-useless-buffer-names - '("[*]CPU-Profiler-Report " - "[*]Memory-Profiler-Report " - "[*]esup" - "[*]Process List") - clean-buffers-useful-buffer-names nil) + clean-buffers-useless-buffer-names diminish-buffer-list + clean-buffers-useful-buffer-names `("[*]Echo Area" "[*]Minibuf-" + ,buffer-menu-filter-name + "[*]company") + clean-buffers-judge-useless-buffer-functions + '( clean-buffers-judge-useless-buffer-by-time + clean-buffers-judge-useless-buffer-by-name + diminish-buffer--filter)) :config (jcs-advice-add 'clean-buffers-kill-useless-buffers :after (jcs-buffer-menu-refresh-buffer))) From 5d57646996b0552e8c0d372a7a6983d33be85f67 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 14 Jul 2024 22:28:38 -0700 Subject: [PATCH 046/334] style: spacing --- modules/completion/company/config.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/completion/company/config.el b/modules/completion/company/config.el index 30e650c8..39903c8d 100644 --- a/modules/completion/company/config.el +++ b/modules/completion/company/config.el @@ -72,7 +72,7 @@ (jcs-require '(asoc company-box)) (let (fg bg) (pcase theme - (`vs-dark (setq bg "#2A2D38" fg "#F1F1F1")) + (`vs-dark (setq bg "#2A2D38" fg "#F1F1F1")) (`vs-light (setq bg "#E9EAED" fg "#1E1E1E"))) (asoc-put! company-box-doc-frame-parameters 'background-color bg t) (asoc-put! company-box-doc-frame-parameters 'foreground-color fg t))) From fb46a9d8dab57ea0aa45f233d3c4d91c2aed4c11 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 15 Jul 2024 16:39:38 -0700 Subject: [PATCH 047/334] feat: Echo profiler --- lisp/jcs-env.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/jcs-env.el b/lisp/jcs-env.el index b7ac6ca1..14502c2b 100755 --- a/lisp/jcs-env.el +++ b/lisp/jcs-env.el @@ -204,7 +204,8 @@ undefined toggle-truncate-lines after-find-file ff-find-the-other-file - undo) + undo + toggle-profiler) message-clean-mode-minor-mode 'echo)) (use-package msgu From ee4a94bcaa5d1bad7046ad484f94c0a3d65d027c Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 15 Jul 2024 16:39:50 -0700 Subject: [PATCH 048/334] feat: Don't kill eldoc --- modules/emacs/clean-buffers/config.el | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/emacs/clean-buffers/config.el b/modules/emacs/clean-buffers/config.el index 94306799..2e0d7883 100644 --- a/modules/emacs/clean-buffers/config.el +++ b/modules/emacs/clean-buffers/config.el @@ -6,6 +6,7 @@ clean-buffers-useless-buffer-names diminish-buffer-list clean-buffers-useful-buffer-names `("[*]Echo Area" "[*]Minibuf-" ,buffer-menu-filter-name + "[*]eldoc" "[*]company") clean-buffers-judge-useless-buffer-functions '( clean-buffers-judge-useless-buffer-by-time From 9596ab7cb80a157bfbe3af10d0c9784e2b5bbf1a Mon Sep 17 00:00:00 2001 From: JenChieh Date: Tue, 16 Jul 2024 16:19:40 -0700 Subject: [PATCH 049/334] feat(tabs): Add hide predicate --- modules/ui/tabs/config.el | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index ce7c6f60..ebc11dcf 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -11,6 +11,7 @@ centaur-tabs-icon-scale-factor 0.9 centaur-tabs-set-modified-marker t centaur-tabs-buffer-groups-function #'jcs-tab-buffer-groups-function + centaur-tabs-hide-predicate #'elenv-frame-util-p centaur-tabs-hide-tab-function #'ignore centaur-tabs-show-count t centaur-tabs-count-format " %d/%d" From deeba799bedbdecb373bcc864f435307ea57300f Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 19 Jul 2024 02:25:14 -0700 Subject: [PATCH 050/334] feat: Add show-eof --- lisp/jcs-package.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 4fccb253..1d879354 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -336,6 +336,7 @@ move-text multi-shell nasm-mode + nerd-icons-archive nerd-icons-buffer-menu nerd-icons-completion nerd-icons-dired @@ -393,6 +394,7 @@ shader-mode shell-pop shift-number + show-eof-mode shrink-whitespace sideline-blame sideline-color From 7c2cf5ae82d64995b4bc1e0846443609bbc6883f Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 19 Jul 2024 02:25:25 -0700 Subject: [PATCH 051/334] feat: Add nerd-icons-archive --- lisp/jcs-module.el | 3 ++- modules/app/archive/config.el | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 modules/app/archive/config.el diff --git a/lisp/jcs-module.el b/lisp/jcs-module.el index deccc7cb..41902154 100644 --- a/lisp/jcs-module.el +++ b/lisp/jcs-module.el @@ -11,7 +11,8 @@ "A list of preload modules.") (defconst jcs-module-load-alist - '((keypression . "app/keypression") + '(((arc-mode tar-mode) . "app/archive") + (keypression . "app/keypression") (elfeed . "app/rss") ((flycheck flymake) . ("checkers/syntax" "ui/sideline")) (company . "completion/company") diff --git a/modules/app/archive/config.el b/modules/app/archive/config.el new file mode 100644 index 00000000..03d3c306 --- /dev/null +++ b/modules/app/archive/config.el @@ -0,0 +1,5 @@ +;;; app/archive/config.el -*- lexical-binding: t; -*- + +(use-package nerd-icons-archive + :init + (nerd-icons-archive-mode 1)) From f39072588bb65b1592dfdb176cb0e2de8202798e Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 19 Jul 2024 16:01:57 -0700 Subject: [PATCH 052/334] fix: opencl-mode to opencl-c-mode --- lisp/jcs-module.el | 2 +- lisp/jcs-package.el | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/jcs-module.el b/lisp/jcs-module.el index 41902154..700f33e8 100644 --- a/lisp/jcs-module.el +++ b/lisp/jcs-module.el @@ -232,7 +232,7 @@ ;;; O ("\\.dpk'?\\'" . opascal-mode) ("\\.dpr'?\\'" . opascal-mode) - ("\\.cl'?\\'" . opencl-mode) + ("\\.cl'?\\'" . opencl-c-mode) ;;; R ("\\.http'?\\'" . restclient-mode) ;;; S diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 1d879354..1f72b39f 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -350,7 +350,7 @@ nov npm-mode on - opencl-mode + opencl-c-mode org-fancy-priorities org-sticky-header org-superstar From 5cb3158ea9e6c07fd06f187e0b113daeb74ff43b Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 20 Jul 2024 23:27:56 -0700 Subject: [PATCH 053/334] ci: Test Emacs 29.4 --- .github/workflows/compile.yml | 2 +- .github/workflows/mode.yml | 2 +- .github/workflows/packages.yml | 2 +- .github/workflows/speed.yml | 2 +- .github/workflows/startup.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml index e325414d..bcf14cd1 100644 --- a/.github/workflows/compile.yml +++ b/.github/workflows/compile.yml @@ -29,7 +29,7 @@ jobs: matrix: os: [ubuntu-latest] emacs-version: - - 29.3 + - 29.4 steps: - uses: jcs090218/setup-emacs@master with: diff --git a/.github/workflows/mode.yml b/.github/workflows/mode.yml index f76fb9bb..67ef0a98 100644 --- a/.github/workflows/mode.yml +++ b/.github/workflows/mode.yml @@ -22,7 +22,7 @@ jobs: matrix: os: [ubuntu-latest, macos-latest, windows-latest] emacs-version: - - 29.3 + - 29.4 steps: - name: Checkout binaries repository uses: actions/checkout@v4 diff --git a/.github/workflows/packages.yml b/.github/workflows/packages.yml index 4003a311..84816ccc 100644 --- a/.github/workflows/packages.yml +++ b/.github/workflows/packages.yml @@ -23,7 +23,7 @@ jobs: matrix: os: [ubuntu-latest, macos-latest, windows-latest] emacs-version: - - 29.3 + - 29.4 steps: - name: Checkout binaries repository uses: actions/checkout@v4 diff --git a/.github/workflows/speed.yml b/.github/workflows/speed.yml index 9df8e017..4cf140d7 100644 --- a/.github/workflows/speed.yml +++ b/.github/workflows/speed.yml @@ -23,7 +23,7 @@ jobs: matrix: os: [ubuntu-latest, macos-latest, windows-latest] emacs-version: - - 29.3 + - 29.4 steps: - name: Checkout binaries repository uses: actions/checkout@v4 diff --git a/.github/workflows/startup.yml b/.github/workflows/startup.yml index 502bde5e..9f6d31ed 100644 --- a/.github/workflows/startup.yml +++ b/.github/workflows/startup.yml @@ -34,7 +34,7 @@ jobs: matrix: os: [ubuntu-latest, macos-latest, windows-latest] emacs-version: - - 29.3 + - 29.4 experimental: [false] include: - os: ubuntu-latest From e75277391cdc5356cf82a83e835ce55e93fb9729 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 21 Jul 2024 17:00:30 -0700 Subject: [PATCH 054/334] feat(key): Add show-eof key --- lisp/jcs-key.el | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lisp/jcs-key.el b/lisp/jcs-key.el index 65c41dbd..b7347ef0 100755 --- a/lisp/jcs-key.el +++ b/lisp/jcs-key.el @@ -157,10 +157,6 @@ ((kbd "C-k 0") . (lambda () (interactive) (require 'powerthesaurus) (powerthesaurus-transient))) -;;; Line Endings - ((kbd "M-i") . show-eol-mode) - ((kbd "M-I") . set-buffer-file-coding-system) - ;;; Macro ((kbd "C-k x") . macrostep-expand) @@ -245,7 +241,6 @@ ;;; Script Executing (Output) ((kbd "C-S-u") . execrun-popup) - ((kbd "M-o") . execrun-switch-to-buffer) ((kbd "") . execrun-run) ; Run ((kbd "C-S-b") . execrun-build) ; Build ((kbd "C-") . quickrun-select) @@ -265,6 +260,15 @@ ((kbd "C-q") . jcs-poptip-focus) +;;; Show Symbol + ((kbd "M-i") . show-eol-mode) + ((kbd "M-I") . set-buffer-file-coding-system) + + ((kbd "M-o") . show-eof-mode) + + ((kbd "C-k b") . whitespace-mode) + ((kbd "C-r C-w") . whitespace-mode) + ;;; Startup Screen (Dashboard) ((kbd "M-d") . jcs-dashboard) @@ -333,10 +337,6 @@ ((kbd "C-M-d") . downcase-dwim) ((kbd "C-M-c") . capitalize-dwim) -;;; Whitespace - ((kbd "C-k b") . whitespace-mode) - ((kbd "C-r C-w") . whitespace-mode) - ;;; Zoom ((kbd "C-=") . text-scale-increase) ((kbd "C--") . text-scale-decrease) From 71c22424138f25d8449fe54165b5811794e1c699 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 21 Jul 2024 17:04:43 -0700 Subject: [PATCH 055/334] docs: Update key bindings --- docs/keybindings.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/keybindings.md b/docs/keybindings.md index 13185dc5..03eac86f 100755 --- a/docs/keybindings.md +++ b/docs/keybindings.md @@ -125,7 +125,6 @@ Here is the list of key bindings that are defined in this configuration. * f5 - Debug the program. * Ctrl+f5 - Run the program. * Ctrl+Shift+u - Show output window. (if any) -* Alt+o - Switch to the output buffer. * Ctrl+Shift+= - Previous output buffer. * Ctrl+Shift+- - Next output buffer. @@ -348,7 +347,8 @@ Here is the list of key bindings that are defined in this configuration. * Alt+= - Increase the frame's transparency. * Alt+- - Decrease the frame's transparency. * Ctrl+k, f - Change font style. -* Alt+i - Show End of Line. +* Alt+i - Show end of line. +* Alt+o - Show end of file. * Ctrl+k, b - Show white space. * Ctrl+r, Ctrl+w - Show white space. From 295696308ee1a8c9ef7ae7ba779ece942d12656e Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Mon, 22 Jul 2024 00:39:29 -0700 Subject: [PATCH 056/334] docs: Use caution --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2a70aa41..0c61ace7 100755 --- a/README.md +++ b/README.md @@ -153,7 +153,9 @@ git clone https://github.com/jcs-emacs/jcs-emacs ~/.emacs.d Then startup Emacs; will automatically install all necessary packages due to this configuration. -**‼️[ATTENTION]‼️ -- MAKE SURE YOU INSTALLED THE CORRECT VERSION OF EMACS!** +> [!CAUTION] +> +> **MAKE SURE YOU INSTALLED THE CORRECT VERSION OF EMACS!** ## 🕒 Startup Time From a1538d47f924e69f88f1f64df4970a425e232f28 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Thu, 25 Jul 2024 23:31:12 -0700 Subject: [PATCH 057/334] fix: Hash-table for centaur-tabs --- modules/ui/tabs/config.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index ebc11dcf..e2e034e3 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -29,7 +29,7 @@ ;; ;;; Buffer Groups -(defvar jcs-tab-line--group-cache (make-hash-table) +(defvar jcs-tab-line--group-cache (make-hash-table :test #'equal) "Cache for buffer groups.") (defun jcs-tab-buffer-groups-function () From f075659aa6030735b2e90a4477f02edb1c92d847 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 26 Jul 2024 19:54:17 -0700 Subject: [PATCH 058/334] feat: Use buffer instead of string as key --- modules/ui/tabs/config.el | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index e2e034e3..db1f74a5 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -32,14 +32,23 @@ (defvar jcs-tab-line--group-cache (make-hash-table :test #'equal) "Cache for buffer groups.") +(defun jcs-tab-clear-dead-buffers () + "Remove all dead buffers from group cache." + (ht-map (lambda (buffer _) + (unless (buffer-live-p buffer) + (ht-remove jcs-tab-line--group-cache buffer))) + jcs-tab-line--group-cache)) + (defun jcs-tab-buffer-groups-function () "Group tabs." (let* ((name (buffer-name)) - (group (or (ht-get jcs-tab-line--group-cache name) + (buffer (current-buffer)) + (group (or (ht-get jcs-tab-line--group-cache buffer) (cond ((and (featurep 'buffer-menu-filter) (diminish-buffer--filter name)) "Hidden") (t (car (funcall #'centaur-tabs-buffer-groups))))))) - (ht-set jcs-tab-line--group-cache name group) + (jcs-tab-clear-dead-buffers) + (ht-set jcs-tab-line--group-cache buffer group) `(,group))) From 3513a1aaa39e0cad17ce95ca2ec226793503b740 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 5 Aug 2024 23:17:26 -0700 Subject: [PATCH 059/334] mark: corfu --- lisp/jcs-module.el | 1 + modules/completion/corfu/config.el | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 modules/completion/corfu/config.el diff --git a/lisp/jcs-module.el b/lisp/jcs-module.el index 700f33e8..c4dfd3e4 100644 --- a/lisp/jcs-module.el +++ b/lisp/jcs-module.el @@ -16,6 +16,7 @@ (elfeed . "app/rss") ((flycheck flymake) . ("checkers/syntax" "ui/sideline")) (company . "completion/company") + (corfu . "completion/corfu") (vertico . "completion/vertico") (turbo-log . "editor/debug") (tree-sitter . ("editor/docstring" "editor/fold")) diff --git a/modules/completion/corfu/config.el b/modules/completion/corfu/config.el new file mode 100644 index 00000000..ae4857c2 --- /dev/null +++ b/modules/completion/corfu/config.el @@ -0,0 +1,20 @@ +;;; completion/corfu/config.el -*- lexical-binding: t; -*- + +(use-package corfu + :init + (setq corfu-auto t + corfu-quit-no-match t + corfu-quit-at-boundary 'separator + corfu-scroll-margin 0 + corfu-count 10 + corfu-auto-delay 0.07 + corfu-preview-current nil + corfu-cycle t + corfu-auto-prefix 0 + corfu-popupinfo-mode t + corfu-popupinfo-delay 0.3 + corfu-bar-width 1 + corfu-popupinfo-delay)) + +(setq corfu-sort-override-function #'vertico-flx-sort-default) + From 081077e1789e009631f944876a89dd5d57964356 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 5 Aug 2024 23:17:47 -0700 Subject: [PATCH 060/334] Unmark --- lisp/jcs-module.el | 1 - modules/completion/corfu/config.el | 20 -------------------- 2 files changed, 21 deletions(-) delete mode 100644 modules/completion/corfu/config.el diff --git a/lisp/jcs-module.el b/lisp/jcs-module.el index c4dfd3e4..700f33e8 100644 --- a/lisp/jcs-module.el +++ b/lisp/jcs-module.el @@ -16,7 +16,6 @@ (elfeed . "app/rss") ((flycheck flymake) . ("checkers/syntax" "ui/sideline")) (company . "completion/company") - (corfu . "completion/corfu") (vertico . "completion/vertico") (turbo-log . "editor/debug") (tree-sitter . ("editor/docstring" "editor/fold")) diff --git a/modules/completion/corfu/config.el b/modules/completion/corfu/config.el deleted file mode 100644 index ae4857c2..00000000 --- a/modules/completion/corfu/config.el +++ /dev/null @@ -1,20 +0,0 @@ -;;; completion/corfu/config.el -*- lexical-binding: t; -*- - -(use-package corfu - :init - (setq corfu-auto t - corfu-quit-no-match t - corfu-quit-at-boundary 'separator - corfu-scroll-margin 0 - corfu-count 10 - corfu-auto-delay 0.07 - corfu-preview-current nil - corfu-cycle t - corfu-auto-prefix 0 - corfu-popupinfo-mode t - corfu-popupinfo-delay 0.3 - corfu-bar-width 1 - corfu-popupinfo-delay)) - -(setq corfu-sort-override-function #'vertico-flx-sort-default) - From 1cd10f08bd1f0767c446e0cae31b27e0b2b26ca0 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 11 Sep 2024 16:51:22 -0700 Subject: [PATCH 061/334] feat: Add lockfile-mode --- lisp/jcs-package.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 1f72b39f..ccfc9d13 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -107,6 +107,7 @@ company-emmet company-emojify company-fuzzy + company-ghci company-glsl company-go company-kaomoji @@ -298,6 +299,7 @@ list-environment literate-calc-mode llvm-mode + lockfile-mode logms logview lsp-dart From 2f274ba891c41f9af113483b443453a94e492007 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 11 Sep 2024 16:51:31 -0700 Subject: [PATCH 062/334] feat: Add company-ghci --- modules/lang/haskell/config.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/lang/haskell/config.el b/modules/lang/haskell/config.el index ac68b9ca..d244eba2 100644 --- a/modules/lang/haskell/config.el +++ b/modules/lang/haskell/config.el @@ -16,7 +16,9 @@ (jcs-add-hook 'haskell-mode-hook ;; File Header (jcs-insert-header-if-valid '("[.]hs") - 'jcs-insert-haskell-template)) + 'jcs-insert-haskell-template) + + (company-fuzzy-backend-add-before 'company-ghci 'company-dabbrev)) (jcs-add-hook 'haskell-cabal-mode-hook (run-hooks 'prog-mode-hook) From ef77cc5da69da659f913a5e9fd58d1a9c404927b Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 21 Sep 2024 04:13:30 -0700 Subject: [PATCH 063/334] chore: Move exec-path-from-shell to env --- lisp/jcs-env.el | 3 +++ modules/term/shell/config.el | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/jcs-env.el b/lisp/jcs-env.el index 14502c2b..9309cacb 100755 --- a/lisp/jcs-env.el +++ b/lisp/jcs-env.el @@ -88,6 +88,9 @@ special-display-buffer-names nil mac-pass-command-to-system nil)) +(when (or elenv-macos elenv-linux elenv-bsd elenv-unix) + (exec-path-from-shell-initialize)) + ;; ;; (@* "Settings" ) ;; diff --git a/modules/term/shell/config.el b/modules/term/shell/config.el index 7b3fbc3f..4b9a881a 100644 --- a/modules/term/shell/config.el +++ b/modules/term/shell/config.el @@ -1,7 +1,6 @@ ;;; term/shell/config.el -*- lexical-binding: t; -*- (require 'compile) -(require 'exec-path-from-shell) (message-clean-mode-add-echo-commands '( shell-dirstack-message)) From 27c0fd06c6d0e417f04db4cffa7b252a191e1568 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 21 Sep 2024 04:14:23 -0700 Subject: [PATCH 064/334] docs: Correct shell mode --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0c61ace7..0c68be12 100755 --- a/README.md +++ b/README.md @@ -310,7 +310,7 @@ kind of methods to support the maintainer you wish to. * *Remote Access* - powered by [tramp](https://www.emacswiki.org/emacs/TrampMode). * *Restart Emacs* - powered by [restart-emacs](https://github.com/iqbalansari/restart-emacs). * *Scroll Bar* - powered by [auto-scroll-bar](https://github.com/jcs-elpa/auto-scroll-bar). -* *Shell* - powered by [shell](https://www.emacswiki.org/emacs/ShellMode) and [exec-path-from-shell](https://github.com/purcell/exec-path-from-shell). +* *Shell* - powered by [shell](https://www.emacswiki.org/emacs/ShellMode). * *Smooth Scrolling* - none, originally powered by ~~[sublimity](https://github.com/zk-phi/sublimity)~~. * *Snippet* - powered by [yasnippet](https://github.com/joaotavora/yasnippet). * *Startup Screen* - powered by [dashboard](https://github.com/emacs-dashboard/emacs-dashboard). From ea603651e8c8f782580bd7064c78bb94ddd886cb Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 22 Sep 2024 13:05:39 -0700 Subject: [PATCH 065/334] feat: Add flymake-ansible-lint --- lisp/jcs-package.el | 1 + modules/lang/yaml/config.el | 2 ++ 2 files changed, 3 insertions(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index ccfc9d13..6c859277 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -218,6 +218,7 @@ flycheck-relint flycheck-swift flycheck-ziglint + flymake-ansible-lint flymake-coffee flymake-haml flymake-less diff --git a/modules/lang/yaml/config.el b/modules/lang/yaml/config.el index 802c8a1d..89d9f1c2 100644 --- a/modules/lang/yaml/config.el +++ b/modules/lang/yaml/config.el @@ -14,6 +14,8 @@ (jcs-add-hook 'yaml-mode-hook (company-fuzzy-backend-add-before 'company-ansible 'company-dabbrev) + (flymake-ansible-lint-setup) + ;; File Header (jcs-insert-header-if-valid '("[.]yaml" "[.]yml") From b3d71bc73fc8b442f04b41adf0d35e7aa22ade84 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 25 Sep 2024 16:12:52 -0700 Subject: [PATCH 066/334] docs: Add Coq to supported languages --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0c68be12..244029f6 100755 --- a/README.md +++ b/README.md @@ -52,9 +52,9 @@ numerous technologies, incorporating hardware, firmware, and software. Here is the list of programming languages I know and are extended from this configuration. -* ActionScript 2.0 or 3.0 / Ada / Agda / AppleScript / Assembly Language +* ActionScript / Ada / Agda / AppleScript / Assembly * BASIC / Batchfile / Beancount -* C / C++ / C# / Clojure / / COBOL / Common Lisp / Crystal / CSS / CUDA / Cython +* C / C++ / C# / Clojure / COBOL / Coq / Crystal / CSS / CUDA / Cython * Dart / Dockerfile * Elixir / Elm / Emacs Lisp / Erlang * F# / Fountain @@ -63,7 +63,7 @@ from this configuration. * Idris / INI * Java / JavaScript / JSON / JSX / Julia * Kotlin -* LESS / Lisp / Lua +* LaTeX / LESS / Lisp / Lua * Makefile / Markdown / Mermaid / Mint * Nim / Nix / Noir * Object Pascal (Delphi) / Objective-C / OCaml From c8382d9103f98bc4d1015c48bddca0b004018a92 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 25 Sep 2024 16:13:24 -0700 Subject: [PATCH 067/334] feat: Add Coq support --- lisp/jcs-module.el | 1 + lisp/jcs-package.el | 3 ++- modules/lang/coq/config.el | 20 ++++++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 modules/lang/coq/config.el diff --git a/lisp/jcs-module.el b/lisp/jcs-module.el index 700f33e8..5f4c43eb 100644 --- a/lisp/jcs-module.el +++ b/lisp/jcs-module.el @@ -96,6 +96,7 @@ (coffee-mode . "lang/coffee") (sly . "lang/common-lisp") (conf-mode . "lang/conf") + (coq-mode . "lang/coq") (crystal-mode . "lang/crystal") (csharp-mode . "lang/csharp") (cuda-mode . "lang/cuda") diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 6c859277..f37fb5a9 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -100,6 +100,7 @@ company-cabal company-cmd company-coffee + company-coq company-dict company-dockerfile company-eask @@ -114,7 +115,6 @@ company-ledger company-lua company-makefile - company-math company-meta-net company-mlton company-nginx @@ -375,6 +375,7 @@ processing-mode project-abbrev prometheus-mode + proof-general protobuf-mode purescript-mode python-mode diff --git a/modules/lang/coq/config.el b/modules/lang/coq/config.el new file mode 100644 index 00000000..829382a4 --- /dev/null +++ b/modules/lang/coq/config.el @@ -0,0 +1,20 @@ +;;; lang/coq/config.el -*- lexical-binding: t; -*- + +;; +;; (@* "Templates" ) +;; + +(file-header-defins jcs-insert-coq-template "coq" "default.txt" + "Coq file header format.") + +;; +;; (@* "Hook" ) +;; + +(jcs-add-hook 'coq-mode-hook + (company-fuzzy-backend-add-before 'company-coq-master-backend 'company-dabbrev) + (company-fuzzy-backend-add-before 'company-coq-choices-backend 'company-dabbrev) + + ;; File Header + (jcs-insert-header-if-valid '("[.]lua" "[.]luac") + 'jcs-insert-lua-template)) From aabb691a1e1d2ea87981804fab65daf4c509289b Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 25 Sep 2024 16:27:51 -0700 Subject: [PATCH 068/334] docs: Changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c85f717a..57c0706c 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * fix: Record the window starting point instead first visible line (62039e725e816ad381b6a8d126bb28be22d65101) * fix: Force load project elisp files (b663d26669d35c69d0c99dc3a8353946fd2cb7cf) * fix: Load theme before `on` prevent potential UI package's errors (0c995aa207eb820d7b0d0778aa23da2c96b12e5f) +* feat: Add `Coq` support (c8382d9103f98bc4d1015c48bddca0b004018a92) ## 9.1.0 > Released Jun 19, 2024 From 0191b4ebd18829209cdb88a0ce956842589a6f6b Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 25 Sep 2024 16:28:26 -0700 Subject: [PATCH 069/334] chore: Update submodules --- snippets | 2 +- templates | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/snippets b/snippets index 6f27d8fb..b937bb68 160000 --- a/snippets +++ b/snippets @@ -1 +1 @@ -Subproject commit 6f27d8fbcec3713d9ce638524d84ce7420602df7 +Subproject commit b937bb688479daa1579c31a8ed3fd9941f4757a0 diff --git a/templates b/templates index 298efac7..81dabd1e 160000 --- a/templates +++ b/templates @@ -1 +1 @@ -Subproject commit 298efac7cfbed14b48784cbe92245c07a501f74b +Subproject commit 81dabd1e58f2b9decf65287912eda701242e9c01 From 806bc54f55082e88d8ad979461a1d6843cd979aa Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 25 Sep 2024 16:36:40 -0700 Subject: [PATCH 070/334] feat: Update indent-control config --- lisp/jcs-hook.el | 2 +- lisp/lib/jcs-edit.el | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/jcs-hook.el b/lisp/jcs-hook.el index b9140e01..b9b31452 100755 --- a/lisp/jcs-hook.el +++ b/lisp/jcs-hook.el @@ -143,7 +143,7 @@ (yas-minor-mode 1) ;; Ensure indentation level is available - (indent-control-ensure-tab-width)) + (indent-control-ensure-indentable)) (jcs-add-hook 'prog-mode-hook ;; XXX: See the bug https://github.com/immerrr/lua-mode/issues/172 diff --git a/lisp/lib/jcs-edit.el b/lisp/lib/jcs-edit.el index 8e359bb7..631279ef 100644 --- a/lisp/lib/jcs-edit.el +++ b/lisp/lib/jcs-edit.el @@ -86,7 +86,7 @@ (jcs-advice-ignore-errors 'indent-region) -(jcs-advice-add 'indent-line-to :before (indent-control-ensure-tab-width)) +(jcs-advice-add 'indent-line-to :before (indent-control-ensure-indentable)) ;; ;; (@* "Return" ) From b97b0114d58949d0931156d0ab13d39945fc28e1 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 25 Sep 2024 16:39:38 -0700 Subject: [PATCH 071/334] chore: Ignore .DS_Store --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 22686789..9223e7a7 100755 --- a/.gitignore +++ b/.gitignore @@ -98,3 +98,6 @@ dist/ # packaging *-autoloads.el *-pkg.el + +# macOS +.DS_Store From a5c2953450668543d58773a4124d64dbc46c3d7d Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 25 Sep 2024 16:45:41 -0700 Subject: [PATCH 072/334] feat: Correct coq ext --- modules/lang/coq/config.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/lang/coq/config.el b/modules/lang/coq/config.el index 829382a4..b0aea544 100644 --- a/modules/lang/coq/config.el +++ b/modules/lang/coq/config.el @@ -16,5 +16,5 @@ (company-fuzzy-backend-add-before 'company-coq-choices-backend 'company-dabbrev) ;; File Header - (jcs-insert-header-if-valid '("[.]lua" "[.]luac") - 'jcs-insert-lua-template)) + (jcs-insert-header-if-valid '("[.]v") + 'jcs-insert-coq-template)) From 0f98234c33053ec946dab878dcff3c3712e48a74 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 25 Sep 2024 17:01:24 -0700 Subject: [PATCH 073/334] feat: Ignore proof slpash --- modules/emacs/buffer-menu/config.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/emacs/buffer-menu/config.el b/modules/emacs/buffer-menu/config.el index 1e7b052f..52c38632 100644 --- a/modules/emacs/buffer-menu/config.el +++ b/modules/emacs/buffer-menu/config.el @@ -83,7 +83,8 @@ "list-environment-mode" "shell-mode" "eshell-mode" "sqlite-mode" - "checkdoc-output-mode"))) + "checkdoc-output-mode" + "proof-splash-mode"))) ;; ;; (@* "Hook" ) From 85aae06ce85d29e0b84a3aded5b7843791154051 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Thu, 26 Sep 2024 19:49:30 -0700 Subject: [PATCH 074/334] fix(tabs): Enforce to hide which key --- modules/ui/tabs/config.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index db1f74a5..a6c1e86b 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -12,7 +12,8 @@ centaur-tabs-set-modified-marker t centaur-tabs-buffer-groups-function #'jcs-tab-buffer-groups-function centaur-tabs-hide-predicate #'elenv-frame-util-p - centaur-tabs-hide-tab-function #'ignore + centaur-tabs-hide-tab-function #'centaur-tabs-hide-tab + centaur-tabs-excluded-prefixes `(" *which") centaur-tabs-show-count t centaur-tabs-count-format " %d/%d" centaur-tabs-show-navigation-buttons t From f39aeec7829adb48bb91f8de8eb2b7aed1fc332a Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 28 Sep 2024 02:17:35 -0700 Subject: [PATCH 075/334] feat(cl): Config sly repl --- modules/lang/common-lisp/config.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/lang/common-lisp/config.el b/modules/lang/common-lisp/config.el index 34458cb2..f6cf88c9 100644 --- a/modules/lang/common-lisp/config.el +++ b/modules/lang/common-lisp/config.el @@ -16,6 +16,10 @@ (elenv-when-exec "sbcl" nil (setq inferior-lisp-program (shell-quote-argument value))) +(jcs-add-hook 'sly-mrepl-mode-hook + (jcs-key-local + `(((kbd "M-K") . sly-mrepl-clear-repl)))) + ;; ;; (@* "Extensions" ) ;; From da17737e17d00dfcb9f578fb3ef5806f33a97997 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 28 Sep 2024 03:26:55 -0700 Subject: [PATCH 076/334] chore(cl): Configu sly repl --- modules/lang/common-lisp/config.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/lang/common-lisp/config.el b/modules/lang/common-lisp/config.el index f6cf88c9..18207d21 100644 --- a/modules/lang/common-lisp/config.el +++ b/modules/lang/common-lisp/config.el @@ -18,7 +18,9 @@ (jcs-add-hook 'sly-mrepl-mode-hook (jcs-key-local - `(((kbd "M-K") . sly-mrepl-clear-repl)))) + `(((kbd "") . sly-mrepl-previous-input-or-button) + ((kbd "") . sly-mrepl-next-input-or-button) + ((kbd "M-K") . sly-mrepl-clear-repl)))) ;; ;; (@* "Extensions" ) From e10a300b85d13c1048735e45bb5f7fa67de239c3 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sun, 6 Oct 2024 21:00:56 +0800 Subject: [PATCH 077/334] feat: Add Flycheck rust --- lisp/jcs-package.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index f37fb5a9..a7314727 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -216,6 +216,7 @@ flycheck-ocaml flycheck-package flycheck-relint + flycheck-rust flycheck-swift flycheck-ziglint flymake-ansible-lint From 54924bd3cbbbfbb9ca899e934797a8d6a214b297 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sun, 6 Oct 2024 21:04:03 +0800 Subject: [PATCH 078/334] chore(rust): Configure Rust checker --- modules/lang/rust/config.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/lang/rust/config.el b/modules/lang/rust/config.el index 0fc8ddcb..42e81b58 100644 --- a/modules/lang/rust/config.el +++ b/modules/lang/rust/config.el @@ -23,3 +23,7 @@ (setq lsp-rust-analyzer-display-chaining-hints t lsp-rust-analyzer-display-parameter-hints t lsp-rust-analyzer-closing-brace-hints t) + +(use-package flycheck-rust + :hook (flycheck-mode . flycheck-rust-setup)) + From 28df93ac0cd5335ccd4a5d2e37b0c196d50605a2 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Mon, 7 Oct 2024 17:15:08 +0800 Subject: [PATCH 079/334] chore(lisp): Add definition for sly --- modules/tools/lookup/config.el | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/tools/lookup/config.el b/modules/tools/lookup/config.el index 72cff46e..8c024368 100644 --- a/modules/tools/lookup/config.el +++ b/modules/tools/lookup/config.el @@ -23,17 +23,25 @@ "Move to definition." (interactive) (cond + ;; LSP ((and (jcs-lsp-connected-p) (not (or (ignore-errors (lsp-find-definition)) (ignore-errors (lsp-goto-type-definition)) (ignore-errors (lsp-goto-implementation))))) t) + ;; SLY + ((and (memq major-mode '(lisp-mode)) + (jcs-fboundp-apply #'sly-connected-p)) + (call-interactively #'sly-edit-definition)) + ;; Emacs Lisp ((derived-mode-p 'lisp-data-mode) (if (or (ignore-errors (call-interactively #'elisp-def)) (ignore-errors (xref-find-definitions (elenv-2str (symbol-at-point))))) (progn (jcs-recenter-top-bottom 'middle) t) (user-error "[INFO] No definition found for current target"))) + ;; C# ((ignore-errors (meta-view-at-point))) + ;; Default (t (dumb-jump-go-prefer-external)))) (defun jcs-goto-definition-other-window () From 07194bcf8bc0825d39fdee4fec56c40cdf24eb7a Mon Sep 17 00:00:00 2001 From: JenChieh Date: Thu, 10 Oct 2024 22:52:24 -0700 Subject: [PATCH 080/334] chore(lang): minor tweak scheme --- lisp/jcs-package.el | 1 + modules/lang/scheme/config.el | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index a7314727..b602e2a3 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -221,6 +221,7 @@ flycheck-ziglint flymake-ansible-lint flymake-coffee + flymake-guile flymake-haml flymake-less flymake-lua diff --git a/modules/lang/scheme/config.el b/modules/lang/scheme/config.el index 12634b49..7fe9f779 100644 --- a/modules/lang/scheme/config.el +++ b/modules/lang/scheme/config.el @@ -13,5 +13,11 @@ (jcs-add-hook 'scheme-mode-hook ;; File Header - (jcs-insert-header-if-valid '("[.]ss") + (jcs-insert-header-if-valid '("[.]scm" "[.]ss") 'jcs-insert-scheme-template)) + +;; +;; (@* "Extensions" ) +;; + +(use-package flymake-guile :hook (flymake-mode . flymake-guile)) From 3c0568052b8e12ba5e97eda76b333e12aaf69f0c Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Mon, 14 Oct 2024 15:52:32 +0800 Subject: [PATCH 081/334] feat: Add ueval --- lisp/jcs-key.el | 8 ++++---- lisp/jcs-package.el | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lisp/jcs-key.el b/lisp/jcs-key.el index b7347ef0..81bed66d 100755 --- a/lisp/jcs-key.el +++ b/lisp/jcs-key.el @@ -106,10 +106,10 @@ ((kbd "C-?") . cycle-slash) ;;; Eval - ((kbd "C-e b") . eval-buffer) - ((kbd "C-e d") . eval-defun) - ((kbd "C-e e") . eval-expression) - ((kbd "C-e r") . eval-region) + ((kbd "C-e b") . ueval-buffer) + ((kbd "C-e d") . ueval-defun) + ((kbd "C-e e") . ueval-expression) + ((kbd "C-e r") . ueval-region) ;;; Expand Region ((kbd "C-+") . er/expand-region) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index b602e2a3..b5ff6119 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -441,6 +441,7 @@ turbo-log typescript-mode typst-mode + ueval undo-tree-vf unfill use-ttf From c0351615bbe19cd96559c7ed0d05a8e036cbef5f Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sun, 3 Nov 2024 23:28:12 +0800 Subject: [PATCH 082/334] feat(sideline): Enable truncate long lines --- modules/ui/sideline/config.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/ui/sideline/config.el b/modules/ui/sideline/config.el index 3ca31d69..7bff7561 100644 --- a/modules/ui/sideline/config.el +++ b/modules/ui/sideline/config.el @@ -13,7 +13,9 @@ (sideline-flymake . down) (chatgpt-sideline . up)) sideline-display-backend-name t - sideline-display-backend-type 'inner)) + sideline-display-backend-type 'inner + sideline-truncate t + sideline-truncate-min-available-space-ratio 0.4)) (use-package sideline-flycheck :hook (flycheck-mode . sideline-flycheck-setup) From fdb485a4adb0d29284ca93de9647e47b1bf7f94b Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Wed, 6 Nov 2024 16:39:19 +0800 Subject: [PATCH 083/334] feat: Add GDShader support --- lisp/jcs-module.el | 2 +- lisp/jcs-package.el | 1 + modules/lang/gdscript/config.el | 17 ----------------- modules/lang/godot/config.el | 25 +++++++++++++++++++++++++ 4 files changed, 27 insertions(+), 18 deletions(-) delete mode 100644 modules/lang/gdscript/config.el create mode 100644 modules/lang/godot/config.el diff --git a/lisp/jcs-module.el b/lisp/jcs-module.el index 5f4c43eb..a68be285 100644 --- a/lisp/jcs-module.el +++ b/lisp/jcs-module.el @@ -112,7 +112,7 @@ (fountain-mode . "lang/fountain") (fsharp-mode . "lang/fsharp") (fstar-mode . "lang/fstar") - (gdscript-mode . "lang/gdscript") + ((gdscript-mode gdshader-mode) . "lang/godot") ((shader-mode glsl-mode hlsl-mode) . "lang/shader") (sml-mode . "lang/sml") (go-mode . "lang/go") diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index b5ff6119..55df0323 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -242,6 +242,7 @@ gas-mode gcmh gdscript-mode + gdshader-mode git-assembler-mode git-link git-modes diff --git a/modules/lang/gdscript/config.el b/modules/lang/gdscript/config.el deleted file mode 100644 index 037e21d3..00000000 --- a/modules/lang/gdscript/config.el +++ /dev/null @@ -1,17 +0,0 @@ -;;; lang/gdscript/config.el -*- lexical-binding: t; -*- - -;; -;; (@* "Templates" ) -;; - -(file-header-defins jcs-insert-gdscript-template "gdscript" "default.txt" - "Header for Godot Script header file.") - -;; -;; (@* "Hook" ) -;; - -(jcs-add-hook 'gdscript-mode-hook - ;; File Header - (jcs-insert-header-if-valid '("[.]gd") - 'jcs-insert-gdscript-template)) diff --git a/modules/lang/godot/config.el b/modules/lang/godot/config.el new file mode 100644 index 00000000..d812a448 --- /dev/null +++ b/modules/lang/godot/config.el @@ -0,0 +1,25 @@ +;;; lang/godot/config.el -*- lexical-binding: t; -*- + +;; +;; (@* "Templates" ) +;; + +(file-header-defins jcs-insert-gdscript-template "godot/gdscript" "default.txt" + "Header for Godot Script header file.") + +(file-header-defins jcs-insert-gdshader-template "godot/gdshader" "default.txt" + "Header for Godot Shader header file.") + +;; +;; (@* "Hook" ) +;; + +(jcs-add-hook 'gdscript-mode-hook + ;; File Header + (jcs-insert-header-if-valid '("[.]gd") + 'jcs-insert-gdscript-template)) + +(jcs-add-hook 'gdshader-mode-hook + ;; File Header + (jcs-insert-header-if-valid '("[.]gdshader") + 'jcs-insert-gdshader-template)) From e08637f3ae430720d407132eacb098410aa830e5 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Wed, 6 Nov 2024 16:40:54 +0800 Subject: [PATCH 084/334] feat: Update submodule --- snippets | 2 +- templates | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/snippets b/snippets index b937bb68..36217dba 160000 --- a/snippets +++ b/snippets @@ -1 +1 @@ -Subproject commit b937bb688479daa1579c31a8ed3fd9941f4757a0 +Subproject commit 36217dbab97edc760e46be4c012abc3bd0ae044b diff --git a/templates b/templates index 81dabd1e..7553ce71 160000 --- a/templates +++ b/templates @@ -1 +1 @@ -Subproject commit 81dabd1e58f2b9decf65287912eda701242e9c01 +Subproject commit 7553ce714afd5d2e8840707edcf286c1ba789236 From be4d90a4d486709f555b58e7a0fac34853467d66 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Wed, 6 Nov 2024 16:41:49 +0800 Subject: [PATCH 085/334] docs(README): support godot --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 244029f6..a33d45a7 100755 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ from this configuration. * Dart / Dockerfile * Elixir / Elm / Emacs Lisp / Erlang * F# / Fountain -* GLSL / Go / GDScript / Groovy +* GLSL / Go / Godot / Groovy * Haskell / Haxe / HLSL / HTML * Idris / INI * Java / JavaScript / JSON / JSX / Julia From f40a0ec53d3f19fc14757b840d4ffad3f430c9de Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Wed, 6 Nov 2024 17:10:57 +0800 Subject: [PATCH 086/334] chore: Changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 57c0706c..166bc5e9 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * fix: Force load project elisp files (b663d26669d35c69d0c99dc3a8353946fd2cb7cf) * fix: Load theme before `on` prevent potential UI package's errors (0c995aa207eb820d7b0d0778aa23da2c96b12e5f) * feat: Add `Coq` support (c8382d9103f98bc4d1015c48bddca0b004018a92) +* feat: Add `GDShader` support (fdb485a4adb0d29284ca93de9647e47b1bf7f94b) ## 9.1.0 > Released Jun 19, 2024 From 3f8d9ef825e31879a42390a69c07f3e9c2f24898 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sat, 30 Nov 2024 19:23:01 +0800 Subject: [PATCH 087/334] feat(sideline): Remove unused variables --- modules/ui/sideline/config.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/ui/sideline/config.el b/modules/ui/sideline/config.el index 7bff7561..034297a3 100644 --- a/modules/ui/sideline/config.el +++ b/modules/ui/sideline/config.el @@ -14,8 +14,7 @@ (chatgpt-sideline . up)) sideline-display-backend-name t sideline-display-backend-type 'inner - sideline-truncate t - sideline-truncate-min-available-space-ratio 0.4)) + sideline-truncate t)) (use-package sideline-flycheck :hook (flycheck-mode . sideline-flycheck-setup) From 2738bdc83f2b2d00411e9f5bb489087d1ae27c42 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Tue, 3 Dec 2024 02:23:03 +0800 Subject: [PATCH 088/334] feat: Add janet support --- lisp/jcs-module.el | 1 + lisp/jcs-package.el | 3 +++ modules/lang/janet/config.el | 24 ++++++++++++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 modules/lang/janet/config.el diff --git a/lisp/jcs-module.el b/lisp/jcs-module.el index a68be285..5bb71d82 100644 --- a/lisp/jcs-module.el +++ b/lisp/jcs-module.el @@ -124,6 +124,7 @@ (idris-mode . "lang/idris") (ini-mode . "lang/ini") (jai-mode . "lang/jai") + (janet-mode . "lang/janet") (jayces-mode . "lang/jayces") (jenkinsfile-mode . "lang/jenkinsfile") (js . ("lang/js" "lang/jsx")) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 55df0323..1f652902 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -209,6 +209,7 @@ flycheck-grammarly flycheck-haskell flycheck-hl-todo + flycheck-janet flycheck-kotlin flycheck-languagetool flycheck-ledger @@ -281,6 +282,8 @@ ini-mode isearch-project jai-mode + janet-mode + jar-manifest-mode javadoc-lookup javap-mode jayces-mode diff --git a/modules/lang/janet/config.el b/modules/lang/janet/config.el new file mode 100644 index 00000000..9b22711b --- /dev/null +++ b/modules/lang/janet/config.el @@ -0,0 +1,24 @@ +;;; lang/jai/config.el -*- lexical-binding: t; -*- + +;; +;; (@* "Templates" ) +;; + +(file-header-defins jcs-insert-janet-template "janet" "default.txt" + "Header for Janet header file.") + +;; +;; (@* "Hook" ) +;; + +(jcs-add-hook 'janet-mode-hook + ;; File Header + (jcs-insert-header-if-valid '("[.]janet") + 'jcs-insert-janet-template)) + +;; +;; (@* "Extensions" ) +;; + +(use-package flycheck-janet + :hook (flycheck-mode . (lambda (&rest _) (require 'flycheck-janet)))) From 1065e5e817a4149c4ac8f1fd274c743cd803cbce Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Tue, 3 Dec 2024 02:23:53 +0800 Subject: [PATCH 089/334] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 166bc5e9..76ed8dd8 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * fix: Load theme before `on` prevent potential UI package's errors (0c995aa207eb820d7b0d0778aa23da2c96b12e5f) * feat: Add `Coq` support (c8382d9103f98bc4d1015c48bddca0b004018a92) * feat: Add `GDShader` support (fdb485a4adb0d29284ca93de9647e47b1bf7f94b) +* feat: Add `Janet` support (2738bdc83f2b2d00411e9f5bb489087d1ae27c42) ## 9.1.0 > Released Jun 19, 2024 From 531edee94887929aab70d6472e2826751ccf5bb8 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Tue, 3 Dec 2024 02:24:01 +0800 Subject: [PATCH 090/334] docs: Add Janet to support list --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a33d45a7..e57ba0fb 100755 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ from this configuration. * GLSL / Go / Godot / Groovy * Haskell / Haxe / HLSL / HTML * Idris / INI -* Java / JavaScript / JSON / JSX / Julia +* Janet / Java / JavaScript / JSON / JSX / Julia * Kotlin * LaTeX / LESS / Lisp / Lua * Makefile / Markdown / Mermaid / Mint From 4d89dfeb1074fd6757fc26332f272e020ba5b2d9 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Tue, 3 Dec 2024 02:27:29 +0800 Subject: [PATCH 091/334] chore: Update submodules --- snippets | 2 +- templates | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/snippets b/snippets index 36217dba..ef135752 160000 --- a/snippets +++ b/snippets @@ -1 +1 @@ -Subproject commit 36217dbab97edc760e46be4c012abc3bd0ae044b +Subproject commit ef13575266e0a9893ebf8a9ad97c53cecb72b645 diff --git a/templates b/templates index 7553ce71..c688bf0a 160000 --- a/templates +++ b/templates @@ -1 +1 @@ -Subproject commit 7553ce714afd5d2e8840707edcf286c1ba789236 +Subproject commit c688bf0a15746e44dc3506b6ce56888544ea0dba From 75c95cd24afe9820689c3151ad1eab592b089ad1 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Tue, 3 Dec 2024 12:55:59 +0800 Subject: [PATCH 092/334] feat(clojure): Add Kondo linter --- lisp/jcs-package.el | 1 + modules/lang/clojure/config.el | 3 +++ 2 files changed, 4 insertions(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 1f652902..4432b1c1 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -196,6 +196,7 @@ flycheck-actionlint flycheck-cask flycheck-clang-analyzer + flycheck-clj-kondo flycheck-clojure flycheck-credo flycheck-crystal diff --git a/modules/lang/clojure/config.el b/modules/lang/clojure/config.el index 112c5611..ee7fe938 100644 --- a/modules/lang/clojure/config.el +++ b/modules/lang/clojure/config.el @@ -22,3 +22,6 @@ (use-package flycheck-clojure :hook (flycheck-mode . flycheck-clojure-setup)) + +(use-package flycheck-clj-kondo + :hook (flycheck-mode . (lambda (&rest _) (require 'flycheck-clj-kondo)))) From fa77333962a322daaba1357623641f23c6cc8234 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Tue, 3 Dec 2024 13:00:45 +0800 Subject: [PATCH 093/334] fix: merge emacsql --- lisp/jcs-package.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 4432b1c1..b19d7c4a 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -170,8 +170,7 @@ elisp-demos elixir-mode elm-mode - emacsql-mysql - emacsql-psql + emacsql emoji-github emp envrc From e0119e1f17767f1387d8638cd77b2df4dfb79641 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Tue, 3 Dec 2024 13:01:56 +0800 Subject: [PATCH 094/334] fix: emacsql is now dep --- lisp/jcs-package.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index b19d7c4a..21ca7388 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -170,7 +170,6 @@ elisp-demos elixir-mode elm-mode - emacsql emoji-github emp envrc From f4aff7c4f39c945fb64b4d25eaf97161f0b15819 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Tue, 3 Dec 2024 20:57:26 +0800 Subject: [PATCH 095/334] feat: eval mark cider --- lisp/jcs-env.el | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lisp/jcs-env.el b/lisp/jcs-env.el index 9309cacb..d27a60f9 100755 --- a/lisp/jcs-env.el +++ b/lisp/jcs-env.el @@ -185,7 +185,11 @@ narrow-to-region sly-eval-buffer sly-eval-defun sly-eval-region sly-eval-last-expression - sly-overlay-eval-defun))) + sly-overlay-eval-defun + cider-eval-buffer + cider-eval-defun-at-point + cider-eval-sexp-at-point + cider-eval-region))) ;; ;;; Messages From e9e853596a167a018c4a1d013c02dcb52ab4d335 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Tue, 3 Dec 2024 23:19:59 +0800 Subject: [PATCH 096/334] fix: disable clojure default mode map --- modules/lang/clojure/config.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/lang/clojure/config.el b/modules/lang/clojure/config.el index ee7fe938..e6b8f447 100644 --- a/modules/lang/clojure/config.el +++ b/modules/lang/clojure/config.el @@ -12,6 +12,8 @@ ;; (jcs-add-hook 'clojure-mode-hook + (setcdr clojure-mode-map nil) + ;; File Header (jcs-insert-header-if-valid '("[.]clj") 'jcs-insert-clojure-template)) From 3b6caa7e3358195d60197aea95088524b82d8ea4 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Thu, 5 Dec 2024 00:25:04 +0800 Subject: [PATCH 097/334] feat(buffer-menu): conclude for cider buffer --- modules/emacs/buffer-menu/config.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/emacs/buffer-menu/config.el b/modules/emacs/buffer-menu/config.el index 52c38632..6d8ac804 100644 --- a/modules/emacs/buffer-menu/config.el +++ b/modules/emacs/buffer-menu/config.el @@ -26,7 +26,7 @@ "[*]Ping" "[*]emacs[*]" ; From `async' "[*]sly" - "[*]cider-repl" "[*]nrepl-server" + "[*]cider-" "[*]nrepl-server" "[*]timer" ;; `LSP' "[*]lsp-" "[*]LSP[ ]+" "[*]eglot" From b788512d8b2d2e3342702e5eccd88227c00293bd Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Thu, 5 Dec 2024 03:51:02 +0800 Subject: [PATCH 098/334] feat(ui): Group tabs better --- modules/ui/tabs/config.el | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index a6c1e86b..f1d9b4f3 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -10,7 +10,8 @@ centaur-tabs-icons-prefix "" centaur-tabs-icon-scale-factor 0.9 centaur-tabs-set-modified-marker t - centaur-tabs-buffer-groups-function #'jcs-tab-buffer-groups-function + centaur-tabs-buffer-groups-function #'jcs-tab-buffer-groups + centaur-tabs-custom-buffer-groups #'jcs-tab-custom-buffer-groups centaur-tabs-hide-predicate #'elenv-frame-util-p centaur-tabs-hide-tab-function #'centaur-tabs-hide-tab centaur-tabs-excluded-prefixes `(" *which") @@ -40,16 +41,18 @@ (ht-remove jcs-tab-line--group-cache buffer))) jcs-tab-line--group-cache)) -(defun jcs-tab-buffer-groups-function () - "Group tabs." +(defun jcs-tab-buffer-groups () + "Group tabs with cache." (let* ((name (buffer-name)) (buffer (current-buffer)) (group (or (ht-get jcs-tab-line--group-cache buffer) - (cond ((and (featurep 'buffer-menu-filter) - (diminish-buffer--filter name)) - "Hidden") - (t - (car (funcall #'centaur-tabs-buffer-groups))))))) + (car (funcall #'centaur-tabs-buffer-groups))))) (jcs-tab-clear-dead-buffers) (ht-set jcs-tab-line--group-cache buffer group) `(,group))) + +(defun jcs-tab-custom-buffer-groups () + "Group tabs." + (cond ((and (featurep 'buffer-menu-filter) + (diminish-buffer--filter (buffer-name))) + "Hidden"))) From 9094eab799355a7cbb51db262462782a297a22a3 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Thu, 5 Dec 2024 03:51:21 +0800 Subject: [PATCH 099/334] feat(clojure): Add Cider repl commands --- modules/lang/clojure/config.el | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/lang/clojure/config.el b/modules/lang/clojure/config.el index e6b8f447..dcb6462b 100644 --- a/modules/lang/clojure/config.el +++ b/modules/lang/clojure/config.el @@ -18,6 +18,12 @@ (jcs-insert-header-if-valid '("[.]clj") 'jcs-insert-clojure-template)) +(jcs-add-hook 'cider-repl-mode-hook + (jcs-key-local + `(((kbd "M-") . cider-repl-previous-input) + ((kbd "M-") . cider-repl-next-input) + ((kbd "M-K") . cider-repl-clear-buffer)))) + ;; ;; (@* "Extensions" ) ;; From 806b781690e57fa25d9a2b9b86b5b7fb67116223 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Thu, 5 Dec 2024 03:51:35 +0800 Subject: [PATCH 100/334] feat: Change default comint input keys --- modules/lang/common-lisp/config.el | 6 +++--- modules/term/shell/config.el | 24 ++++++++++++------------ 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/modules/lang/common-lisp/config.el b/modules/lang/common-lisp/config.el index 18207d21..be908374 100644 --- a/modules/lang/common-lisp/config.el +++ b/modules/lang/common-lisp/config.el @@ -18,9 +18,9 @@ (jcs-add-hook 'sly-mrepl-mode-hook (jcs-key-local - `(((kbd "") . sly-mrepl-previous-input-or-button) - ((kbd "") . sly-mrepl-next-input-or-button) - ((kbd "M-K") . sly-mrepl-clear-repl)))) + `(((kbd "M-") . sly-mrepl-previous-input-or-button) + ((kbd "M-") . sly-mrepl-next-input-or-button) + ((kbd "M-K") . sly-mrepl-clear-repl)))) ;; ;; (@* "Extensions" ) diff --git a/modules/term/shell/config.el b/modules/term/shell/config.el index 4b9a881a..5919638a 100644 --- a/modules/term/shell/config.el +++ b/modules/term/shell/config.el @@ -12,18 +12,18 @@ (modify-syntax-entry ?> "!") (jcs-key-local - `(((kbd "M-k") . shell-pop) ; Close it - ((kbd "M-K") . comint-clear-buffer) - ((kbd "") . comint-previous-input) - ((kbd "") . comint-next-input) - ((kbd "") . comint-next-matching-input-from-input) - ([C-up] . block-travel-up) - ([C-down] . block-travel-down) - ((kbd "C-~") . (lambda () (interactive) - (shell-pop (multi-shell--next-valid-index)))) - ((kbd "C-_") . multi-shell-prev) - ((kbd "C-+") . multi-shell-next) - ((kbd "M-b") . multi-shell-select)))) + `(((kbd "M-k") . shell-pop) ; Close it + ((kbd "M-K") . comint-clear-buffer) + ((kbd "M-") . comint-previous-input) + ((kbd "M-") . comint-next-input) + ((kbd "") . comint-next-matching-input-from-input) + ([C-up] . block-travel-up) + ([C-down] . block-travel-down) + ((kbd "C-~") . (lambda () (interactive) + (shell-pop (multi-shell--next-valid-index)))) + ((kbd "C-_") . multi-shell-prev) + ((kbd "C-+") . multi-shell-next) + ((kbd "M-b") . multi-shell-select)))) ;; ;; (@* "Extensions" ) From 5cba933701e5786478394b59166974a9a65acfab Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Thu, 5 Dec 2024 16:02:14 +0800 Subject: [PATCH 101/334] feat: Lazy load eval mark --- lisp/jcs-env.el | 9 +-------- modules/lang/clojure/config.el | 7 +++++++ modules/lang/common-lisp/config.el | 6 ++++++ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/lisp/jcs-env.el b/lisp/jcs-env.el index d27a60f9..e7b9ab09 100755 --- a/lisp/jcs-env.el +++ b/lisp/jcs-env.el @@ -182,14 +182,7 @@ :init (setq eval-mark-commands-after '( eval-buffer eval-defun eval-region eval-last-sexp - narrow-to-region - sly-eval-buffer sly-eval-defun sly-eval-region - sly-eval-last-expression - sly-overlay-eval-defun - cider-eval-buffer - cider-eval-defun-at-point - cider-eval-sexp-at-point - cider-eval-region))) + narrow-to-region))) ;; ;;; Messages diff --git a/modules/lang/clojure/config.el b/modules/lang/clojure/config.el index dcb6462b..f56b3ae2 100644 --- a/modules/lang/clojure/config.el +++ b/modules/lang/clojure/config.el @@ -28,6 +28,13 @@ ;; (@* "Extensions" ) ;; +(use-package cider + :init + (eval-mark-add-after-commands '( cider-eval-buffer + cider-eval-defun-at-point + cider-eval-sexp-at-point + cider-eval-region))) + (use-package flycheck-clojure :hook (flycheck-mode . flycheck-clojure-setup)) diff --git a/modules/lang/common-lisp/config.el b/modules/lang/common-lisp/config.el index be908374..93ff6d38 100644 --- a/modules/lang/common-lisp/config.el +++ b/modules/lang/common-lisp/config.el @@ -26,6 +26,12 @@ ;; (@* "Extensions" ) ;; +(use-package sly + :init + (eval-mark-add-after-commands '( sly-eval-buffer sly-eval-defun sly-eval-region + sly-eval-last-expression + sly-overlay-eval-defun))) + (use-package sly-repl-ansi-color :init (add-to-list 'sly-contribs 'sly-repl-ansi-color)) From 2b5a6f7738a7cddfabefe6fbe7c6d5eba88c8775 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Thu, 5 Dec 2024 07:07:24 -0800 Subject: [PATCH 102/334] Update keybindings.md --- docs/keybindings.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/keybindings.md b/docs/keybindings.md index 03eac86f..07a82c69 100755 --- a/docs/keybindings.md +++ b/docs/keybindings.md @@ -253,8 +253,10 @@ Here is the list of key bindings that are defined in this configuration. ##### Using Tab -* Ctrl+pg-up - Switch to the previous buffer in the queue. -* Ctrl+pg-down - Switch to the next buffer in the queue. +* Ctrl+pg-up - Switch to the previous tab. +* Ctrl+pg-down - Switch to the next tab. +* Ctrl+Shift+pg-up - Switch to the previous tab group. +* Ctrl+Shift+pg-down - Switch to the next tab group. #### Kill Buffer From 3cd01b1ebb2dc7fa7b040c87f3453d73c7661a1b Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 6 Dec 2024 00:19:48 +0800 Subject: [PATCH 103/334] feat: Bind tab forward/backward group --- lisp/jcs-key.el | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lisp/jcs-key.el b/lisp/jcs-key.el index 81bed66d..bbe02369 100755 --- a/lisp/jcs-key.el +++ b/lisp/jcs-key.el @@ -276,9 +276,11 @@ ((kbd "") . flycheck-mode) ;;; Tab Bar - ((kbd "C-t") . centaur-tabs-mode) - ((kbd "C-") . centaur-tabs-backward) - ((kbd "C-") . centaur-tabs-forward) + ((kbd "C-t") . centaur-tabs-mode) + ((kbd "C-") . centaur-tabs-backward) + ((kbd "C-") . centaur-tabs-forward) + ((kbd "C-S-") . centaur-tabs-backward-group) + ((kbd "C-S-") . centaur-tabs-forward-group) ;;; Tab Width ((kbd "C-k >") . indent-control-inc) From df45b244d6fa4731d95013000c6c3dcc92e4600e Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 6 Dec 2024 00:19:58 +0800 Subject: [PATCH 104/334] feat(ui): Group more tabs --- modules/ui/tabs/config.el | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index f1d9b4f3..355cdcdb 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -53,6 +53,11 @@ (defun jcs-tab-custom-buffer-groups () "Group tabs." - (cond ((and (featurep 'buffer-menu-filter) - (diminish-buffer--filter (buffer-name))) - "Hidden"))) + (let ((name (buffer-name))) + (cond ((string-prefix-p "*cider" name) "Cider") + ((string-prefix-p "*sly" name) "Sly") + ((string-prefix-p "*esup" name) "ESUP") + ((string-match-p "lsp" name) "LSP-mode") + ((and (featurep 'buffer-menu-filter) + (diminish-buffer--filter name)) + "Hidden")))) From b981c72a0942ca13a4f9fc0da7edcfd4653482fd Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 6 Dec 2024 20:45:15 +0800 Subject: [PATCH 105/334] feat(scheme): Add geiser --- lisp/jcs-package.el | 9 +++++++++ modules/lang/scheme/config.el | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 21ca7388..fa9c220a 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -243,6 +243,15 @@ gcmh gdscript-mode gdshader-mode + geiser-chez + geiser-chibi + geiser-chicken + geiser-gambit + geiser-gauche + geiser-guile + geiser-kawa + geiser-mit + geiser-racket git-assembler-mode git-link git-modes diff --git a/modules/lang/scheme/config.el b/modules/lang/scheme/config.el index 7fe9f779..439c1e27 100644 --- a/modules/lang/scheme/config.el +++ b/modules/lang/scheme/config.el @@ -20,4 +20,9 @@ ;; (@* "Extensions" ) ;; +(use-package geiser + :init + (setq geiser-autodoc-identifier-format "%s → %s" + geiser-repl-per-project-p t)) + (use-package flymake-guile :hook (flymake-mode . flymake-guile)) From e6f9256f102f3670f9c8bb61cddd106bf82bcf8c Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 6 Dec 2024 20:46:07 +0800 Subject: [PATCH 106/334] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 76ed8dd8..f1faa04a 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * feat: Add `Coq` support (c8382d9103f98bc4d1015c48bddca0b004018a92) * feat: Add `GDShader` support (fdb485a4adb0d29284ca93de9647e47b1bf7f94b) * feat: Add `Janet` support (2738bdc83f2b2d00411e9f5bb489087d1ae27c42) +* feat(lang): Add `geiser` for better `Scheme` support (b981c72a0942ca13a4f9fc0da7edcfd4653482fd) ## 9.1.0 > Released Jun 19, 2024 From 9ea5f9085be5fd16a00eb9011867063dbc8492af Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sat, 7 Dec 2024 16:41:25 +0800 Subject: [PATCH 107/334] feat: Add sideline-eros --- lisp/jcs-package.el | 2 +- modules/ui/sideline/config.el | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index fa9c220a..c17809d3 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -175,7 +175,6 @@ envrc eping erlang - eros eshell-syntax-highlighting ess esup @@ -417,6 +416,7 @@ sideline-blame sideline-color sideline-eglot + sideline-eros sideline-flycheck sideline-flymake sideline-load-cost diff --git a/modules/ui/sideline/config.el b/modules/ui/sideline/config.el index 034297a3..4dec8be5 100644 --- a/modules/ui/sideline/config.el +++ b/modules/ui/sideline/config.el @@ -11,6 +11,7 @@ (sideline-eglot . up) (sideline-flycheck . down) (sideline-flymake . down) + (sideline-eros . down) (chatgpt-sideline . up)) sideline-display-backend-name t sideline-display-backend-type 'inner @@ -36,3 +37,6 @@ (use-package sideline-blame :init (setq sideline-blame-commit-format "• %s")) + +(use-package sideline-eros + :hook (sideline-mode . sideline-eros-setup)) From aff90fe8f064e11fbee5a033522039e5a96da7ea Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sat, 7 Dec 2024 17:32:58 +0800 Subject: [PATCH 108/334] feat: Add sideline cider --- lisp/jcs-package.el | 1 + modules/ui/sideline/config.el | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index c17809d3..04ca8fc1 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -414,6 +414,7 @@ show-eof-mode shrink-whitespace sideline-blame + sideline-cider sideline-color sideline-eglot sideline-eros diff --git a/modules/ui/sideline/config.el b/modules/ui/sideline/config.el index 4dec8be5..d45b6648 100644 --- a/modules/ui/sideline/config.el +++ b/modules/ui/sideline/config.el @@ -12,6 +12,7 @@ (sideline-flycheck . down) (sideline-flymake . down) (sideline-eros . down) + (sideline-cider . down) (chatgpt-sideline . up)) sideline-display-backend-name t sideline-display-backend-type 'inner @@ -40,3 +41,6 @@ (use-package sideline-eros :hook (sideline-mode . sideline-eros-setup)) + +(use-package sideline-cider + :hook (sideline-mode . sideline-cider-setup)) From f6a0fcd1413312c011c7133df475d0b8885738c9 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sat, 7 Dec 2024 17:59:10 +0800 Subject: [PATCH 109/334] feat: Add sideline-sly --- lisp/jcs-package.el | 2 +- modules/ui/sideline/config.el | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 04ca8fc1..8b6db6b8 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -422,12 +422,12 @@ sideline-flymake sideline-load-cost sideline-lsp + sideline-sly site-lisp slim-mode sln-mode sly-asdf sly-macrostep - sly-overlay sly-quicklisp sly-repl-ansi-color smart-comment diff --git a/modules/ui/sideline/config.el b/modules/ui/sideline/config.el index d45b6648..05cbda0d 100644 --- a/modules/ui/sideline/config.el +++ b/modules/ui/sideline/config.el @@ -13,6 +13,7 @@ (sideline-flymake . down) (sideline-eros . down) (sideline-cider . down) + (sideline-sly . down) (chatgpt-sideline . up)) sideline-display-backend-name t sideline-display-backend-type 'inner @@ -44,3 +45,6 @@ (use-package sideline-cider :hook (sideline-mode . sideline-cider-setup)) + +(use-package sideline-sly + :hook (sideline-mode . sideline-sly-setup)) From cd193a82f36859c8a8d0004920428cacbbade031 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sat, 7 Dec 2024 18:33:10 +0800 Subject: [PATCH 110/334] fix: namespace --- modules/ui/tabs/config.el | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index 355cdcdb..5dd1349a 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -10,8 +10,8 @@ centaur-tabs-icons-prefix "" centaur-tabs-icon-scale-factor 0.9 centaur-tabs-set-modified-marker t - centaur-tabs-buffer-groups-function #'jcs-tab-buffer-groups - centaur-tabs-custom-buffer-groups #'jcs-tab-custom-buffer-groups + centaur-tabs-buffer-groups-function #'jcs-tabs-buffer-groups + centaur-tabs-custom-buffer-groups #'jcs-tabs-custom-buffer-groups centaur-tabs-hide-predicate #'elenv-frame-util-p centaur-tabs-hide-tab-function #'centaur-tabs-hide-tab centaur-tabs-excluded-prefixes `(" *which") @@ -31,27 +31,27 @@ ;; ;;; Buffer Groups -(defvar jcs-tab-line--group-cache (make-hash-table :test #'equal) +(defvar jcs-tabs-line--group-cache (make-hash-table :test #'equal) "Cache for buffer groups.") -(defun jcs-tab-clear-dead-buffers () +(defun jcs-tabs-clear-dead-buffers () "Remove all dead buffers from group cache." (ht-map (lambda (buffer _) (unless (buffer-live-p buffer) - (ht-remove jcs-tab-line--group-cache buffer))) - jcs-tab-line--group-cache)) + (ht-remove jcs-tabs-line--group-cache buffer))) + jcs-tabs-line--group-cache)) -(defun jcs-tab-buffer-groups () +(defun jcs-tabs-buffer-groups () "Group tabs with cache." (let* ((name (buffer-name)) (buffer (current-buffer)) - (group (or (ht-get jcs-tab-line--group-cache buffer) + (group (or (ht-get jcs-tabs-line--group-cache buffer) (car (funcall #'centaur-tabs-buffer-groups))))) - (jcs-tab-clear-dead-buffers) - (ht-set jcs-tab-line--group-cache buffer group) + (jcs-tabs-clear-dead-buffers) + (ht-set jcs-tabs-line--group-cache buffer group) `(,group))) -(defun jcs-tab-custom-buffer-groups () +(defun jcs-tabs-custom-buffer-groups () "Group tabs." (let ((name (buffer-name))) (cond ((string-prefix-p "*cider" name) "Cider") From b92d30497bfc5ec0dbf1bca5c65adf195583f1c1 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sat, 7 Dec 2024 18:33:28 +0800 Subject: [PATCH 111/334] feat: Configure sideline for sly, cider, eros --- modules/lang/clojure/config.el | 3 +++ modules/lang/common-lisp/config.el | 3 +++ modules/lang/emacs-lisp/config.el | 3 +++ modules/ui/sideline/config.el | 20 +++++++++----------- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/modules/lang/clojure/config.el b/modules/lang/clojure/config.el index f56b3ae2..265738f6 100644 --- a/modules/lang/clojure/config.el +++ b/modules/lang/clojure/config.el @@ -40,3 +40,6 @@ (use-package flycheck-clj-kondo :hook (flycheck-mode . (lambda (&rest _) (require 'flycheck-clj-kondo)))) + +(use-package sideline-cider + :hook (sideline-mode . sideline-cider-setup)) diff --git a/modules/lang/common-lisp/config.el b/modules/lang/common-lisp/config.el index 93ff6d38..b7c7f32a 100644 --- a/modules/lang/common-lisp/config.el +++ b/modules/lang/common-lisp/config.el @@ -39,3 +39,6 @@ (use-package sly-asdf :init (add-to-list 'sly-contribs 'sly-asdf)) + +(use-package sideline-sly + :hook (sideline-mode . sideline-sly-setup)) diff --git a/modules/lang/emacs-lisp/config.el b/modules/lang/emacs-lisp/config.el index 9248d479..536e840b 100644 --- a/modules/lang/emacs-lisp/config.el +++ b/modules/lang/emacs-lisp/config.el @@ -63,3 +63,6 @@ (use-package flycheck-package :hook (flycheck-mode . flycheck-package-setup)) (use-package flycheck-relint :hook (flycheck-mode . flycheck-relint-setup)) + +(use-package sideline-eros + :hook (sideline-mode . sideline-eros-setup)) diff --git a/modules/ui/sideline/config.el b/modules/ui/sideline/config.el index 05cbda0d..c6ad4cb9 100644 --- a/modules/ui/sideline/config.el +++ b/modules/ui/sideline/config.el @@ -1,8 +1,15 @@ ;;; ui/sideline/config.el -*- lexical-binding: t; -*- (use-package sideline - :hook ((flycheck-mode . sideline-mode) - (flymake-mode . sideline-mode)) + :hook ((flycheck-mode . sideline-mode) + (flymake-mode . sideline-mode) + ;; Modes + (emacs-lisp-mode . (lambda () + (when (featurep 'eros) (sideline-mode 1)))) + (lisp-mode . (lambda () + (when (featurep 'sly) (sideline-mode 1)))) + (clojure-mode . (lambda () + (when (featurep 'cider) (sideline-mode 1))))) :init (setq sideline-delay 0.2 sideline-backends-left `((sideline-load-cost . up) @@ -39,12 +46,3 @@ (use-package sideline-blame :init (setq sideline-blame-commit-format "• %s")) - -(use-package sideline-eros - :hook (sideline-mode . sideline-eros-setup)) - -(use-package sideline-cider - :hook (sideline-mode . sideline-cider-setup)) - -(use-package sideline-sly - :hook (sideline-mode . sideline-sly-setup)) From e89a35a9b59f6c4225ee0ac49abab5e1598fa986 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sun, 8 Dec 2024 02:12:07 +0800 Subject: [PATCH 112/334] feat: Add sideline-racket --- lisp/jcs-package.el | 2 +- modules/lang/racket/config.el | 8 ++++++++ modules/ui/sideline/config.el | 4 +++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 8b6db6b8..0a43c47d 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -397,7 +397,6 @@ qt-pro-mode quelpa-use-package quickrun - racket-mode rainbow-csv region-occurrences-highlighter region-state @@ -422,6 +421,7 @@ sideline-flymake sideline-load-cost sideline-lsp + sideline-racket sideline-sly site-lisp slim-mode diff --git a/modules/lang/racket/config.el b/modules/lang/racket/config.el index 468fe0cb..d5c4b378 100644 --- a/modules/lang/racket/config.el +++ b/modules/lang/racket/config.el @@ -24,4 +24,12 @@ ;; (@* "Extensions" ) ;; +(use-package racket-mode + :init + (setq racket-show-functions '( sideline-racket-show))) + (use-package flymake-racket :hook (flymake-mode . flymake-racket-add-hook)) + +(use-package sideline-racket + :init + (setq sideline-backends-right '(sideline-racket))) diff --git a/modules/ui/sideline/config.el b/modules/ui/sideline/config.el index c6ad4cb9..83f95ea5 100644 --- a/modules/ui/sideline/config.el +++ b/modules/ui/sideline/config.el @@ -9,7 +9,9 @@ (lisp-mode . (lambda () (when (featurep 'sly) (sideline-mode 1)))) (clojure-mode . (lambda () - (when (featurep 'cider) (sideline-mode 1))))) + (when (featurep 'cider) (sideline-mode 1)))) + (racket-mode . (lambda () + (when (featurep 'racket-mode) (sideline-mode 1))))) :init (setq sideline-delay 0.2 sideline-backends-left `((sideline-load-cost . up) From fa822199602d752a8a8786974f623e8111670f36 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sun, 8 Dec 2024 03:05:19 +0800 Subject: [PATCH 113/334] feat: Add sideline-geiser --- lisp/jcs-package.el | 1 + modules/lang/scheme/config.el | 3 ++- modules/ui/sideline/config.el | 4 ++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 0a43c47d..0c001ecf 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -419,6 +419,7 @@ sideline-eros sideline-flycheck sideline-flymake + sideline-geiser sideline-load-cost sideline-lsp sideline-racket diff --git a/modules/lang/scheme/config.el b/modules/lang/scheme/config.el index 439c1e27..13d07c47 100644 --- a/modules/lang/scheme/config.el +++ b/modules/lang/scheme/config.el @@ -23,6 +23,7 @@ (use-package geiser :init (setq geiser-autodoc-identifier-format "%s → %s" - geiser-repl-per-project-p t)) + geiser-repl-per-project-p t + geiser-mode-eval-to-buffer-transformer #'sideline-geiser-show)) (use-package flymake-guile :hook (flymake-mode . flymake-guile)) diff --git a/modules/ui/sideline/config.el b/modules/ui/sideline/config.el index 83f95ea5..32e6b489 100644 --- a/modules/ui/sideline/config.el +++ b/modules/ui/sideline/config.el @@ -10,6 +10,8 @@ (when (featurep 'sly) (sideline-mode 1)))) (clojure-mode . (lambda () (when (featurep 'cider) (sideline-mode 1)))) + (scheme-mode . (lambda () + (when (featurep 'geiser) (sideline-mode 1)))) (racket-mode . (lambda () (when (featurep 'racket-mode) (sideline-mode 1))))) :init @@ -23,6 +25,8 @@ (sideline-eros . down) (sideline-cider . down) (sideline-sly . down) + (sideline-geiser . down) + (sideline-racket . down) (chatgpt-sideline . up)) sideline-display-backend-name t sideline-display-backend-type 'inner From 23fb26a5d28b910d358c8964ec965e5bd0ba398c Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Tue, 10 Dec 2024 08:49:16 -0800 Subject: [PATCH 114/334] Update keybindings.md --- docs/keybindings.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/keybindings.md b/docs/keybindings.md index 07a82c69..631b9f64 100755 --- a/docs/keybindings.md +++ b/docs/keybindings.md @@ -257,6 +257,8 @@ Here is the list of key bindings that are defined in this configuration. * Ctrl+pg-down - Switch to the next tab. * Ctrl+Shift+pg-up - Switch to the previous tab group. * Ctrl+Shift+pg-down - Switch to the next tab group. +* Ctrl+insert - Toggle tab groups. +* Ctrl+Shift+insert - Switch to tab group. #### Kill Buffer From a5d7817e7c56cab38aaef30361497ba2827cc84c Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Wed, 11 Dec 2024 00:49:51 +0800 Subject: [PATCH 115/334] feat: Disable ido completion in tabs --- modules/ui/tabs/config.el | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index 5dd1349a..ff934b18 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -10,6 +10,7 @@ centaur-tabs-icons-prefix "" centaur-tabs-icon-scale-factor 0.9 centaur-tabs-set-modified-marker t + centaur-tabs-enable-ido-completion nil centaur-tabs-buffer-groups-function #'jcs-tabs-buffer-groups centaur-tabs-custom-buffer-groups #'jcs-tabs-custom-buffer-groups centaur-tabs-hide-predicate #'elenv-frame-util-p From b8c821614aded5496079f8adf9ed3ecb3a7f1725 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Wed, 11 Dec 2024 00:50:14 +0800 Subject: [PATCH 116/334] feat: bind switch tab group and toggle tab groups --- lisp/jcs-key.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lisp/jcs-key.el b/lisp/jcs-key.el index bbe02369..aa998167 100755 --- a/lisp/jcs-key.el +++ b/lisp/jcs-key.el @@ -282,6 +282,9 @@ ((kbd "C-S-") . centaur-tabs-backward-group) ((kbd "C-S-") . centaur-tabs-forward-group) + ((kbd "C-") . centaur-tabs-toggle-groups) + ((kbd "C-S-") . centaur-tabs-switch-group) + ;;; Tab Width ((kbd "C-k >") . indent-control-inc) ((kbd "C-k <") . indent-control-dec) From 419d5224822c2994c574f1db5e91215dc73f3e32 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Wed, 11 Dec 2024 03:44:01 +0800 Subject: [PATCH 117/334] swap bindings --- lisp/jcs-key.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/jcs-key.el b/lisp/jcs-key.el index aa998167..40086bef 100755 --- a/lisp/jcs-key.el +++ b/lisp/jcs-key.el @@ -282,8 +282,8 @@ ((kbd "C-S-") . centaur-tabs-backward-group) ((kbd "C-S-") . centaur-tabs-forward-group) - ((kbd "C-") . centaur-tabs-toggle-groups) - ((kbd "C-S-") . centaur-tabs-switch-group) + ((kbd "C-") . centaur-tabs-switch-group) + ((kbd "C-S-") . centaur-tabs-toggle-groups) ;;; Tab Width ((kbd "C-k >") . indent-control-inc) From a8e10264745d6e106b734fcae6abd13ff151893d Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Tue, 10 Dec 2024 11:45:12 -0800 Subject: [PATCH 118/334] Update keybindings.md --- docs/keybindings.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/keybindings.md b/docs/keybindings.md index 631b9f64..b4b01e34 100755 --- a/docs/keybindings.md +++ b/docs/keybindings.md @@ -257,8 +257,8 @@ Here is the list of key bindings that are defined in this configuration. * Ctrl+pg-down - Switch to the next tab. * Ctrl+Shift+pg-up - Switch to the previous tab group. * Ctrl+Shift+pg-down - Switch to the next tab group. -* Ctrl+insert - Toggle tab groups. -* Ctrl+Shift+insert - Switch to tab group. +* Ctrl+insert - Switch to tab group. +* Ctrl+Shift+insert - Toggle tab groups. #### Kill Buffer From 6411ddc3e42fb7adb07a5b7a426677c0a9bfd6eb Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 13 Dec 2024 23:04:07 -0800 Subject: [PATCH 119/334] Update keybindings.md --- docs/keybindings.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/keybindings.md b/docs/keybindings.md index b4b01e34..631b9f64 100755 --- a/docs/keybindings.md +++ b/docs/keybindings.md @@ -257,8 +257,8 @@ Here is the list of key bindings that are defined in this configuration. * Ctrl+pg-down - Switch to the next tab. * Ctrl+Shift+pg-up - Switch to the previous tab group. * Ctrl+Shift+pg-down - Switch to the next tab group. -* Ctrl+insert - Switch to tab group. -* Ctrl+Shift+insert - Toggle tab groups. +* Ctrl+insert - Toggle tab groups. +* Ctrl+Shift+insert - Switch to tab group. #### Kill Buffer From df4e163e93710cfbdd063f638c9b63b9f83866bd Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 13 Dec 2024 23:26:00 -0800 Subject: [PATCH 120/334] feat: Add eldoc-diffstats --- lisp/jcs-package.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 0c001ecf..7aa69181 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -160,6 +160,7 @@ editorconfig-generate el-mock eldoc-cmake + eldoc-diffstat eldoc-eask eldoc-meta-net eldoc-toml From b35a18454d82231410d3cea441561f585bc22c04 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 13 Dec 2024 23:26:18 -0800 Subject: [PATCH 121/334] feat: Revert centaur-tabs toggle and switch groups --- lisp/jcs-key.el | 40 ++-------------------------------------- 1 file changed, 2 insertions(+), 38 deletions(-) diff --git a/lisp/jcs-key.el b/lisp/jcs-key.el index 40086bef..678c000f 100755 --- a/lisp/jcs-key.el +++ b/lisp/jcs-key.el @@ -282,8 +282,8 @@ ((kbd "C-S-") . centaur-tabs-backward-group) ((kbd "C-S-") . centaur-tabs-forward-group) - ((kbd "C-") . centaur-tabs-switch-group) - ((kbd "C-S-") . centaur-tabs-toggle-groups) + ((kbd "C-") . centaur-tabs-toggle-groups) + ((kbd "C-S-") . centaur-tabs-switch-group) ;;; Tab Width ((kbd "C-k >") . indent-control-inc) @@ -406,11 +406,6 @@ :bind ( :map goto-address-highlight-keymap ("C-c"))) -;;; Kill Ring -(use-package browse-kill-ring - :bind ( :map browse-kill-ring-mode-map - ("" . kill-this-buffer))) - (jcs-key package-menu-mode-map `(((kbd "M-K") . package-list-packages) ((kbd "U") . pkg-dm-upgrade-all) @@ -420,36 +415,5 @@ `(((kbd "") . previous-line) ((kbd "") . next-line))) -(use-package image-mode - :bind ( :map image-mode-map - ("C-r" . image-rotate) - ("C-0" . (lambda () (interactive) - (message "Maximize image is not supported"))) - ("C-=" . image-increase-size) - ("C--" . image-decrease-size) - ("C-+" . image-flip-horizontally) - ("C-_" . image-flip-vertically))) - -(use-package suggest - :bind ( :map suggest-mode-map - ("U" . suggest-update) - ("M-K" . suggest-update))) - -(use-package undo-tree - :bind ( :map undo-tree-visualizer-mode-map - ("RET" . undo-tree-visualizer-quit) - ("C-s" . undo-tree-visualizer-quit) - :map undo-tree-map - ("C-/" . smart-comment) - ("\C-_") - ("C-?") - ("M-_"))) - -(use-package with-editor - :bind ( :map with-editor-mode-map - ("C-s" . with-editor-finish) - ("C-g" . with-editor-cancel) - ("" . with-editor-cancel))) - (provide 'jcs-key) ;;; jcs-key.el ends here From cb2afb004e92d88b54db1506da54d2f43bc9a87f Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 13 Dec 2024 23:26:34 -0800 Subject: [PATCH 122/334] feat: Configure eldoc-diffstats --- modules/tools/magit/config.el | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/modules/tools/magit/config.el b/modules/tools/magit/config.el index 61cb0268..6b64f66c 100644 --- a/modules/tools/magit/config.el +++ b/modules/tools/magit/config.el @@ -23,3 +23,14 @@ :init (setq magit-todos-nice (if (executable-find "nice") t nil) magit-todos-keyword-suffix "\\(?:([^)]+)\\)?:?")) + +(use-package eldoc-diffstat + :init + ;; XXX: Not sure why the `:hook' keyword doesn't work.k + (jcs-add-hook 'magit-status-mode-hook + (eldoc-diffstat-setup)) + + (eldoc-add-command + 'magit-next-line 'magit-previous-line + 'magit-section-forward 'magit-section-backward + 'magit-section-forward-sibling 'magit-section-backward-sibling)) From 32d0ad4321cfd41a130ff73ddcbf768eea99fc8c Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 13 Dec 2024 23:27:03 -0800 Subject: [PATCH 123/334] perf: Improve eldoc-commands --- lisp/jcs-env.el | 7 +------ modules/editor/vs/config.el | 13 ++++++++++++- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/lisp/jcs-env.el b/lisp/jcs-env.el index e7b9ab09..36d8026b 100755 --- a/lisp/jcs-env.el +++ b/lisp/jcs-env.el @@ -130,16 +130,11 @@ ;;; ElDoc (eldoc-add-command 'mouse-set-point - 'vsc-edit-real-space 'vsc-edit-smart-space 'vsc-edit-space - 'vsc-edit-real-backspace 'vsc-edit-smart-backspace 'vsc-edit-backspace 'previous-line 'next-line - 'vs-edit-previous-line 'vs-edit-next-line 'jcs-py-indent-up 'jcs-py-indent-down 'left-char 'right-char - 'vs-edit-forward-word 'vs-edit-backward-word 'jcs-backward-word-capital 'jcs-forward-word-capital - 'beginning-of-line 'end-of-line - 'vsc-edit-beginning-of-line 'vsc-edit-end-of-line) + 'beginning-of-line 'end-of-line) ;;; Electric (setq-default electric-pair-inhibit-predicate 'electric-pair-default-inhibit) diff --git a/modules/editor/vs/config.el b/modules/editor/vs/config.el index bb607827..9ff17880 100644 --- a/modules/editor/vs/config.el +++ b/modules/editor/vs/config.el @@ -1,11 +1,22 @@ ;;; editor/vs/config.el -*- lexical-binding: t; -*- +(use-package vs-edit-mode + :init + (eldoc-add-command + 'vs-edit-previous-line 'vs-edit-next-line + 'vs-edit-forward-word 'vs-edit-backward-word)) + (use-package vsc-edit-mode :init (setq vsc-edit-insert-tab-on-tab t) (message-clean-mode-add-echo-commands - '( vsc-edit-beginning-of-line vsc-edit-end-of-line))) + '( vsc-edit-beginning-of-line vsc-edit-end-of-line)) + + (eldoc-add-command + 'vsc-edit-real-space 'vsc-edit-smart-space 'vsc-edit-space + 'vsc-edit-real-backspace 'vsc-edit-smart-backspace 'vsc-edit-backspace + 'vsc-edit-beginning-of-line 'vsc-edit-end-of-line)) (use-package vs-comment-return :init From e83fe81fa4a98700b427b1fd739e1583d2839420 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 13 Dec 2024 23:27:12 -0800 Subject: [PATCH 124/334] feat: split key modules --- lisp/jcs-module.el | 4 ++++ modules/emacs/image/config.el | 11 +++++++++++ modules/emacs/undo/config.el | 8 ++++++++ modules/misc/browse-kill-ring/config.el | 5 +++++ modules/misc/suggest/confg.el | 6 ++++++ modules/misc/with-editor/config.el | 7 +++++++ 6 files changed, 41 insertions(+) create mode 100644 modules/emacs/image/config.el create mode 100644 modules/misc/browse-kill-ring/config.el create mode 100644 modules/misc/suggest/confg.el create mode 100644 modules/misc/with-editor/config.el diff --git a/lisp/jcs-module.el b/lisp/jcs-module.el index 5bb71d82..26feb2f0 100644 --- a/lisp/jcs-module.el +++ b/lisp/jcs-module.el @@ -33,6 +33,7 @@ (dired . "emacs/dired") (hexl-mode . "emacs/hexl") (ibuffer . "emacs/ibuffer") + (image-mode . "emacs/image") (list-environment . "emacs/list-thing") (re-builder . "emacs/re-builder") (text-mode . "emacs/text-mode") @@ -42,8 +43,11 @@ vc-refresh) . "emacs/vc") (message . "email/message") + (browse-kill-ring . "misc/browse-kill-ring") (flx . "misc/flx") + (suggest . "misc/suggest") (google-translate . "misc/translator") + (with-editor . "misc/with-editor") (nov . "reader/epub") (logview . "reader/log") (esh-mode . "term/eshell") diff --git a/modules/emacs/image/config.el b/modules/emacs/image/config.el new file mode 100644 index 00000000..27422c24 --- /dev/null +++ b/modules/emacs/image/config.el @@ -0,0 +1,11 @@ +;;; emacs/image/config.el -*- lexical-binding: t; -*- + +(use-package image-mode + :bind ( :map image-mode-map + ("C-r" . image-rotate) + ("C-0" . (lambda () (interactive) + (message "Maximize image is not supported"))) + ("C-=" . image-increase-size) + ("C--" . image-decrease-size) + ("C-+" . image-flip-horizontally) + ("C-_" . image-flip-vertically))) diff --git a/modules/emacs/undo/config.el b/modules/emacs/undo/config.el index dbca25e5..adb6b36d 100644 --- a/modules/emacs/undo/config.el +++ b/modules/emacs/undo/config.el @@ -8,6 +8,14 @@ (use-package undo-tree-vf :hook (undo-tree-mode . undo-tree-vf-mode)) (use-package undo-tree + :bind ( :map undo-tree-visualizer-mode-map + ("RET" . undo-tree-visualizer-quit) + ("C-s" . undo-tree-visualizer-quit) + :map undo-tree-map + ("C-/" . smart-comment) + ("\C-_") + ("C-?") + ("M-_")) :init (setq undo-tree-auto-save-history nil) (message-clean-mode-add-echo-commands '( undo-tree-undo undo-tree-redo)) diff --git a/modules/misc/browse-kill-ring/config.el b/modules/misc/browse-kill-ring/config.el new file mode 100644 index 00000000..e7f87836 --- /dev/null +++ b/modules/misc/browse-kill-ring/config.el @@ -0,0 +1,5 @@ +;;; misc/browse-kill-ring/config.el -*- lexical-binding: t; -*- + +(use-package browse-kill-ring + :bind ( :map browse-kill-ring-mode-map + ("" . kill-this-buffer))) diff --git a/modules/misc/suggest/confg.el b/modules/misc/suggest/confg.el new file mode 100644 index 00000000..a39ab6dd --- /dev/null +++ b/modules/misc/suggest/confg.el @@ -0,0 +1,6 @@ +;;; misc/suggest/config.el -*- lexical-binding: t; -*- + +(use-package suggest + :bind ( :map suggest-mode-map + ("U" . suggest-update) + ("M-K" . suggest-update))) diff --git a/modules/misc/with-editor/config.el b/modules/misc/with-editor/config.el new file mode 100644 index 00000000..9db09f81 --- /dev/null +++ b/modules/misc/with-editor/config.el @@ -0,0 +1,7 @@ +;;; misc/with-editor/config.el -*- lexical-binding: t; -*- + +(use-package with-editor + :bind ( :map with-editor-mode-map + ("C-s" . with-editor-finish) + ("C-g" . with-editor-cancel) + ("" . with-editor-cancel))) From 6184465bbffc9a401c0b9906ff9b774324edf067 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 13 Dec 2024 23:44:33 -0800 Subject: [PATCH 125/334] chore(lsp): Move process kill to its own module --- modules/tools/lsp/config.el | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/tools/lsp/config.el b/modules/tools/lsp/config.el index ff48fb17..d3f98084 100644 --- a/modules/tools/lsp/config.el +++ b/modules/tools/lsp/config.el @@ -36,8 +36,12 @@ (ignore-errors (require package nil t)))) lsp-client-packages) (setq lsp--client-packages-required t))) + ;; Don't log request error after the server has started - (jcs-advice-ignore-errors 'lsp--on-idle)) + (jcs-advice-ignore-errors 'lsp--on-idle) + + ;; XXX: Ignore errors so I can at least kill the buffer! + (jcs-advice-add 'lsp-process-kill :around (ignore-errors (apply arg0 args)))) (use-package lsp-ui :bind ( :map lsp-ui-doc-frame-mode-map From 8f9686563559f7b209c289fe24e5d2a6ea9f7c15 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 13 Dec 2024 23:44:50 -0800 Subject: [PATCH 126/334] feat: Add magit entry functions --- lisp/jcs-function.el | 53 ++++++++++++++++++++++++++------------------ lisp/jcs-key.el | 7 +++--- 2 files changed, 36 insertions(+), 24 deletions(-) diff --git a/lisp/jcs-function.el b/lisp/jcs-function.el index 95c9c233..bc230e37 100755 --- a/lisp/jcs-function.el +++ b/lisp/jcs-function.el @@ -2,6 +2,28 @@ ;;; Commentary: ;;; Code: +;; +;; (@* "Config" ) +;; + +(defun jcs-update-config () + "Update JCS-Emacs configurations to the latest version." + (interactive) + (let* ((dir (expand-file-name user-emacs-directory)) + (git-dir (f-directories user-emacs-directory + (lambda (file) + (and (file-directory-p file) + (string= ".git" (file-name-nondirectory file))))))) + (unless (file-exists-p dir) + (user-error "[ERROR] User directory doesn't exist: %s" dir)) + (unless git-dir + (user-error "[WARNING] Not a git directory: %s" user-emacs-directory)) + (msgu-inhibit-log + (message "[INFO] Updating configurations... ") + (cd dir) + (shell-command "git pull") + (message "[INFO] Updating configurations... done")))) + ;; ;; (@* "*Messages*" ) ;; @@ -82,31 +104,20 @@ (when (<= (length buffers) 1) (lsp-workspace-shutdown workspace)))))) -(jcs-advice-add 'lsp-process-kill :around - ;; XXX: Ignore errors so I can at least kill the buffer! - (ignore-errors (apply arg0 args))) - ;; -;; (@* "Config" ) +;; (@* "Magit" ) ;; -(defun jcs-update-config () - "Update JCS-Emacs configurations to the latest version." +(defun jcs-magit () + "Start magit." (interactive) - (let* ((dir (expand-file-name user-emacs-directory)) - (git-dir (f-directories user-emacs-directory - (lambda (file) - (and (file-directory-p file) - (string= ".git" (file-name-nondirectory file))))))) - (unless (file-exists-p dir) - (user-error "[ERROR] User directory doesn't exist: %s" dir)) - (unless git-dir - (user-error "[WARNING] Not a git directory: %s" user-emacs-directory)) - (msgu-inhibit-log - (message "[INFO] Updating configurations... ") - (cd dir) - (shell-command "git pull") - (message "[INFO] Updating configurations... done")))) + (or (call-interactively #'magit-switch-to-repository-buffer) + (call-interactively #'magit))) + +(defun jcs-magit-other-window () + "Start magit in other window." + (interactive) + (jcs-with-other-window (jcs-magit))) (provide 'jcs-function) ;;; jcs-function.el ends here diff --git a/lisp/jcs-key.el b/lisp/jcs-key.el index 678c000f..acf466c9 100755 --- a/lisp/jcs-key.el +++ b/lisp/jcs-key.el @@ -302,9 +302,10 @@ ("\e-" . transwin-dec) ;;; Version Control - ((kbd "C-k m") . magit) - ((kbd "C-0 g") . magit) ; Visual Studio - ((kbd "C-S-g") . magit) ; VSCode + ((kbd "C-k m") . jcs-magit) + ((kbd "C-k M") . jcs-magit-other-window) + ((kbd "C-0 g") . jcs-magit) ; Visual Studio + ((kbd "C-S-g") . jcs-magit) ; VSCode ((kbd "C-k c") . magit-branch-or-checkout) ((kbd "C-k d") . magit-branch-delete) From 1e4ca284a4e28d9f333fb3b6337dfdcbb1008a60 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 13 Dec 2024 23:50:05 -0800 Subject: [PATCH 127/334] fix: Annoying when-let deprecation --- lisp/jcs-function.el | 2 +- lisp/jcs-project.el | 8 ++++---- lisp/lib/jcs-edit.el | 10 +++++----- lisp/lib/jcs-util.el | 10 +++++----- modules/completion/vertico/config.el | 2 +- modules/lang/cc/config.el | 2 +- modules/ui/dashboard/config.el | 2 +- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/lisp/jcs-function.el b/lisp/jcs-function.el index bc230e37..a05d136b 100755 --- a/lisp/jcs-function.el +++ b/lisp/jcs-function.el @@ -97,7 +97,7 @@ (defun jcs-lsp-maybe-shutdown () "Maybe shutdown the workspace." - (when-let ((workspaces (jcs-fboundp-apply #'lsp-workspaces))) + (when-let* ((workspaces (jcs-fboundp-apply #'lsp-workspaces))) (dolist (workspace workspaces) (let* ((buffers (lsp--workspace-buffers workspace)) (buffers (cl-remove-if-not #'buffer-live-p buffers))) diff --git a/lisp/jcs-project.el b/lisp/jcs-project.el index 0000c0d2..32e3ed13 100755 --- a/lisp/jcs-project.el +++ b/lisp/jcs-project.el @@ -23,7 +23,7 @@ (defun jcs-project-root () "Return project directory path." - (when-let ((current (project-current))) (project-root current))) + (when-let* ((current (project-current))) (project-root current))) (defvar jcs-project--cache-opened-projects nil "Cache to track down list of opened projects.") @@ -51,9 +51,9 @@ If UNIQUIFY is non-nil, refresh the cache once." "Return a shorten uniquify name from BUFFER." (jcs-require '(subr-x f)) (with-current-buffer (or buffer (current-buffer)) - (when-let ((default-directory (buffer-file-name)) - (all-projects (jcs-project-opened-projects)) - (current-project (jcs-project-root))) + (when-let* ((default-directory (buffer-file-name)) + (all-projects (jcs-project-opened-projects)) + (current-project (jcs-project-root))) (push current-project all-projects) (setq all-projects (delete-dups all-projects)) (nth 0 (f-uniquify all-projects))))) diff --git a/lisp/lib/jcs-edit.el b/lisp/lib/jcs-edit.el index 631279ef..11a3215d 100644 --- a/lisp/lib/jcs-edit.el +++ b/lisp/lib/jcs-edit.el @@ -248,10 +248,10 @@ (let (saved-lst) (dolist (buf (buffer-list)) (with-current-buffer buf - (when-let ((result - (ignore-errors - (msgu-silent - (call-interactively (key-binding (kbd "C-s"))))))) + (when-let* ((result + (ignore-errors + (msgu-silent + (call-interactively (key-binding (kbd "C-s"))))))) (when (ignore-errors (string-match-p "Wrote file" result)) (push (buffer-file-name) saved-lst))))) (unless save-silently @@ -402,7 +402,7 @@ other window." (defun jcs-reopen-this-buffer () "Kill the current buffer and open it again." (interactive) - (when-let ((filename (buffer-file-name))) + (when-let* ((filename (buffer-file-name))) (msgu-inhibit-log (when (jcs-lsp-connected-p) (lsp-disconnect)) (elenv-save-window-excursion (find-alternate-file filename)) diff --git a/lisp/lib/jcs-util.el b/lisp/lib/jcs-util.el index 391a0093..3992c6ea 100644 --- a/lisp/lib/jcs-util.el +++ b/lisp/lib/jcs-util.el @@ -41,7 +41,7 @@ (defmacro jcs-when-buffer-window (buffer-or-name &rest body) "Execute BODY in window BUFFER-OR-NAME." (declare (indent 1) (debug t)) - `(when-let ((win (ignore-errors (get-buffer-window-list ,buffer-or-name)))) + `(when-let* ((win (ignore-errors (get-buffer-window-list ,buffer-or-name)))) (with-selected-window (nth 0 win) ,@body))) (defmacro jcs-if-buffer-window (buffer-or-name then &rest else) @@ -139,12 +139,12 @@ If FORCE is non-nil, force load the module even it has been loaded already." (defun jcs-valid-buffer-p (&optional buffer) "Return non-nil if BUFFER does exist on disk." - (when-let ((bfn (buffer-file-name buffer))) (file-exists-p bfn))) + (when-let* ((bfn (buffer-file-name buffer))) (file-exists-p bfn))) (defun jcs-invalid-buffer-p (&optional buffer) "Return non-nil if BUFFER does't exist on disk but has a valid file path. This occurs when file was opened but has moved to somewhere else externally." - (when-let ((bfn (buffer-file-name buffer))) (not (file-exists-p bfn)))) + (when-let* ((bfn (buffer-file-name buffer))) (not (file-exists-p bfn)))) (defun jcs-virtual-buffer-list () "Return a list of virtual buffers." @@ -214,7 +214,7 @@ TYPE is the return type; can be 'object or 'string." "Record the info from an excursion, the FNC and ARGS." (save-excursion (save-window-excursion - (when-let ((success (ignore-errors (funcall fnc)))) + (when-let* ((success (ignore-errors (funcall fnc)))) (with-current-buffer (if (bufferp success) success (current-buffer)) (list (current-buffer) (line-number-at-pos) (current-column) (jcs-first-visible-line-in-window))))))) @@ -626,7 +626,7 @@ or `suffix'." (defun jcs-fill-n-char-seq (ch-seq n) "Fill CH-SEQ with N length." - (when-let ((ch-out ch-seq) (n (or n 1))) + (when-let* ((ch-out ch-seq) (n (or n 1))) (while (< (length ch-out) n) (setq ch-out (concat ch-out ch-seq))) (when ch-out (substring ch-out 0 n)))) diff --git a/modules/completion/vertico/config.el b/modules/completion/vertico/config.el index 4b4cf18c..5fae8e15 100644 --- a/modules/completion/vertico/config.el +++ b/modules/completion/vertico/config.el @@ -52,7 +52,7 @@ (when (jcs-vertico--active-p) (elenv-with-no-redisplay (vertico--exhibit) - (when-let ((index (jcs-vertico--index candidate))) + (when-let* ((index (jcs-vertico--index candidate))) (jcs-vertico--recenter index))))) (defun jcs-vertico--goto (index) diff --git a/modules/lang/cc/config.el b/modules/lang/cc/config.el index af7c087b..5973f04a 100644 --- a/modules/lang/cc/config.el +++ b/modules/lang/cc/config.el @@ -62,7 +62,7 @@ (defun jcs-c++--ts-docstr-after (node data) "Local hook `ts-docstr-after-insert-hook' for C++." - (when-let ((name (plist-get data :name))) + (when-let* ((name (plist-get data :name))) (ts-docstr-with-insert-indent (cl-case (tsc-node-type node) (preproc_def diff --git a/modules/ui/dashboard/config.el b/modules/ui/dashboard/config.el index b090ae6b..fae7d9df 100644 --- a/modules/ui/dashboard/config.el +++ b/modules/ui/dashboard/config.el @@ -257,7 +257,7 @@ (jcs-when-buffer-window dashboard-buffer-name (window-width))) (jcs-add-hook 'window-size-change-functions - (when-let ((new-ww (jcs-dashboard--window-width))) + (when-let* ((new-ww (jcs-dashboard--window-width))) (unless (= new-ww jcs-dashboard--last-window-width) (setq jcs-dashboard--last-window-width new-ww) (jcs-dashboard-refresh-buffer)))) From 4a002dfb13987d967123e1a9c5ba8ed9c80d2fce Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 13 Dec 2024 23:51:31 -0800 Subject: [PATCH 128/334] fix: Annoying if-let deprecation --- lisp/lib/jcs-util.el | 2 +- lisp/lib/jcs-window.el | 2 +- modules/ui/dashboard/config.el | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/lib/jcs-util.el b/lisp/lib/jcs-util.el index 3992c6ea..e7cd1b17 100644 --- a/lisp/lib/jcs-util.el +++ b/lisp/lib/jcs-util.el @@ -47,7 +47,7 @@ (defmacro jcs-if-buffer-window (buffer-or-name then &rest else) "Execute THEN in window BUFFER-OR-NAME; otherwise ELSE will be executed." (declare (indent 2) (debug t)) - `(if-let ((win (ignore-errors (get-buffer-window-list ,buffer-or-name)))) + `(if-let* ((win (ignore-errors (get-buffer-window-list ,buffer-or-name)))) (with-selected-window (nth 0 win) ,then) ,@else)) diff --git a/lisp/lib/jcs-window.el b/lisp/lib/jcs-window.el index 846b2d9d..bb78cbc4 100644 --- a/lisp/lib/jcs-window.el +++ b/lisp/lib/jcs-window.el @@ -35,7 +35,7 @@ If BUFFER isn't showing; then execute ERROR operations instead. For argument TYPE; see function `jcs-string-compare-p' description." - (if-let ((windows (jcs-window-list buffer type))) + (if-let* ((windows (jcs-window-list buffer type))) (dolist (win windows) (with-selected-window win (when success (funcall success)))) diff --git a/modules/ui/dashboard/config.el b/modules/ui/dashboard/config.el index fae7d9df..181f3b2a 100644 --- a/modules/ui/dashboard/config.el +++ b/modules/ui/dashboard/config.el @@ -160,7 +160,7 @@ (defmacro jcs-with-dashboard-last-path (&rest body) "Execute BODY with preserving dashboard current path." (declare (indent 0) (debug t)) - `(let ((dashboard-ls-path (if-let ((buffers (nth 0 (jcs-valid-buffer-list)))) + `(let ((dashboard-ls-path (if-let* ((buffers (nth 0 (jcs-valid-buffer-list)))) (file-name-directory (buffer-file-name buffers)) default-directory))) ,@body)) From 20a9e94b93e96ef9efcbcc4fb438242cd604a5ac Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 13 Dec 2024 23:52:20 -0800 Subject: [PATCH 129/334] Update keybindings.md --- docs/keybindings.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/keybindings.md b/docs/keybindings.md index 631b9f64..4bb54ea5 100755 --- a/docs/keybindings.md +++ b/docs/keybindings.md @@ -378,6 +378,7 @@ Here is the list of key bindings that are defined in this configuration. ### Version Control * Ctrl+k, m - Start magit. +* Ctrl+k, Shift+m - Start magit in other window. * Ctrl+0, g - Start magit. * Ctrl+Shift+g - Start magit. * Ctrl+k, c - Checkout branch. From a732eb0c7cda3792ea5c49417932a03a2351a6b2 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 13 Dec 2024 23:56:55 -0800 Subject: [PATCH 130/334] Update CHANGELOG.md --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f1faa04a..fb989ba8 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,10 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * feat: Add `GDShader` support (fdb485a4adb0d29284ca93de9647e47b1bf7f94b) * feat: Add `Janet` support (2738bdc83f2b2d00411e9f5bb489087d1ae27c42) * feat(lang): Add `geiser` for better `Scheme` support (b981c72a0942ca13a4f9fc0da7edcfd4653482fd) +* feat: Configure `eldoc-diffstats` (cb2afb004e92d88b54db1506da54d2f43bc9a87f) +* feat: Add magit entry functions (8f9686563559f7b209c289fe24e5d2a6ea9f7c15) +* fix: Annoying `when-let` deprecation (1e4ca284a4e28d9f333fb3b6337dfdcbb1008a60) +* fix: Annoying `if-let` deprecation (4a002dfb13987d967123e1a9c5ba8ed9c80d2fce) ## 9.1.0 > Released Jun 19, 2024 From 82b7fe7f0969852d3bd9c88aac804e78cf91c501 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 13 Dec 2024 23:57:12 -0800 Subject: [PATCH 131/334] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb989ba8..e89e1084 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * feat: Add `Janet` support (2738bdc83f2b2d00411e9f5bb489087d1ae27c42) * feat(lang): Add `geiser` for better `Scheme` support (b981c72a0942ca13a4f9fc0da7edcfd4653482fd) * feat: Configure `eldoc-diffstats` (cb2afb004e92d88b54db1506da54d2f43bc9a87f) -* feat: Add magit entry functions (8f9686563559f7b209c289fe24e5d2a6ea9f7c15) +* feat: Add `magit` entry functions (8f9686563559f7b209c289fe24e5d2a6ea9f7c15) * fix: Annoying `when-let` deprecation (1e4ca284a4e28d9f333fb3b6337dfdcbb1008a60) * fix: Annoying `if-let` deprecation (4a002dfb13987d967123e1a9c5ba8ed9c80d2fce) From 70333fec0db4f151c5f9c847d15097a867ff7752 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sun, 15 Dec 2024 05:25:36 -0800 Subject: [PATCH 132/334] Update keybindings.md --- docs/keybindings.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/keybindings.md b/docs/keybindings.md index 4bb54ea5..631b9f64 100755 --- a/docs/keybindings.md +++ b/docs/keybindings.md @@ -378,7 +378,6 @@ Here is the list of key bindings that are defined in this configuration. ### Version Control * Ctrl+k, m - Start magit. -* Ctrl+k, Shift+m - Start magit in other window. * Ctrl+0, g - Start magit. * Ctrl+Shift+g - Start magit. * Ctrl+k, c - Checkout branch. From 80bfee999531a1c465ae1f8db361f51c1348246a Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 15 Dec 2024 05:28:11 -0800 Subject: [PATCH 133/334] Remove magit other window bindings --- lisp/jcs-key.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/jcs-key.el b/lisp/jcs-key.el index acf466c9..e4b40288 100755 --- a/lisp/jcs-key.el +++ b/lisp/jcs-key.el @@ -303,7 +303,6 @@ ;;; Version Control ((kbd "C-k m") . jcs-magit) - ((kbd "C-k M") . jcs-magit-other-window) ((kbd "C-0 g") . jcs-magit) ; Visual Studio ((kbd "C-S-g") . jcs-magit) ; VSCode ((kbd "C-k c") . magit-branch-or-checkout) From 53a034a616a4136a92bcfde59b5ae47be111f3e5 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 15 Dec 2024 05:28:21 -0800 Subject: [PATCH 134/334] fix: magit entry --- lisp/jcs-function.el | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/lisp/jcs-function.el b/lisp/jcs-function.el index a05d136b..28ddbe23 100755 --- a/lisp/jcs-function.el +++ b/lisp/jcs-function.el @@ -111,13 +111,9 @@ (defun jcs-magit () "Start magit." (interactive) - (or (call-interactively #'magit-switch-to-repository-buffer) - (call-interactively #'magit))) - -(defun jcs-magit-other-window () - "Start magit in other window." - (interactive) - (jcs-with-other-window (jcs-magit))) + (if-let* ((buf (magit-get-mode-buffer 'magit-status-mode))) + (magit-switch-to-repository-buffer-other-window buf) + (call-interactively #'magit))) (provide 'jcs-function) ;;; jcs-function.el ends here From 91b7d33b2aa7c58e3db2661a638d75de4952fb97 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 15 Dec 2024 06:03:20 -0800 Subject: [PATCH 135/334] feat: fix missing require --- lisp/jcs-function.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-function.el b/lisp/jcs-function.el index 28ddbe23..c64d8080 100755 --- a/lisp/jcs-function.el +++ b/lisp/jcs-function.el @@ -111,6 +111,7 @@ (defun jcs-magit () "Start magit." (interactive) + (require 'magit) (if-let* ((buf (magit-get-mode-buffer 'magit-status-mode))) (magit-switch-to-repository-buffer-other-window buf) (call-interactively #'magit))) From 0d2b47f90431ec4d6150977bfb4ad3bc7409b572 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 15 Dec 2024 14:53:52 -0800 Subject: [PATCH 136/334] feat: Add package consult-vc-modified-files --- lisp/jcs-package.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 7aa69181..b807f69b 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -133,6 +133,7 @@ composer comware-router-mode consult-todo + consult-vc-modified-files crux crystal-mode csound-mode From 9b4ecac5f3e1d145e390b45f22cea94b4742b96e Mon Sep 17 00:00:00 2001 From: JenChieh Date: Thu, 19 Dec 2024 07:21:57 -0800 Subject: [PATCH 137/334] fix(vertico): Prevent selecting the same candidate when entering dir --- modules/completion/vertico/config.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/completion/vertico/config.el b/modules/completion/vertico/config.el index 5fae8e15..a65836f1 100644 --- a/modules/completion/vertico/config.el +++ b/modules/completion/vertico/config.el @@ -139,6 +139,10 @@ (jcs-vertico--cd (f-root)) (vertico-first)) (t (call-interactively #'backward-delete-char))))) +(jcs-advice-add 'vertico-directory-enter :after + ;; If we just enter a directory, always select the prompt. + (when (jcs-vertico--active-p) (jcs-vertico--goto -1))) + ;; ;; (@* "Registry" ) ;; From 205077c16bba46e7b95e58ab37240a6e62571d94 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 20 Dec 2024 16:17:32 -0800 Subject: [PATCH 138/334] feat: Disable LSP lisp --- modules/tools/lsp/config.el | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/tools/lsp/config.el b/modules/tools/lsp/config.el index d3f98084..d7a18a6d 100644 --- a/modules/tools/lsp/config.el +++ b/modules/tools/lsp/config.el @@ -10,6 +10,7 @@ lsp-enable-symbol-highlighting nil ;; Reduce unexpected modifications to code lsp-enable-on-type-formatting nil + lsp-disabled-clients '( alive-lsp) ;; Make breadcrumbs opt-in; they're redundant with the modeline and imenu lsp-headerline-breadcrumb-enable nil ;; Inlay Hints From 775a054aaab127d1cfa0f2d2972a6a72bf688640 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 20 Dec 2024 16:17:42 -0800 Subject: [PATCH 139/334] feat: Disable LSP Copilot --- modules/tools/lsp/config.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/tools/lsp/config.el b/modules/tools/lsp/config.el index d7a18a6d..e907e062 100644 --- a/modules/tools/lsp/config.el +++ b/modules/tools/lsp/config.el @@ -10,7 +10,8 @@ lsp-enable-symbol-highlighting nil ;; Reduce unexpected modifications to code lsp-enable-on-type-formatting nil - lsp-disabled-clients '( alive-lsp) + lsp-disabled-clients '( alive-lsp + copilot-ls) ;; Make breadcrumbs opt-in; they're redundant with the modeline and imenu lsp-headerline-breadcrumb-enable nil ;; Inlay Hints From 727bcc0962a6a6aa656e9db1f0bf989b6e3ca1c4 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 20 Dec 2024 17:28:52 -0800 Subject: [PATCH 140/334] Update keybindings.md --- docs/keybindings.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/keybindings.md b/docs/keybindings.md index 631b9f64..c7f2b2fc 100755 --- a/docs/keybindings.md +++ b/docs/keybindings.md @@ -14,12 +14,12 @@ Here is the list of key bindings that are defined in this configuration. - [Calculate](#calculate) - [Todo](#todo) - [Commenting / Uncommenting](#commenting--uncommenting) - - [Docstring](#docstring) - [Formating](#formating) - [Folding / Unfolding](#folding--unfolding) - [Expand Region](#expand-region) - [Case](#case) - [Alignment](#alignment) + - [Screesaver](#screesaver) - [Scrolling](#scrolling) - [Balanced Expression](#balanced-expression) - [Multiple Cursors](#multiple-cursors) @@ -159,10 +159,6 @@ Here is the list of key bindings that are defined in this configuration. * Ctrl+k, Ctrl+u - Uncomment region or line. * Ctrl+k, - - Banner comment -#### Docstring - -* Alt+0 - Ask and set the current document string style. - #### Formatting * Ctrl+k, Ctrl+f - Format region. @@ -190,6 +186,10 @@ Here is the list of key bindings that are defined in this configuration. * Ctrl+k, a - Align region or document. +#### Screensaver + +* Alt+0 - Start screensaver. + #### Scrolling * Page Up - Scroll the window `up` one page. From c5acf001d477b1b06c49c3cce593ebc24eee9f44 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 20 Dec 2024 17:29:25 -0800 Subject: [PATCH 141/334] Update keybindings.md --- docs/keybindings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/keybindings.md b/docs/keybindings.md index c7f2b2fc..25300390 100755 --- a/docs/keybindings.md +++ b/docs/keybindings.md @@ -19,7 +19,7 @@ Here is the list of key bindings that are defined in this configuration. - [Expand Region](#expand-region) - [Case](#case) - [Alignment](#alignment) - - [Screesaver](#screesaver) + - [Screensaver](#screensaver) - [Scrolling](#scrolling) - [Balanced Expression](#balanced-expression) - [Multiple Cursors](#multiple-cursors) From 7369d03b66d01e9b164c12905ed5f1b64c88dbd8 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 20 Dec 2024 17:31:01 -0800 Subject: [PATCH 142/334] feat(ui): Tab screen saver --- modules/ui/tabs/config.el | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index ff934b18..d0aa7950 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -55,7 +55,10 @@ (defun jcs-tabs-custom-buffer-groups () "Group tabs." (let ((name (buffer-name))) - (cond ((string-prefix-p "*cider" name) "Cider") + (cond ((cl-some (lambda (item) (equal item name)) + '("*snow*")) + "Screen Saver") + ((string-prefix-p "*cider" name) "Cider") ((string-prefix-p "*sly" name) "Sly") ((string-prefix-p "*esup" name) "ESUP") ((string-match-p "lsp" name) "LSP-mode") From eec2b1d5fc8c04fe92e2430aab2d0028bc8f0ff8 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 20 Dec 2024 17:31:16 -0800 Subject: [PATCH 143/334] feat: Add screensaver key --- lisp/jcs-function.el | 19 +++++++++++++++++++ lisp/jcs-key.el | 6 +++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/lisp/jcs-function.el b/lisp/jcs-function.el index c64d8080..c0ed4036 100755 --- a/lisp/jcs-function.el +++ b/lisp/jcs-function.el @@ -83,6 +83,25 @@ (interactive) (if (jcs-scratch-buffer-p) (jcs-new-scratch-buffer) (jcs-reopen-this-buffer))) +;; +;; (@* "Magit" ) +;; + +(defun jcs-screensaver (&rest _) + "Toggle screen saver." + (interactive) + (require 'zoom-window) + (remove-hook 'pre-command-hook #'jcs-screensaver) + (if-let* ((buf (get-buffer "*snow*"))) + (progn + (kill-buffer buf) + (when (zoom-window--enable-p) + (zoom-window-zoom))) + (snow) + (unless (zoom-window--enable-p) + (zoom-window-zoom)) + (add-hook 'pre-command-hook #'jcs-screensaver))) + ;; ;; (@* "LSP" ) ;; diff --git a/lisp/jcs-key.el b/lisp/jcs-key.el index e4b40288..bb32e5e0 100755 --- a/lisp/jcs-key.el +++ b/lisp/jcs-key.el @@ -81,9 +81,6 @@ ([S-f12] . jcs-goto-definition-other-window) ([M-f12] . jcs-peek-definition) -;;; Docstring - ((kbd "M-0") . ts-docstr-ask) - ;;; Editing ([C-right] . vs-edit-forward-word) ([C-left] . vs-edit-backward-word) @@ -239,6 +236,9 @@ ;;; Revert Buffer ("\er" . vs-revbuf-no-confirm) +;;; Screensaveer + ((kbd "M-0") . jcs-screensaver) + ;;; Script Executing (Output) ((kbd "C-S-u") . execrun-popup) ((kbd "") . execrun-run) ; Run From 90b6a110a0ce288928549660d8678583946c9723 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 20 Dec 2024 19:11:54 -0800 Subject: [PATCH 144/334] feat: Use external jcs-screensaver --- lisp/jcs-function.el | 19 ------------------- lisp/jcs-package.el | 5 ++--- 2 files changed, 2 insertions(+), 22 deletions(-) diff --git a/lisp/jcs-function.el b/lisp/jcs-function.el index c0ed4036..c64d8080 100755 --- a/lisp/jcs-function.el +++ b/lisp/jcs-function.el @@ -83,25 +83,6 @@ (interactive) (if (jcs-scratch-buffer-p) (jcs-new-scratch-buffer) (jcs-reopen-this-buffer))) -;; -;; (@* "Magit" ) -;; - -(defun jcs-screensaver (&rest _) - "Toggle screen saver." - (interactive) - (require 'zoom-window) - (remove-hook 'pre-command-hook #'jcs-screensaver) - (if-let* ((buf (get-buffer "*snow*"))) - (progn - (kill-buffer buf) - (when (zoom-window--enable-p) - (zoom-window-zoom))) - (snow) - (unless (zoom-window--enable-p) - (zoom-window-zoom)) - (add-hook 'pre-command-hook #'jcs-screensaver))) - ;; ;; (@* "LSP" ) ;; diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index b807f69b..e9d5c4fe 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -300,6 +300,7 @@ jcs-frametitle jcs-modeline jcs-poptip + jcs-screensaver jcs-template jenkinsfile-mode json-mode @@ -436,7 +437,6 @@ smart-comment smex sml-mode - snow sort-words sql-indent ssh-config-mode @@ -485,8 +485,7 @@ winum yarn-mode yasnippet-snippets - yuck-mode - zoom-window))) + yuck-mode))) (require 'elenv) (pkg-dm-install-all) From 57ea482fc4f680cc591a93fee5cf575bef0b29e5 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 21 Dec 2024 18:17:31 -0800 Subject: [PATCH 145/334] Remove unused functions --- lisp/lib/jcs-util.el | 62 ++++++++------------------------------------ 1 file changed, 11 insertions(+), 51 deletions(-) diff --git a/lisp/lib/jcs-util.el b/lisp/lib/jcs-util.el index e7cd1b17..9278e720 100644 --- a/lisp/lib/jcs-util.el +++ b/lisp/lib/jcs-util.el @@ -380,11 +380,6 @@ TYPE is the return type; can be 'object or 'string." (setq is-comment-line t)) is-comment-line))) -(defun jcs-current-file-empty-p (&optional fn) - "Check if the FN an empty file." - (if fn (with-current-buffer fn (and (bobp) (eobp))) - (and (bobp) (eobp)))) - (defun jcs-infront-first-char-at-line-p (&optional pt) "Return non-nil if there is nothing infront of the right from the PT." (save-excursion @@ -523,39 +518,22 @@ TYPE is the return type; can be 'object or 'string." (cl-incf index)) result)) -(defun jcs-length (obj) - "Return an integer value represent the length of OBJ." - (cond ((stringp obj) (length (string-trim obj))) - ((bufferp obj) (length (string-trim (buffer-name obj)))) - (t obj))) - -(defun jcs-list-min (lst) - "Find minimum number in LST." - (let (min) - (dolist (num lst) - (setq min (jcs-length min) num (jcs-length num)) - (if min (when (< num min) (setq min num)) (setq min num))) - min)) - -(defun jcs-list-max (lst) - "Find maximum number in LST." - (let (max) - (dolist (num lst) - (setq max (jcs-length max) num (jcs-length num)) - (if max (when (> num max) (setq max num)) (setq max num))) - max)) - -(defun jcs-contain-list-type-str (elt list type &optional reverse) +(defun jcs-member (elt list type &optional reverse) "Return non-nil if ELT is listed in LIST. Argument TYPE see function `jcs-string-compare-p' for more information. If optional argument REVERSE is non-nil, LIST item and ELT argument." - (cl-some - (lambda (elm) - (if reverse (jcs-string-compare-p elt elm type) - (jcs-string-compare-p elm elt type))) - list)) + (let ((break) (elm)) + (while (and list + (not break)) + (setq elm (pop list) + break (if reverse + (jcs-string-compare-p elt elm type) + (jcs-string-compare-p elm elt type)))) + (if break + (cons elm list) + list))) ;; ;; (@* "Mode" ) @@ -606,24 +584,6 @@ If optional argument REVERSE is non-nil, LIST item and ELT argument." ;; (@* "String" ) ;; -(defun jcs-string-compare-p (regexp str type &optional ignore-case) - "Compare STR with REGEXP by TYPE. - -Argument TYPE can be on of the following symbol. - - * regex - uses function `string-match-p'. (default) - * strict - uses function `string='. - * prefix - uses function `string-prefix-p'. - * suffix - uses function `string-suffix-p'. - -Optional argument IGNORE-CASE is only uses when TYPE is either symbol `prefix' -or `suffix'." - (cl-case type - (`strict (string= regexp str)) - (`prefix (string-prefix-p regexp str ignore-case)) - (`suffix (string-suffix-p regexp str ignore-case)) - (t (ignore-errors (string-match-p regexp str))))) - (defun jcs-fill-n-char-seq (ch-seq n) "Fill CH-SEQ with N length." (when-let* ((ch-out ch-seq) (n (or n 1))) From 24c22e41ac6a9f0ace70626977ee2ecefa00de8a Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 21 Dec 2024 18:18:02 -0800 Subject: [PATCH 146/334] Use jcs-member instead --- lisp/jcs-hook.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/jcs-hook.el b/lisp/jcs-hook.el index b9b31452..15d12ab8 100755 --- a/lisp/jcs-hook.el +++ b/lisp/jcs-hook.el @@ -147,7 +147,7 @@ (jcs-add-hook 'prog-mode-hook ;; XXX: See the bug https://github.com/immerrr/lua-mode/issues/172 - (unless (jcs-contain-list-type-str "-" (list comment-start comment-end) 'regex) + (unless (jcs-member "-" (list comment-start comment-end) 'regex) (modify-syntax-entry ?- "_")) (unless (elenv-buffer-use-spaces-p) (msgu-inhibit-log From d6f4b67ec168b2c85aa26e02f810c90eff432d29 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 21 Dec 2024 18:18:09 -0800 Subject: [PATCH 147/334] feat: custom tab group --- modules/ui/tabs/config.el | 101 +++++++++++++++++++++++++++++++++----- 1 file changed, 88 insertions(+), 13 deletions(-) diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index d0aa7950..9e573e70 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -12,7 +12,6 @@ centaur-tabs-set-modified-marker t centaur-tabs-enable-ido-completion nil centaur-tabs-buffer-groups-function #'jcs-tabs-buffer-groups - centaur-tabs-custom-buffer-groups #'jcs-tabs-custom-buffer-groups centaur-tabs-hide-predicate #'elenv-frame-util-p centaur-tabs-hide-tab-function #'centaur-tabs-hide-tab centaur-tabs-excluded-prefixes `(" *which") @@ -47,21 +46,97 @@ (let* ((name (buffer-name)) (buffer (current-buffer)) (group (or (ht-get jcs-tabs-line--group-cache buffer) - (car (funcall #'centaur-tabs-buffer-groups))))) + (funcall #'jcs-tabs-custom-buffer-groups)))) (jcs-tabs-clear-dead-buffers) (ht-set jcs-tabs-line--group-cache buffer group) `(,group))) (defun jcs-tabs-custom-buffer-groups () "Group tabs." - (let ((name (buffer-name))) - (cond ((cl-some (lambda (item) (equal item name)) - '("*snow*")) - "Screen Saver") - ((string-prefix-p "*cider" name) "Cider") - ((string-prefix-p "*sly" name) "Sly") - ((string-prefix-p "*esup" name) "ESUP") - ((string-match-p "lsp" name) "LSP-mode") - ((and (featurep 'buffer-menu-filter) - (diminish-buffer--filter name)) - "Hidden")))) + (let ((name (buffer-name)) + (buffer (current-buffer))) + (cond +;;; Project + ((when-let* ((project-name (centaur-tabs-project-name))) + project-name)) +;;; A + ((jcs-member name '("[*]openai" "[*]codegpt" "[*]ChatGPT" "[*]copilot" + "[*]google-gemini") + 'regex) + "AI") +;;; C + ((jcs-member name '("[*]company") 'regex) + "Completion") + ((jcs-member name '("[*]Flycheck" "[*]Flymake") 'regex) + "Checker") + ((jcs-member name '("*cider") 'prefix) + "Cider") +;;; D + ((derived-mode-p 'dired-mode) + "Dired") +;;; L + ((jcs-member name + '("[*]lsp-" "[*]LSP[ ]+" "[*]eglot" + "[*][a-zA-Z0-9]+[-]*ls" "[*][a-zA-Z0-9]+::stderr[*]" + "[*]clang-" "[*]clangd" + "[*]csharp[*]" + "[*]cogru" + "[*]cucumber" + "[*]dart" + "[*]perlnavigator" + "[*]lua-" + "[*]iph[*]" + "[*]rust-analyzer[*:]" + "[*]zig-") + 'regex) + "LSP") +;;; P + ((jcs-member name '("[*]CPU-Profiler-Report" + "[*]Memory-Profiler-Report" + "*esup") + 'regex) + "Profiler") +;;; N + ((jcs-member name '("[*]httpd[*]" + "[*]HTTP Response[*]") + 'regex) + "Network") +;;; O + ((jcs-member name '("*execrun" "*quickrun") 'regex) + "Output") + ((memq major-mode '( org-mode org-agenda-mode diary-mode)) + "OrgMode") +;;; S + ((derived-mode-p 'shell-mode 'eshell-mode) + "Shell") + ((member name '("*snow*")) + "Screen Saver") + ((jcs-member name '("*sly") 'prefix) + "Sly") +;;; T + ((jcs-member name '("[*]ert[*]" + "[*]indent-lint") + 'regex) + "Testing") + ((jcs-member name '("[*]tree-sitter" + "tree-sitter-tree:") + 'regex) + "Tree-sitter") +;;; V + ((jcs-member name '("[*]vc" + "[*]VC-history[*]" + "magit[-]*[[:ascii:]]*[:]") + 'regex) + "Version Control") +;;; Hidden + ((and (featurep 'buffer-menu-filter) + (diminish-buffer--filter name)) + "Hidden") +;;; Fallback Elisp + ((derived-mode-p 'emacs-lisp-mode) "Elisp") +;;; Fallback Emacs + ((string-equal "*" (substring name 0 1)) + "Emacs") +;;; Default + (t + (centaur-tabs-get-group-name buffer))))) From 184615af6b9cb55456fc50d353ca6c9131cc8bc3 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 21 Dec 2024 19:56:59 -0800 Subject: [PATCH 148/334] chore: Revert unused functions --- lisp/lib/jcs-util.el | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/lisp/lib/jcs-util.el b/lisp/lib/jcs-util.el index 9278e720..3123fdcb 100644 --- a/lisp/lib/jcs-util.el +++ b/lisp/lib/jcs-util.el @@ -380,6 +380,11 @@ TYPE is the return type; can be 'object or 'string." (setq is-comment-line t)) is-comment-line))) +(defun jcs-current-file-empty-p (&optional fn) + "Check if the FN an empty file." + (if fn (with-current-buffer fn (and (bobp) (eobp))) + (and (bobp) (eobp)))) + (defun jcs-infront-first-char-at-line-p (&optional pt) "Return non-nil if there is nothing infront of the right from the PT." (save-excursion @@ -584,6 +589,24 @@ If optional argument REVERSE is non-nil, LIST item and ELT argument." ;; (@* "String" ) ;; +(defun jcs-string-compare-p (regexp str type &optional ignore-case) + "Compare STR with REGEXP by TYPE. + +Argument TYPE can be on of the following symbol. + + * regex - uses function `string-match-p'. (default) + * strict - uses function `string='. + * prefix - uses function `string-prefix-p'. + * suffix - uses function `string-suffix-p'. + +Optional argument IGNORE-CASE is only uses when TYPE is either symbol `prefix' +or `suffix'." + (cl-case type + (`strict (string= regexp str)) + (`prefix (string-prefix-p regexp str ignore-case)) + (`suffix (string-suffix-p regexp str ignore-case)) + (t (ignore-errors (string-match-p regexp str))))) + (defun jcs-fill-n-char-seq (ch-seq n) "Fill CH-SEQ with N length." (when-let* ((ch-out ch-seq) (n (or n 1))) From a502ee445dcfa9d83eff262f9381897044e9c9fd Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 22 Dec 2024 10:54:15 -0800 Subject: [PATCH 149/334] feat(dired): Make list directories first in dired --- modules/emacs/dired/config.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/emacs/dired/config.el b/modules/emacs/dired/config.el index 30858745..c03056a7 100644 --- a/modules/emacs/dired/config.el +++ b/modules/emacs/dired/config.el @@ -1,5 +1,9 @@ ;;; emacs/dired/config.el -*- lexical-binding: t; -*- +;; XXX: Make list directories first! +(setq ls-lisp-dirs-first t + ls-lisp-use-insert-directory-program nil) + (use-package dired :hook (dired-mode . buffer-wrap-mode) :bind ( :map dired-mode-map From dabb288ae70ad827fa1e2723eebc33b40cabc00f Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 22 Dec 2024 10:56:20 -0800 Subject: [PATCH 150/334] Changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e89e1084..39af0b09 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * feat: Add `magit` entry functions (8f9686563559f7b209c289fe24e5d2a6ea9f7c15) * fix: Annoying `when-let` deprecation (1e4ca284a4e28d9f333fb3b6337dfdcbb1008a60) * fix: Annoying `if-let` deprecation (4a002dfb13987d967123e1a9c5ba8ed9c80d2fce) +* feat(dired): Make list directories first in `dired` (a502ee445dcfa9d83eff262f9381897044e9c9fd) ## 9.1.0 > Released Jun 19, 2024 From 1e9abaa83a231ef41df4f3ad9e0854c9dd551cd1 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 23 Dec 2024 17:48:30 -0800 Subject: [PATCH 151/334] feat: Add qob-mode --- lisp/jcs-package.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index e9d5c4fe..bcecc24a 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -396,6 +396,7 @@ purescript-mode python-mode qml-mode + qob-mode qss-mode qt-pro-mode quelpa-use-package From e024bb51d9892267b063571a2804deb4eee36af0 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Tue, 31 Dec 2024 11:37:55 -0800 Subject: [PATCH 152/334] feat: Covers more LSP buffers --- modules/emacs/buffer-menu/config.el | 2 +- modules/ui/tabs/config.el | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/emacs/buffer-menu/config.el b/modules/emacs/buffer-menu/config.el index 6d8ac804..27944126 100644 --- a/modules/emacs/buffer-menu/config.el +++ b/modules/emacs/buffer-menu/config.el @@ -30,7 +30,7 @@ "[*]timer" ;; `LSP' "[*]lsp-" "[*]LSP[ ]+" "[*]eglot" - "[*][a-zA-Z0-9]+[-]*ls" "[*][a-zA-Z0-9]+::stderr[*]" + "[*][[:ascii:]]*ls[*:]" "[*][[:ascii:]]+::stderr[*]" "[*]clang-" "[*]clangd" "[*]csharp[*]" "[*]cogru" diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index 9e573e70..c25d7e52 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -77,7 +77,7 @@ ;;; L ((jcs-member name '("[*]lsp-" "[*]LSP[ ]+" "[*]eglot" - "[*][a-zA-Z0-9]+[-]*ls" "[*][a-zA-Z0-9]+::stderr[*]" + "[*][[:ascii:]]*ls[*:]" "[*][[:ascii:]]+::stderr[*]" "[*]clang-" "[*]clangd" "[*]csharp[*]" "[*]cogru" From 6c9382d896a32d17b05031b8c2992d6d802d17b5 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 1 Jan 2025 00:21:27 -0800 Subject: [PATCH 153/334] Update copyright year --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 30cbae8d..93f7fbbc 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ BSD 2-Clause License -Copyright (c) 2015-2024, Jen-Chieh Shen +Copyright (c) 2015-2025, Jen-Chieh Shen All rights reserved. Redistribution and use in source and binary forms, with or without From 537dcd19618116f484df745e4848fa9ef6646855 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Thu, 23 Jan 2025 02:56:28 -0800 Subject: [PATCH 154/334] feat: Replace ltex with ltex-plus --- lisp/jcs-package.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index bcecc24a..c0631bb7 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -325,7 +325,7 @@ lsp-java lsp-julia lsp-latex - lsp-ltex + lsp-ltex-plus lsp-metals lsp-mssql lsp-p4 From 8884804318aedc51a2d648dd569efeedb4e86be0 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 29 Jan 2025 23:46:26 -0800 Subject: [PATCH 155/334] feat(ui): Configure ellsp and elsa --- modules/emacs/buffer-menu/config.el | 1 + modules/ui/tabs/config.el | 1 + 2 files changed, 2 insertions(+) diff --git a/modules/emacs/buffer-menu/config.el b/modules/emacs/buffer-menu/config.el index 27944126..e792bed4 100644 --- a/modules/emacs/buffer-menu/config.el +++ b/modules/emacs/buffer-menu/config.el @@ -36,6 +36,7 @@ "[*]cogru" "[*]cucumber" "[*]dart" + "[*]ellsp" "[*]elsa" "[*]perlnavigator" "[*]lua-" "[*]iph[*]" diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index c25d7e52..a268a7bc 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -83,6 +83,7 @@ "[*]cogru" "[*]cucumber" "[*]dart" + "[*]ellsp" "[*]elsa" "[*]perlnavigator" "[*]lua-" "[*]iph[*]" From 2f5b1e0a7ab45beebb605f29545974f28b0971c9 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Thu, 30 Jan 2025 22:24:08 -0800 Subject: [PATCH 156/334] fix: Diminish Completions buffer --- modules/emacs/buffer-menu/config.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/emacs/buffer-menu/config.el b/modules/emacs/buffer-menu/config.el index e792bed4..201f6b43 100644 --- a/modules/emacs/buffer-menu/config.el +++ b/modules/emacs/buffer-menu/config.el @@ -46,7 +46,7 @@ "[*]tcp-server-" "[*]Python" "[*]pyright[*]" "[*]tree-sitter" "tree-sitter-tree:" - "[*]company" + "[*]Completions[*]" "[*]company" "[*]eldoc" "[*]editorconfig" "[*]prettier" From 86d3b0339cac375e44614386433434797f75d675 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Thu, 30 Jan 2025 22:24:35 -0800 Subject: [PATCH 157/334] fix(ui): Rearrange Completions buffer in tab --- modules/ui/tabs/config.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index a268a7bc..6440fe45 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -65,7 +65,9 @@ 'regex) "AI") ;;; C - ((jcs-member name '("[*]company") 'regex) + ((jcs-member name '("[*]Completions[*]" + "[*]company") + 'regex) "Completion") ((jcs-member name '("[*]Flycheck" "[*]Flymake") 'regex) "Checker") From 5e587ed3f206639ddff7b6ce126fc6c8b3098b81 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 31 Jan 2025 13:03:59 -0800 Subject: [PATCH 158/334] fix: Delay loading on sideline --- lisp/jcs-module.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/jcs-module.el b/lisp/jcs-module.el index 26feb2f0..475c7daa 100644 --- a/lisp/jcs-module.el +++ b/lisp/jcs-module.el @@ -14,7 +14,7 @@ '(((arc-mode tar-mode) . "app/archive") (keypression . "app/keypression") (elfeed . "app/rss") - ((flycheck flymake) . ("checkers/syntax" "ui/sideline")) + ((flycheck flymake) . "checkers/syntax") (company . "completion/company") (vertico . "completion/vertico") (turbo-log . "editor/debug") @@ -75,6 +75,7 @@ (minimap . "ui/minimap") (lv . "ui/lv") ((popup pos-tip) . "ui/popup") + (sideline . "ui/sideline") (diff-hl . "ui/vc-gutter") (centaur-tabs . "ui/tabs") (quick-peek . "ui/quick-peek") From ebf0537358f3de9f8204f4421b4fef96e487c6d5 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 31 Jan 2025 13:04:12 -0800 Subject: [PATCH 159/334] feat: Enable sideline by default --- lisp/jcs-hook.el | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lisp/jcs-hook.el b/lisp/jcs-hook.el index 15d12ab8..0e8ce7ae 100755 --- a/lisp/jcs-hook.el +++ b/lisp/jcs-hook.el @@ -122,6 +122,10 @@ ;; (@* "Modes" ) ;; +(defun jcs-test () + (interactive) + (ic (featurep 'lsp-mode))) + (jcs-add-hook '(text-mode-hook prog-mode-hook conf-mode-hook) (alt-codes-mode 1) (auto-close-block-mode 1) @@ -135,6 +139,7 @@ (jcs-re-enable-mode-if-was-enabled #'highlight-indent-guides-mode)) (highlight-numbers-mode 1) (elenv-when-exec "prettier" nil (prettier-mode 1)) + (sideline-mode 1) (vs-edit-mode 1) (vsc-edit-mode 1) (vs-comment-return-mode 1) From 22cf79d571bfd9d1229ef91c0b3c5914f67a1f99 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 31 Jan 2025 13:04:25 -0800 Subject: [PATCH 160/334] feat: Configure sideline for lazy loading --- modules/ui/sideline/config.el | 59 +++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/modules/ui/sideline/config.el b/modules/ui/sideline/config.el index 32e6b489..9ab0b7a8 100644 --- a/modules/ui/sideline/config.el +++ b/modules/ui/sideline/config.el @@ -1,33 +1,46 @@ ;;; ui/sideline/config.el -*- lexical-binding: t; -*- (use-package sideline - :hook ((flycheck-mode . sideline-mode) - (flymake-mode . sideline-mode) - ;; Modes - (emacs-lisp-mode . (lambda () - (when (featurep 'eros) (sideline-mode 1)))) - (lisp-mode . (lambda () - (when (featurep 'sly) (sideline-mode 1)))) - (clojure-mode . (lambda () - (when (featurep 'cider) (sideline-mode 1)))) - (scheme-mode . (lambda () - (when (featurep 'geiser) (sideline-mode 1)))) - (racket-mode . (lambda () - (when (featurep 'racket-mode) (sideline-mode 1))))) + :hook ((flycheck-mode . sideline-mode) + (flymake-mode . sideline-mode)) :init (setq sideline-delay 0.2 sideline-backends-left `((sideline-load-cost . up) (sideline-color . up)) - sideline-backends-right `((sideline-lsp . up) - (sideline-eglot . up) - (sideline-flycheck . down) - (sideline-flymake . down) - (sideline-eros . down) - (sideline-cider . down) - (sideline-sly . down) - (sideline-geiser . down) - (sideline-racket . down) - (chatgpt-sideline . up)) + sideline-backends-right `(((when (featurep 'lsp-mode) + 'sideline-lsp) + . up) + ((when (featurep 'eglot) + 'sideline-eglot) + . up) + ;; XXX: Too slow on windows! + ((unless elenv-windows + 'sideline-blame) + . up) + ((when (featurep 'flycheck) + 'sideline-flycheck) + . down) + ((when (featurep 'flymake) + 'sideline-flymake) + . down) + ((when (featurep 'eros) + 'sideline-eros) + . down) + ((when (featurep 'cider) + 'sideline-cider) + . down) + ((when (featurep 'sly) + 'sideline-sly) + . down) + ((when (featurep 'geiser) + 'sideline-geiser) + . down) + ((when (featurep 'racket-mode) + 'sideline-racket) + . down) + ((when (featurep 'chatgpt) + 'chatgpt-sideline) + . up)) sideline-display-backend-name t sideline-display-backend-type 'inner sideline-truncate t)) From f2c23074429aa41696c053821f5e8415a6d2d7a9 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 31 Jan 2025 13:05:44 -0800 Subject: [PATCH 161/334] fix: Remove unused test code --- lisp/jcs-hook.el | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lisp/jcs-hook.el b/lisp/jcs-hook.el index 0e8ce7ae..829dc873 100755 --- a/lisp/jcs-hook.el +++ b/lisp/jcs-hook.el @@ -122,10 +122,6 @@ ;; (@* "Modes" ) ;; -(defun jcs-test () - (interactive) - (ic (featurep 'lsp-mode))) - (jcs-add-hook '(text-mode-hook prog-mode-hook conf-mode-hook) (alt-codes-mode 1) (auto-close-block-mode 1) From 115eaccc949c1db4b8f3d3346aa299af903e2846 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 31 Jan 2025 13:07:54 -0800 Subject: [PATCH 162/334] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 39af0b09..63ddecaa 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * fix: Annoying `when-let` deprecation (1e4ca284a4e28d9f333fb3b6337dfdcbb1008a60) * fix: Annoying `if-let` deprecation (4a002dfb13987d967123e1a9c5ba8ed9c80d2fce) * feat(dired): Make list directories first in `dired` (a502ee445dcfa9d83eff262f9381897044e9c9fd) +* feat(ui) Enable `sideline` by default (ebf0537358f3de9f8204f4421b4fef96e487c6d5) ## 9.1.0 > Released Jun 19, 2024 From f0b7f8391d72d0bd990a5f8e1528b7a422ab95bd Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 31 Jan 2025 13:08:02 -0800 Subject: [PATCH 163/334] chore: Fix toc --- README.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e57ba0fb..7e99a7f4 100755 --- a/README.md +++ b/README.md @@ -87,19 +87,20 @@ e.g. [Atom](https://atom.io/), [Brackets](http://brackets.io/), **Table of Contents** -- [📚 Philosophy](#📚-philosophy) -- [📰 News](#📰-news) -- [💾 Installation](#💾-installation) -- [🕒 Startup Time](#🕒-startup-time) -- [🏆 Features](#🏆-features) +- [📚 Philosophy](#-philosophy) +- [📰 News](#-news) +- [💾 Installation](#-installation) +- [🕒 Startup Time](#-startup-time) +- [🏆 Features](#-features) - [Highlight](#highlight) - [Details](#details) -- [📁 Package Archives](#📁-package-archives) -- [🏆 Powered by](#🏆-powered-by) +- [📁 Package Archives](#-package-archives) +- [🏆 Powered by](#-powered-by) - [Functionalities](#functionalities) -- [🧰 Write your own customization](#🧰-write-your-own-customization) -- [❓ FAQ](#❓-faq) -- [Contribute](#contribute) +- [🧰 Write your own customization](#-write-your-own-customization) +- [❓ FAQ](#-faq) +- [🛠️ Contribute](#-contribute) +- [⚜️ License](#-license) From e47a8d0e873001d769eb39c3e85de9fb0a591897 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 5 Feb 2025 23:49:06 -0800 Subject: [PATCH 164/334] feat: Add more magit extensions --- lisp/jcs-package.el | 2 ++ modules/tools/magit/config.el | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index c0631bb7..c90fed13 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -336,6 +336,8 @@ lsp-sonarlint lsp-sourcekit lsp-tailwindcss + magit-file-icons + magit-lfs magit-todos makefile-executor manage-minor-mode-table diff --git a/modules/tools/magit/config.el b/modules/tools/magit/config.el index 6b64f66c..d1d2ca0e 100644 --- a/modules/tools/magit/config.el +++ b/modules/tools/magit/config.el @@ -1,6 +1,7 @@ ;;; tools/magit/config.el -*- lexical-binding: t; -*- (require 'diff-hl) +(require 'magit-lfs) (use-package magit :hook (magit-post-refresh . jcs-diff-hl-update) @@ -19,6 +20,10 @@ '( magit-process-sentinel magit-commit-diff magit-run-git-async git-commit-save-message))) +(use-package magit-file-icons + :init + (magit-file-icons-mode 1)) + (use-package magit-todos :init (setq magit-todos-nice (if (executable-find "nice") t nil) From 785d436fec6d912aabf54c1519a4cd50210331cc Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 5 Feb 2025 23:50:10 -0800 Subject: [PATCH 165/334] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 63ddecaa..75ddf246 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * fix: Annoying `if-let` deprecation (4a002dfb13987d967123e1a9c5ba8ed9c80d2fce) * feat(dired): Make list directories first in `dired` (a502ee445dcfa9d83eff262f9381897044e9c9fd) * feat(ui) Enable `sideline` by default (ebf0537358f3de9f8204f4421b4fef96e487c6d5) +* feat(vc): Add more `magit` plugins (e47a8d0e873001d769eb39c3e85de9fb0a591897) ## 9.1.0 > Released Jun 19, 2024 From 2e71be81b8078b0708633676dda4d32a58e3cbb1 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Thu, 6 Feb 2025 16:46:59 -0800 Subject: [PATCH 166/334] feat: Add new package cargo-transient --- lisp/jcs-package.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index c90fed13..0880449c 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -73,6 +73,7 @@ calfw caml cargo-mode + cargo-transient cask-mode ccls centaur-tabs From 46b60c991df5ed2b5b7ea3666461e42781fcdfbe Mon Sep 17 00:00:00 2001 From: JenChieh Date: Thu, 6 Feb 2025 18:46:52 -0800 Subject: [PATCH 167/334] Add new package sideline-emoji --- lisp/jcs-package.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 0880449c..4dd9194e 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -423,6 +423,7 @@ sideline-cider sideline-color sideline-eglot + sideline-emoji sideline-eros sideline-flycheck sideline-flymake From 2642ad847a89e8bdbd60fbe816f275c6e16cf8d0 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Thu, 6 Feb 2025 18:47:03 -0800 Subject: [PATCH 168/334] chore: Configure sideline-emoji --- modules/ui/sideline/config.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/ui/sideline/config.el b/modules/ui/sideline/config.el index 9ab0b7a8..8f7f8c11 100644 --- a/modules/ui/sideline/config.el +++ b/modules/ui/sideline/config.el @@ -6,7 +6,8 @@ :init (setq sideline-delay 0.2 sideline-backends-left `((sideline-load-cost . up) - (sideline-color . up)) + (sideline-color . up) + (sideline-emoji . up)) sideline-backends-right `(((when (featurep 'lsp-mode) 'sideline-lsp) . up) From 45bad3084e20969801e9004c1f6461ec539993fe Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sat, 8 Feb 2025 19:15:54 -0800 Subject: [PATCH 169/334] chore: Add source priority --- Eask | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Eask b/Eask index e6e38799..00e7645a 100755 --- a/Eask +++ b/Eask @@ -20,6 +20,9 @@ (source 'melpa) (source 'jcs-elpa) +(source-priority 'melpa 5) +(source-priority 'jcs-elpa 10) + (depends-on "emacs" "29.1") (depends-on "pkg-dm") From 81d20e3b91aefaaeb3cf81324a933f8cba990537 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 9 Feb 2025 01:09:22 -0800 Subject: [PATCH 170/334] fix: Remove unused module --- lisp/jcs-module.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/jcs-module.el b/lisp/jcs-module.el index 475c7daa..3d414605 100644 --- a/lisp/jcs-module.el +++ b/lisp/jcs-module.el @@ -100,7 +100,6 @@ (cobol-mode . "lang/cobol") (coffee-mode . "lang/coffee") (sly . "lang/common-lisp") - (conf-mode . "lang/conf") (coq-mode . "lang/coq") (crystal-mode . "lang/crystal") (csharp-mode . "lang/csharp") From 4421ca7c1a20698c63a44ff54bf647deb16b4e16 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 9 Feb 2025 01:09:30 -0800 Subject: [PATCH 171/334] perf: Speed up load module --- lisp/lib/jcs-util.el | 51 +++++++++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/lisp/lib/jcs-util.el b/lisp/lib/jcs-util.el index 3123fdcb..1ec8011c 100644 --- a/lisp/lib/jcs-util.el +++ b/lisp/lib/jcs-util.el @@ -63,6 +63,26 @@ execution." ;; (@* "Module" ) ;; +(defmacro jcs-require (feature &optional filename noerror) + "Require FEATURE; it can be a list." + (declare (indent -1)) + `(cond ((listp ,feature) (dolist (module ,feature) (require module ,filename ,noerror))) + ((symbolp ,feature) (require ,feature ,filename ,noerror)) + (t (user-error "Unknown type to require %s" (type-of ,feature))))) + +(defmacro jcs-with-eval-after-load (files &rest body) + "Execute BODY after one of the FILES is loaded." + (declare (indent 1) (debug t)) + `(cond + ((listp ,files) (dolist (file ,files) (with-eval-after-load file ,@body))) + (t (with-eval-after-load ,files ,@body)))) + +(defun jcs-load (file) + "Faster load FILE function." + (with-temp-buffer + (ignore-errors (insert-file-contents file)) + (eval-buffer))) + (defvar jcs-module-history nil "History of the loaded modules.") @@ -77,8 +97,11 @@ execution." (defun jcs-module-reload-all () "Reload all modules." - (dolist (module jcs-module-history) - (load module t t))) + (interactive) + (with-temp-buffer + (dolist (module jcs-module-history) + (ignore-errors (insert-file-contents module))) + (eval-buffer))) (defun jcs-module-load (modules &optional force) "Load MODULES. @@ -86,25 +109,13 @@ execution." If FORCE is non-nil, force load the module even it has been loaded already." (if (listp modules) (dolist (module modules) (jcs-module-load module)) - (let ((config (jcs-module--path modules))) + (let ((config (jcs-module--path modules)) + (loaded (jcs-module-loaded-p modules))) (when (or force - (not (jcs-module-loaded-p modules))) - (push config jcs-module-history) - (load config t t))))) - -(defmacro jcs-require (feature &optional filename noerror) - "Require FEATURE; it can be a list." - (declare (indent -1)) - `(cond ((listp ,feature) (dolist (module ,feature) (require module ,filename ,noerror))) - ((symbolp ,feature) (require ,feature ,filename ,noerror)) - (t (user-error "Unknown type to require %s" (type-of ,feature))))) - -(defmacro jcs-with-eval-after-load (files &rest body) - "Execute BODY after one of the FILES is loaded." - (declare (indent 1) (debug t)) - `(cond - ((listp ,files) (dolist (file ,files) (with-eval-after-load file ,@body))) - (t (with-eval-after-load ,files ,@body)))) + (not loaded)) + (unless loaded + (push config jcs-module-history)) + (jcs-load config))))) ;; ;; (@* "Pass" ) From 198dd81d1f95e3b9d43244f4f6ab48061e5b99fd Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 9 Feb 2025 01:16:29 -0800 Subject: [PATCH 172/334] feat(lsp): new spinner --- modules/tools/lsp/config.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/tools/lsp/config.el b/modules/tools/lsp/config.el index e907e062..6fca5bc3 100644 --- a/modules/tools/lsp/config.el +++ b/modules/tools/lsp/config.el @@ -4,6 +4,8 @@ :init (setq lsp-auto-guess-root t lsp-keep-workspace-alive nil + lsp-client-packages nil + lsp-progress-spinner-type '3-line-clock ;; Disable features that have great potential to be slow. lsp-enable-folding nil lsp-enable-text-document-color nil From ca48b582954ad5be9a831fdc135e8251916f172b Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 9 Feb 2025 01:49:05 -0800 Subject: [PATCH 173/334] revert lsp client package list --- modules/tools/lsp/config.el | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/tools/lsp/config.el b/modules/tools/lsp/config.el index 6fca5bc3..43054815 100644 --- a/modules/tools/lsp/config.el +++ b/modules/tools/lsp/config.el @@ -4,7 +4,6 @@ :init (setq lsp-auto-guess-root t lsp-keep-workspace-alive nil - lsp-client-packages nil lsp-progress-spinner-type '3-line-clock ;; Disable features that have great potential to be slow. lsp-enable-folding nil From fdcddb59e7558346d3dfe80639e8d91f4d7f5890 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 9 Feb 2025 22:36:21 -0800 Subject: [PATCH 174/334] feat: Add lsp-smart-req --- lisp/jcs-hook.el | 1 + lisp/jcs-package.el | 1 + modules/tools/lsp/config.el | 11 ----------- 3 files changed, 2 insertions(+), 11 deletions(-) diff --git a/lisp/jcs-hook.el b/lisp/jcs-hook.el index 829dc873..97a54fca 100755 --- a/lisp/jcs-hook.el +++ b/lisp/jcs-hook.el @@ -84,6 +84,7 @@ (gcmh-mode 1) (global-goto-address-mode 1) (guard-lf-mode 1) + (lsp-smart-req-mode 1) (message-clean-mode 1) (minibuffer-depth-indicate-mode 1) (global-page-break-lines-mode 1) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 4dd9194e..12a13c83 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -334,6 +334,7 @@ lsp-pyright lsp-scheme lsp-shader + lsp-smart-req lsp-sonarlint lsp-sourcekit lsp-tailwindcss diff --git a/modules/tools/lsp/config.el b/modules/tools/lsp/config.el index 43054815..9458f845 100644 --- a/modules/tools/lsp/config.el +++ b/modules/tools/lsp/config.el @@ -29,17 +29,6 @@ lsp-find-implementation lsp-find-type-definition)) :config - ;; Let's not block the loading process, so lsp packages don't hamper with - ;; each another. - (jcs-advice-add 'lsp--require-packages :override - (when (and lsp-auto-configure (not lsp--client-packages-required)) - (seq-do (lambda (package) - ;; loading client is slow and `lsp' can be called repeatedly - (unless (featurep package) - (ignore-errors (require package nil t)))) - lsp-client-packages) - (setq lsp--client-packages-required t))) - ;; Don't log request error after the server has started (jcs-advice-ignore-errors 'lsp--on-idle) From 4bb0a37617d3d27e53fdbdae763e1e08af9cd03e Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 9 Feb 2025 22:40:45 -0800 Subject: [PATCH 175/334] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75ddf246..6f3b921d 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * feat(dired): Make list directories first in `dired` (a502ee445dcfa9d83eff262f9381897044e9c9fd) * feat(ui) Enable `sideline` by default (ebf0537358f3de9f8204f4421b4fef96e487c6d5) * feat(vc): Add more `magit` plugins (e47a8d0e873001d769eb39c3e85de9fb0a591897) +* perf(lsp): Add `lsp-smart-req` (fdcddb59e7558346d3dfe80639e8d91f4d7f5890) ## 9.1.0 > Released Jun 19, 2024 From b0e3efca7632731b6ba8eb4f49d4359d3d6e8ea8 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 10 Feb 2025 16:11:33 -0800 Subject: [PATCH 176/334] fix: Remove deprecated magit file icons package --- lisp/jcs-package.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 12a13c83..3d915205 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -338,7 +338,6 @@ lsp-sonarlint lsp-sourcekit lsp-tailwindcss - magit-file-icons magit-lfs magit-todos makefile-executor From 7d249ad694a58239d3247b673f8e15a92adc4a18 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 10 Feb 2025 16:11:45 -0800 Subject: [PATCH 177/334] feat: Use built-in magit file icons --- modules/tools/magit/config.el | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/modules/tools/magit/config.el b/modules/tools/magit/config.el index d1d2ca0e..e9be3610 100644 --- a/modules/tools/magit/config.el +++ b/modules/tools/magit/config.el @@ -14,16 +14,14 @@ magit-save-repository-buffers nil ;; Don't display parent/related refs in commit buffers; they are rarely ;; helpful and only add to runtime costs. - magit-revision-insert-related-refs nil) + magit-revision-insert-related-refs nil + ;; Display file icons + magit-format-file-function #'magit-format-file-nerd-icons) (message-clean-mode-add-echo-commands '( magit-process-sentinel magit-commit-diff magit-run-git-async git-commit-save-message))) -(use-package magit-file-icons - :init - (magit-file-icons-mode 1)) - (use-package magit-todos :init (setq magit-todos-nice (if (executable-find "nice") t nil) From 275c6cdbd6ea18a8e4530bffe77ad9cf4c949234 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 10 Feb 2025 16:15:11 -0800 Subject: [PATCH 178/334] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f3b921d..7e06d705 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * feat(ui) Enable `sideline` by default (ebf0537358f3de9f8204f4421b4fef96e487c6d5) * feat(vc): Add more `magit` plugins (e47a8d0e873001d769eb39c3e85de9fb0a591897) * perf(lsp): Add `lsp-smart-req` (fdcddb59e7558346d3dfe80639e8d91f4d7f5890) +* feat(vc): Use `magit` built-in functionalities to display file icons (7d249ad694a58239d3247b673f8e15a92adc4a18) ## 9.1.0 > Released Jun 19, 2024 From f25f25334390a52301b9d6af744f8171f2dad3cc Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 10 Feb 2025 18:05:25 -0800 Subject: [PATCH 179/334] chore: Update submodules --- dict | 2 +- snippets | 2 +- templates | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dict b/dict index e44a4857..6c7b4d0b 160000 --- a/dict +++ b/dict @@ -1 +1 @@ -Subproject commit e44a4857b3e9ae803619e9f1e5f6ba627155415e +Subproject commit 6c7b4d0b0fa37246df42f1dff7f3f30240092918 diff --git a/snippets b/snippets index ef135752..766f6682 160000 --- a/snippets +++ b/snippets @@ -1 +1 @@ -Subproject commit ef13575266e0a9893ebf8a9ad97c53cecb72b645 +Subproject commit 766f66820bc88057fb8891c333e06f784d74aecf diff --git a/templates b/templates index c688bf0a..3c86b31e 160000 --- a/templates +++ b/templates @@ -1 +1 @@ -Subproject commit c688bf0a15746e44dc3506b6ce56888544ea0dba +Subproject commit 3c86b31e6f7c6929e8745444b6b856afd56fd52b From e7a406121476f1889f52df1a0fc0b05d1da77249 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 10 Feb 2025 21:17:10 -0800 Subject: [PATCH 180/334] feat(ui): Add media tab group --- modules/ui/tabs/config.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index 6440fe45..7ab4cd71 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -135,6 +135,8 @@ ((and (featurep 'buffer-menu-filter) (diminish-buffer--filter name)) "Hidden") +;;; Media + ((memq major-mode '( image-mode)) "Media") ;;; Fallback Elisp ((derived-mode-p 'emacs-lisp-mode) "Elisp") ;;; Fallback Emacs From 5790aba18e6a173509b71cbcee333ba9c650bbf9 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 10 Feb 2025 21:17:25 -0800 Subject: [PATCH 181/334] feat(eval): Don't timeout on quickrun --- modules/tools/eval/config.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/tools/eval/config.el b/modules/tools/eval/config.el index 58477abd..40923651 100644 --- a/modules/tools/eval/config.el +++ b/modules/tools/eval/config.el @@ -15,4 +15,5 @@ (use-package quickrun :init (setq quickrun-focus-p nil - quickrun-truncate-lines nil)) + quickrun-truncate-lines nil + quickrun-timeout-seconds -1)) From 2422cc6306060eba4c37c3cff14e3037f46d77bc Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 10 Feb 2025 22:42:02 -0800 Subject: [PATCH 182/334] fix: input face data not string --- lisp/lib/jcs-util.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/lib/jcs-util.el b/lisp/lib/jcs-util.el index 1ec8011c..a0530f9f 100644 --- a/lisp/lib/jcs-util.el +++ b/lisp/lib/jcs-util.el @@ -497,9 +497,9 @@ TYPE is the return type; can be 'object or 'string." (let ((faces (jcs-get-current-point-face pos))) (cond ((listp faces) (if (listp in-face) - (cl-some (lambda (fc) (cl-position fc faces :test 'string=)) in-face) - (cl-position in-face faces :test 'string=))) - (t (string= in-face faces))))) + (cl-some (lambda (fc) (cl-position fc faces :test 'equal)) in-face) + (cl-position in-face faces :test 'equal))) + (t (equal in-face faces))))) ;; ;; (@* "Font" ) From 0ffdc56fcf177eb37be7a138d1b3c31a81490ff4 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 12 Feb 2025 23:40:04 -0800 Subject: [PATCH 183/334] feat(eval): Make quickrun act like compilation buffers --- modules/tools/eval/config.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/tools/eval/config.el b/modules/tools/eval/config.el index 40923651..caf17b4f 100644 --- a/modules/tools/eval/config.el +++ b/modules/tools/eval/config.el @@ -13,6 +13,9 @@ (message-clean-mode-add-echo-commands '( execrun-compile))) (use-package quickrun + :hook (quickrun--mode . (lambda (&rest _) + (setq buffer-face-mode-face '(:height 120)) + (buffer-face-mode 1))) :init (setq quickrun-focus-p nil quickrun-truncate-lines nil From 8cfd26afbe0df0b404c652f99c9024d790edd911 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 12 Feb 2025 23:46:50 -0800 Subject: [PATCH 184/334] refactor(compile): Extract smaller font size value for reused --- modules/emacs/compile/config.el | 12 ++++++++++-- modules/tools/eval/config.el | 3 ++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/modules/emacs/compile/config.el b/modules/emacs/compile/config.el index 8e65ce5d..d0dbc3b3 100644 --- a/modules/emacs/compile/config.el +++ b/modules/emacs/compile/config.el @@ -19,6 +19,14 @@ comint-scroll-to-bottom-on-input t comint-move-point-for-output t)) +;; +;; (@* "Functions" ) +;; + +(defun jcs-comint-buffer-face-height () + "Return the compilation's buffer face height value." + (- (face-attribute 'default :height) 40)) + ;; ;; (@* "Hook" ) ;; @@ -29,8 +37,8 @@ (buffer-disable-undo) (goto-address-mode 1) - ;; NOTE: Set smaller font. - (setq buffer-face-mode-face '(:height 120)) + ;; NOTE: Set smaller font size. + (setq buffer-face-mode-face `(:height ,(jcs-comint-buffer-face-height))) (buffer-face-mode) (jcs-key-local diff --git a/modules/tools/eval/config.el b/modules/tools/eval/config.el index caf17b4f..f0870a28 100644 --- a/modules/tools/eval/config.el +++ b/modules/tools/eval/config.el @@ -14,7 +14,8 @@ (use-package quickrun :hook (quickrun--mode . (lambda (&rest _) - (setq buffer-face-mode-face '(:height 120)) + ;; NOTE: Set smaller font size. + (setq buffer-face-mode-face `(:height ,(jcs-comint-buffer-face-height))) (buffer-face-mode 1))) :init (setq quickrun-focus-p nil From 7b78ec174febd511232b0703266c2a0ff7ed6b8c Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 19 Feb 2025 21:38:14 -0800 Subject: [PATCH 185/334] feat: format sideline changes --- modules/ui/sideline/config.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/ui/sideline/config.el b/modules/ui/sideline/config.el index 8f7f8c11..65f75b16 100644 --- a/modules/ui/sideline/config.el +++ b/modules/ui/sideline/config.el @@ -5,6 +5,8 @@ (flymake-mode . sideline-mode)) :init (setq sideline-delay 0.2 + sideline-format-left "%s" + sideline-format-right "%s" sideline-backends-left `((sideline-load-cost . up) (sideline-color . up) (sideline-emoji . up)) From da1cabc9e64453ea051178f4d90df27ac75371df Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 22 Feb 2025 10:28:10 -0800 Subject: [PATCH 186/334] feat: Autoload message-mode --- lisp/jcs-module.el | 91 +++++++++++++++++++++++----------------------- 1 file changed, 46 insertions(+), 45 deletions(-) diff --git a/lisp/jcs-module.el b/lisp/jcs-module.el index 3d414605..82618492 100644 --- a/lisp/jcs-module.el +++ b/lisp/jcs-module.el @@ -198,65 +198,66 @@ (append '( ;;; A - ("\\.agda'?\\'" . agda-mode) + ("\\.agda'?\\'" . agda-mode) ;;; B - ("\\.beancount'?\\'" . beancount-mode) + ("\\.beancount'?\\'" . beancount-mode) ;;; C - ("\\.hin'?\\'" . c++-mode) - ("\\.cin'?\\'" . c++-mode) - ("\\.cpp'?\\'" . c++-mode) - ("\\.hpp'?\\'" . c++-mode) - ("\\.inl'?\\'" . c++-mode) - ("\\.rdc'?\\'" . c++-mode) - ("\\.cc'?\\'" . c++-mode) - ("\\.c8'?\\'" . c++-mode) - ("\\.h'?\\'" . c++-mode) - ("\\.c'?\\'" . c++-mode) - ("\\.ml[iylp]?$" . caml-mode) - ("\\.cob\\'" . cobol-mode) - ("\\.cbl'?\\'" . cobol-mode) - ("\\.cpy\\'" . cobol-mode) + ("\\.hin'?\\'" . c++-mode) + ("\\.cin'?\\'" . c++-mode) + ("\\.cpp'?\\'" . c++-mode) + ("\\.hpp'?\\'" . c++-mode) + ("\\.inl'?\\'" . c++-mode) + ("\\.rdc'?\\'" . c++-mode) + ("\\.cc'?\\'" . c++-mode) + ("\\.c8'?\\'" . c++-mode) + ("\\.h'?\\'" . c++-mode) + ("\\.c'?\\'" . c++-mode) + ("\\.ml[iylp]?$" . caml-mode) + ("\\.cob\\'" . cobol-mode) + ("\\.cbl'?\\'" . cobol-mode) + ("\\.cpy\\'" . cobol-mode) ;;; E - ("\\.el'?\\'" . emacs-lisp-mode) + ("\\.el'?\\'" . emacs-lisp-mode) ;;; G - ("/\\..+ignore\\'" . gitignore-mode) + ("/\\..+ignore\\'" . gitignore-mode) ;;; J - ("\\.[cm]js'?\\'" . js-mode) - ("\\.json'?\\'" . json-mode) + ("\\.[cm]js'?\\'" . js-mode) + ("\\.json'?\\'" . json-mode) ;;; K - ("\\.ktm'?\\'" . kotlin-mode) - ("\\.kts'?\\'" . kotlin-mode) + ("\\.ktm'?\\'" . kotlin-mode) + ("\\.kts'?\\'" . kotlin-mode) ;;; L - ("\\.lisp'?\\'" . lisp-mode) + ("\\.lisp'?\\'" . lisp-mode) ;;; M - ("\\.asm'?\\'" . masm-mode) - ("\\.inc'?\\'" . masm-mode) + ("\\.asm'?\\'" . masm-mode) + ("\\.inc'?\\'" . masm-mode) + ("\\message-[0-9-]+'?\\'" . message-mode) ;;; N - ("\\.asm'?\\'" . nasm-mode) - ("\\.inc'?\\'" . nasm-mode) - ("\\.epub\\'" . nov-mode) + ("\\.asm'?\\'" . nasm-mode) + ("\\.inc'?\\'" . nasm-mode) + ("\\.epub\\'" . nov-mode) ;;; O - ("\\.dpk'?\\'" . opascal-mode) - ("\\.dpr'?\\'" . opascal-mode) - ("\\.cl'?\\'" . opencl-c-mode) + ("\\.dpk'?\\'" . opascal-mode) + ("\\.dpr'?\\'" . opascal-mode) + ("\\.cl'?\\'" . opencl-c-mode) ;;; R - ("\\.http'?\\'" . restclient-mode) + ("\\.http'?\\'" . restclient-mode) ;;; S - ("\\.sass'?\\'" . ssass-mode) - ("\\.shader'?\\'" . shader-mode) - ("\\.sln'?\\'" . sln-mode) + ("\\.sass'?\\'" . ssass-mode) + ("\\.shader'?\\'" . shader-mode) + ("\\.sln'?\\'" . sln-mode) ;;; V - ("\\.vue'?\\'" . web-mode) + ("\\.vue'?\\'" . web-mode) ;;; W - ("\\.erb\\'" . web-mode) - ("\\.mustache\\'" . web-mode) - ("\\.djhtml\\'" . web-mode) - ("\\.html?\\'" . web-mode) - ("\\.[agj]sp\\'" . web-mode) - ("\\.as[cp]x\\'" . web-mode) - ("\\.cshtml\\'" . web-mode) - ("\\.[Mm]aster\\'" . web-mode) - ("\\.svelte\\'" . web-mode)) + ("\\.erb\\'" . web-mode) + ("\\.mustache\\'" . web-mode) + ("\\.djhtml\\'" . web-mode) + ("\\.html?\\'" . web-mode) + ("\\.[agj]sp\\'" . web-mode) + ("\\.as[cp]x\\'" . web-mode) + ("\\.cshtml\\'" . web-mode) + ("\\.[Mm]aster\\'" . web-mode) + ("\\.svelte\\'" . web-mode)) auto-mode-alist)) (provide 'jcs-module) From e0ec5c24c7902f862d4793ffdf8fece6bb14076b Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 22 Feb 2025 10:28:29 -0800 Subject: [PATCH 187/334] feat(ui): Add tab group for mail --- modules/ui/tabs/config.el | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index 7ab4cd71..a072253b 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -79,7 +79,7 @@ ;;; L ((jcs-member name '("[*]lsp-" "[*]LSP[ ]+" "[*]eglot" - "[*][[:ascii:]]*ls[*:]" "[*][[:ascii:]]+::stderr[*]" + "[*][[:ascii:]]*ls[*:-]" "[*][[:ascii:]]+::stderr[*]" "[*]clang-" "[*]clangd" "[*]csharp[*]" "[*]cogru" @@ -93,12 +93,9 @@ "[*]zig-") 'regex) "LSP") -;;; P - ((jcs-member name '("[*]CPU-Profiler-Report" - "[*]Memory-Profiler-Report" - "*esup") - 'regex) - "Profiler") +;;; M + ((memq major-mode '( message-mode mu4e-compose-mode)) + "Mail") ;;; N ((jcs-member name '("[*]httpd[*]" "[*]HTTP Response[*]") @@ -109,6 +106,12 @@ "Output") ((memq major-mode '( org-mode org-agenda-mode diary-mode)) "OrgMode") +;;; P + ((jcs-member name '("[*]CPU-Profiler-Report" + "[*]Memory-Profiler-Report" + "*esup") + 'regex) + "Profiler") ;;; S ((derived-mode-p 'shell-mode 'eshell-mode) "Shell") From e8c5ce8d7f6c17cc90ca2c9cb498ea9323e709db Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 22 Feb 2025 10:29:03 -0800 Subject: [PATCH 188/334] feat(emacs): Diminish ltex-plus lsp's buffers --- modules/emacs/buffer-menu/config.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/emacs/buffer-menu/config.el b/modules/emacs/buffer-menu/config.el index 201f6b43..5a6ffd78 100644 --- a/modules/emacs/buffer-menu/config.el +++ b/modules/emacs/buffer-menu/config.el @@ -30,7 +30,7 @@ "[*]timer" ;; `LSP' "[*]lsp-" "[*]LSP[ ]+" "[*]eglot" - "[*][[:ascii:]]*ls[*:]" "[*][[:ascii:]]+::stderr[*]" + "[*][[:ascii:]]*ls[*:-]" "[*][[:ascii:]]+::stderr[*]" "[*]clang-" "[*]clangd" "[*]csharp[*]" "[*]cogru" From 833ef603beac5e83c49ecd345f893d1b56f1a76e Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sat, 22 Feb 2025 10:32:13 -0800 Subject: [PATCH 189/334] chore: Changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e06d705..e55b163c 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * feat(vc): Add more `magit` plugins (e47a8d0e873001d769eb39c3e85de9fb0a591897) * perf(lsp): Add `lsp-smart-req` (fdcddb59e7558346d3dfe80639e8d91f4d7f5890) * feat(vc): Use `magit` built-in functionalities to display file icons (7d249ad694a58239d3247b673f8e15a92adc4a18) +* feat(ui): Add mail tab group (e0ec5c24c7902f862d4793ffdf8fece6bb14076b) ## 9.1.0 > Released Jun 19, 2024 From 0d91061f3d1a213ab553c2ac466f89effe79f730 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sun, 23 Feb 2025 15:14:50 -0800 Subject: [PATCH 190/334] Update startup.yml --- .github/workflows/startup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/startup.yml b/.github/workflows/startup.yml index 9f6d31ed..d772b1f8 100644 --- a/.github/workflows/startup.yml +++ b/.github/workflows/startup.yml @@ -34,7 +34,7 @@ jobs: matrix: os: [ubuntu-latest, macos-latest, windows-latest] emacs-version: - - 29.4 + - 30.1 experimental: [false] include: - os: ubuntu-latest From b97b1ffd9f7f2f1409c69bcded30f5d00a9840d8 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sun, 23 Feb 2025 15:15:05 -0800 Subject: [PATCH 191/334] Update speed.yml --- .github/workflows/speed.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/speed.yml b/.github/workflows/speed.yml index 4cf140d7..59cc0b66 100644 --- a/.github/workflows/speed.yml +++ b/.github/workflows/speed.yml @@ -23,7 +23,7 @@ jobs: matrix: os: [ubuntu-latest, macos-latest, windows-latest] emacs-version: - - 29.4 + - 30.1 steps: - name: Checkout binaries repository uses: actions/checkout@v4 From efcde21ff9d787f6116891633b8db617672e087a Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sun, 23 Feb 2025 15:15:13 -0800 Subject: [PATCH 192/334] Update mode.yml --- .github/workflows/mode.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/mode.yml b/.github/workflows/mode.yml index 67ef0a98..e63a5f45 100644 --- a/.github/workflows/mode.yml +++ b/.github/workflows/mode.yml @@ -22,7 +22,7 @@ jobs: matrix: os: [ubuntu-latest, macos-latest, windows-latest] emacs-version: - - 29.4 + - 30.1 steps: - name: Checkout binaries repository uses: actions/checkout@v4 From 9880b76974bf38c4dde3c668145f8f6ed74dcd77 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sun, 23 Feb 2025 15:15:23 -0800 Subject: [PATCH 193/334] Update compile.yml --- .github/workflows/compile.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml index bcf14cd1..bdad5aa1 100644 --- a/.github/workflows/compile.yml +++ b/.github/workflows/compile.yml @@ -29,7 +29,7 @@ jobs: matrix: os: [ubuntu-latest] emacs-version: - - 29.4 + - 30.1 steps: - uses: jcs090218/setup-emacs@master with: From 3ffef3247b7fde732a11ac306ae5128253464c70 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sun, 23 Feb 2025 15:15:46 -0800 Subject: [PATCH 194/334] Update packages.yml --- .github/workflows/packages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/packages.yml b/.github/workflows/packages.yml index 84816ccc..6c25cff6 100644 --- a/.github/workflows/packages.yml +++ b/.github/workflows/packages.yml @@ -23,7 +23,7 @@ jobs: matrix: os: [ubuntu-latest, macos-latest, windows-latest] emacs-version: - - 29.4 + - 30.1 steps: - name: Checkout binaries repository uses: actions/checkout@v4 From f781f7e4c251fff9d8cf22a996aa408c44fe3d1d Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sun, 23 Feb 2025 15:16:09 -0800 Subject: [PATCH 195/334] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7e99a7f4..82a2562b 100755 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@

License -Emacs +Emacs Release Tag Packages

From 93bfcfd3338c27e4370b520092faa8800959128d Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 23 Feb 2025 15:25:01 -0800 Subject: [PATCH 196/334] feat: Remove which-key --- lisp/jcs-package.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 3d915205..8ff956bd 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -484,7 +484,6 @@ vue-mode wat-mode web-mode - which-key whitespace-cleanup-mode whole-line-or-region winum From d1dfaccc070d2db01fdc573a41ebf6f4ea3aaaba Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 23 Feb 2025 15:25:12 -0800 Subject: [PATCH 197/334] feat: Set minimum Emacs version to 30.1 --- init.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/init.el b/init.el index 885bfa41..6011ad25 100755 --- a/init.el +++ b/init.el @@ -33,8 +33,8 @@ ;; (@* "Startup" ) ;; -(when (version< emacs-version "29.1") - (error "This requires Emacs 29.1 and above!")) +(when (version< emacs-version "30.1") + (error "This requires Emacs 30.1 and above!")) (when (featurep 'esup-child) (setq gc-cons-threshold most-positive-fixnum)) From c8bf6fe8398aa1099ba890c00aff04cc8677470a Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sun, 23 Feb 2025 15:38:54 -0800 Subject: [PATCH 198/334] Update Eask --- Eask | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Eask b/Eask index 00e7645a..585d2218 100755 --- a/Eask +++ b/Eask @@ -23,7 +23,7 @@ (source-priority 'melpa 5) (source-priority 'jcs-elpa 10) -(depends-on "emacs" "29.1") +(depends-on "emacs" "30.1") (depends-on "pkg-dm") (depends-on "noflet") From e5be681ef0e02d97d1ffc8ecdd0c24dd13c50fe0 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 8 Mar 2025 02:13:39 -0800 Subject: [PATCH 199/334] feat: Add comint-fold --- lisp/jcs-package.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 8ff956bd..c966f65d 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -89,6 +89,7 @@ cogru colorful-mode com-css-sort + comint-fold command-log-mode common-lisp-snippets company-ansible From e901d40e7d741fc327d7c4c9de8781e837e215e9 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 8 Mar 2025 02:13:55 -0800 Subject: [PATCH 200/334] feat(term): Configure comint-mode --- modules/term/shell/config.el | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/term/shell/config.el b/modules/term/shell/config.el index 5919638a..9708d284 100644 --- a/modules/term/shell/config.el +++ b/modules/term/shell/config.el @@ -47,3 +47,8 @@ :config ;; Fix issue from https://github.com/kyagi/shell-pop-el/issues/51 (push (cons "\\*shell\\*" display-buffer--same-window-action) display-buffer-alist)) + +(use-package comint-fold + :init + (setq comint-fold-remap-tab nil) + (comint-fold-mode 1)) From e70540f54d2c38e580fbe0212f1ec9f27af3e147 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 8 Mar 2025 02:14:16 -0800 Subject: [PATCH 201/334] feat(key): Bind fold all keys from vs-edit --- lisp/jcs-key.el | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lisp/jcs-key.el b/lisp/jcs-key.el index bb32e5e0..1d19d217 100755 --- a/lisp/jcs-key.el +++ b/lisp/jcs-key.el @@ -128,10 +128,10 @@ ((kbd "C-k M-F") . jcs-project-find-file-other-window) ;;; Folding Settings - ((kbd "C-k C-0") . ts-fold-close-all) - ((kbd "C-k C-j") . ts-fold-open-all) - ((kbd "C-{") . vs-edit-close-node) - ((kbd "C-}") . vs-edit-open-node) + ((kbd "C-k C-0") . vs-edit-fold-close-all) + ((kbd "C-k C-j") . vs-edit-fold-open-all) + ((kbd "C-{") . vs-edit-fold-close) + ((kbd "C-}") . vs-edit-fold-open) ;;; Font ((kbd "C-k f") . menu-set-font) From 9982fa309d8f2856d6492088cc6194fe3ff7f20a Mon Sep 17 00:00:00 2001 From: JenChieh Date: Tue, 11 Mar 2025 14:48:56 -0700 Subject: [PATCH 202/334] feat(fold): Move handler to sideline package --- modules/editor/fold/config.el | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/editor/fold/config.el b/modules/editor/fold/config.el index add858f8..5199d4bd 100644 --- a/modules/editor/fold/config.el +++ b/modules/editor/fold/config.el @@ -3,7 +3,6 @@ (use-package ts-fold :hook (tree-sitter-after-on . ts-fold-line-comment-mode) :hook (tree-sitter-after-on . ts-fold-indicators-mode) - :hook (ts-fold-on-fold . sideline-render-this) :init (setq ts-fold-indicators-fringe 'left-fringe ts-fold-indicators-face-function From 8be88e73d1fe53e430c1d0e48a8ef9de5f832081 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 28 Mar 2025 20:04:54 -0700 Subject: [PATCH 203/334] feat: config startup msg --- modules/ui/dashboard/config.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ui/dashboard/config.el b/modules/ui/dashboard/config.el index 181f3b2a..85de17b4 100644 --- a/modules/ui/dashboard/config.el +++ b/modules/ui/dashboard/config.el @@ -181,7 +181,7 @@ (defun jcs-dashboard-init-info () "Initialize startup information for variable `dashboard-init-info'." (setq dashboard-init-info - (format "%s packages loaded in %0.1f seconds" + (format "%d packages installed; Emacs started in %0.1f seconds." (length package-activated-list) (string-to-number (emacs-init-time))))) From c787e7cb72d932d3ad6d8fc661f791f1e52f8230 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Fri, 28 Mar 2025 20:07:17 -0700 Subject: [PATCH 204/334] chore: update screenshots --- docs/etc/screenshot/startup-dark.png | Bin 99544 -> 83625 bytes docs/etc/screenshot/startup-light.png | Bin 93569 -> 79379 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/etc/screenshot/startup-dark.png b/docs/etc/screenshot/startup-dark.png index e311425fd9f46f6cf0270087a7b64e66a321c96a..24f57300dee60cdda9dc7c55ddba3391f363cc87 100644 GIT binary patch literal 83625 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 Vo?BJDQF44sPut*rv8L^-{{#M;0IC20 literal 99544 zcmZsDWk6JI*DgLP7$6ErN+=~#GIW=8gLF#B5JL`K>JZWm0s=#KcMH-vNY{*X4oEkg zjrzUM`<-+6v-dcA=3e(&*S*%YVhmJPl)`yH`Tzq114l;sjVcBP)<+DCJGbur1N=(? zrj-%~#`U$#8_~C}(_3@*JqZq5uXm@YpVNGN9N~L@?@okVtKEgluD@!ShKJDGB9VgX z>ID@v?94U2dfI*5T_AkC3$|KTJ^et4u;8f*(+jb?xR380M^fF9CUn>uyfAlhrmtvl z+>V^H7TSr=N=i;nK-m^wtR$hXIyo&zbFa)59|Lmy{*&e;BH{RZPo>ZezxDTi9WP!~ z?o%H+ibkdo|AA5rVQuhoO`@;=V)CXQEld34uQatFeapWOi+DUv7M0s0`=rI1{8qS7 zX{yIBOJAQtNlp!(*Ic$f83}7v2x!&_XsUKfbL-? z-ae(!9E#>U-q5df$+7KPt>SFpLccWFWN^Y4|K6OZj!z%Tdw3-*5WD{A@6uCi=GV^a z{dudo!d#r(B`4s+MITQU@8S1mu4mN^lm>gV{>(`xNJ?E^&-qz7qFH;#Ho343EM|(> zSGUa%$%M~b#ZBOBKb;zSdmo%1qCxLuQ9`%t1>7fuanXWh=BxDledBHqn;;r)l~x%6 zkIusxeXdTcndj=EO-Icg2`rEP$PwWb#OE@8bc!}m-P^Adp4HUdM?CZaSAar_o_T+7 zq(of@T#t4l>TUU+#)`V2xKEaLSF28Li!;j7E3NBleThf)jJP(^3Zq8W_FFDS=?|S0 zKA~FXzv+g;Hm3{s0^JsOh5Ju>1f(iLDEPLnHi;NYG;Otfx)#G{kD?2fC-xqqy9~|- zGE!}4@b0twJ zb>zZDbzzH|B0HG&ebao+v3LEU+-Vn2Yp76(Y3oLtpR%R)j+L^5dRES_ zWA9x@C)N1$7l%?#_hlcE;a4;tBuQ<02`x*x{V+tGHmDxcU)8?xCQn6L%DpTBAAj`P zvvTXKV_$t~6~pMAdG+NYTfk{Os3!LAtDdTIc{53;C|b9V$$R_Z;}fjzC*IK<+Qr>L z;X+KCNPPp9{;<9kY#oNAy|D5*)ds>pI$5fop!7J)3AVl5khY3PMJ+5`H(nxlt`=5( z+<&s=G+9UItPJjL#@s=C;(`qdBMxI)EA|=)>Ms@o{o^7tloA~juQwE&C`)GbYfu2B z7V&8FBna+=@2t&-ZrA8Fb#N88P%E;p#e46s=_?83zi$tUF-2Im7aqxK@KFi7E;1W# z&+eYcv9_Bc#9l64p6n}C34R(|=;$ik%cL!7$yV?k3z-yv#pT2~?G!g^q_6rw&ctvs zOnz**8^RLHbZlnIw*|MgUByx5dnFqi&3q18EZ;`+1KAaY`)K?%xIQK3SeZFuG83Km zkI8` z_j4*IMrLB(>Q!ELMn0#bE63BYn(G6zzWXgyvMfDg3;boR*Ks~ZCKn4a$o5_2wtU~PnwiZE%)*?84sOzTc~}A(MLW-C3JsbUpvY8AH%s943uh^+8W{p%(Pb; z>GD;!<%yzJ4T_9UGKW_w-LDeZm6CF^3wi^V%k>?5JUN%f#@Xoj$Fq^UB$cF$jJjF_ z&3&IrimmY`1EZY3Dz5*qC8O~0UB$d?{$1IKWq3S!udJU3O70G*h z@jky&%;Mjj-iy3ekE60J_NwBXZpyIn{h}fo^H`g=b5yjTieI8Aqq>|e;OkMY8e#6z z+_Y#}tl9e|ygzFBpce%pfhKk>Od1MgA7h8t{47sR=5uvDE_rm4Qg3yr*%0og$5JyB zyJPQhC!YT2292{NI9FHg!lziMtS`vTKLyV}pCOIQV(fj4rHkhBK3kK!-`ex=s!<+w zuWEySZ`D1u=oj}RT{XSm{lL|^A2v48%QWM>Gb$vld{3etRsYkfKGkRK)O<-s))ovo zX#APJqjLlcOR%h!b!NT*`7sJ~?>z;>1cH8<~_B`AD7~?`z{WD<>y5sSM|j^?hYdQGcT_ zW(fOQs=-mHt?*IHP>tEUA6N2XWs0N>@|)95$J!(3spp|-Qn=h#=nmHA=?R2q8_Ho8 zrMeUE8Abn-h2TL!xMzLYLX%?0UADd-K(P!NPXnMdxmHl8i!UrApd$s(4jc#XYWwX%$dq2G>J(5~yd-m`+l7M_RJV)RS{d ztI=Kf*m5`RMA&0U%XP_7U9f}MF?nIrHLlXstk-lJ^Qca4675xMh<QH|+bhao z&n1fX$vPkK*IkdUbjG#DW~rOw67w{UqMq@17iKxy8%%v*Id2x&>rMCJq_EUkc5kwO z<8@IULs84-mTQJtB;SOl*9?EAN+L`c;5>hXwX7Tv_?k89$f76#4-}Pk+3HB|i>w(VOg1j%$!oSZBTBWP&VG1I|`lBM%h5t7o z(_ft!>k@uncDS4<3I@oOp69qgwZlnUT|7(e;z~PF@c{f%sy(Pa@HSRRq41B#;G^R$ zeF1oSWua0$g_(rH;Z+giqj4|fMNgT!uA%`duT;dve!7e`#(EUMig1g?ITyr7*DNB` zq}jhA#q}-uo)}5oM5EA#_{Qk$RHn2Tw5{MWlP|l}=&Ps|<>#D7I8UzKo)dWGSFtlx zIFD_FPpdHauC1<5D9 zFwDRAnGgTX2lW3tALxfS#5)f`*`^cxB`NwohcK{2fb{Q(pfm%Td!bJ-;LM(@{3y3o z${o{s0*tMNBODo76f-f}9D^K-1p1=iM~Q&oupfGBxS8|p5uLz}jG$sKbT`s%Wg_>0 zoTf7E7WA61>T4-49Y>Qcg%aov(4HmyG z64edIM;x_$0e^#X1XhXvfSz-ew!E$jx6_IL6@I?y=XLHI?`&?f`3*B#_x1D;MuY%p z?G5o|inRE{PR>n!w}E6Hgh;{Ah__?hPq%6$ zRejDiUg+_Q5*u0{mSN5ZhWn~Z&3Mn4hHljzj%0ZJu~@u6c73h!k4#aCDhI1vx{)fm z`08#r)=HCm0DblOzPJ5y{WpB8f0D!k_dhe7%CWcv&`A#=#}A|vjn@*63mYyEVtcrs z^v6f%SD7k#sXaF#fugj7ZFpFZj*6TYJ8{V3N(>vgq2K9H3zrKEY`wlUJ1s8S0ikIg zp}a0{hhS57=Q#lYx_>-BB!NmngjcO^)2R>K-d{FVqNeeXjcUcNe^a~jwRU?5r>)+r zjnTs|Ij!Bz$miXz#XLhF@`=GlDI1h)&aQ(RhWUY`EJ>8;IGnfSbT!uN+x@ACI$S$mQ41F!YQiXsjcnQPY0lR&*>;{4t)q@MD5&j~8P;62}4u z*2uSuJ^Y5Y^}ozykY1Xone}ozIjP3O@)ff%4dZE)EQup7)rL z7MxkOnW4Jb56@wP;N2|_X;tL?vuWE0i=jE&*Q&L<`#*zsl3DwMpfTPHtZlEPHoH^! zvp+u(ZdpajB_D%r7SEMe7i?R>!nZ~Ctj!S1CUl{%7=yetTXH1Vf_)wE&(PhK%8TET zjTS`KD5CAx`c9=6g1E(}c1haod~+lRg?@Kk!qj{oJUY7=H?X(LP3p`}o?d+{DK)mK z+bR6au9Or6K40$7##C+`g<3Y zFX*E1WcT1_ zFzLv2;%*K#U(L;RZ?WqMP}GPPbdi5T?R|9-C5Oesf=5z`dE=S_n!ImLn(U*q*Bi!UE-ovzmrHi^;*PZjNhDH3uoR zyhaqlt;f$jr3T^2HU%8uO>Dk1xxz>a@iYc?^+iPzUAh>?@OW0n;M4qqCe})S7CI~! z>k^xnNgR2rt+>L4%*Dh4x!uR>ogv{q331qb4>#m6aWELnODHSRTy{5zcetHRZH~~M zIth&LovB$<;TdHa5(EDV?eX#z`h;kZ`_+ZC7nhhJjii2PBNLKI3mg1&7A1OHgpY=Y z0$MlQ|8k@Uj`rnAbDOEhA-55E7^g4Y1_39?u=A}Pzp=ay5?bI-j_V)w?~4@W%3dmY z7=C3fO{PW0B0Q>muX(!4YW2gdHkNlrYxD}#@VyNb(tTfk^*) zg>E?jF`CS%d0$P5l33fpwX?KWyQRrV)U{{NIMp_JLL+Zb$XxmQW28Ek@c!%^kCs}I zc_@Ey>M5}|m#<84mUo!0qQ`>DK44-D^4xD*Ef73OSV_sMt@Zr1Ch8}Vh`TkpJ71mH z-DoBl%z+Q1-!t!h>o%6*Zu!1o?m6li!|_pCaFk7~4l9xWrh0w;=?l*LET`;Fxi2=) z5^ait*kE2Wx&eZ(C|+DQvVA=7{~{L$GojOJ5K9*3p4NSWv6SE53FET7?b3hbSj=hk zsig|2F8Vl*x|C`}kg;#Pjh2)Km)kFPRVJj##|ksWNJv8NhsEb!X6fruyi%`S8_r;u zei{3&qBpa73P42U^i0i1YQK)}>B#%I<->-qR~*4^RUfOKZ0h0xfzRyz_Z)qX?GXjL;2Xj=*L5^)~9k3DNjX6 z*=Toqr&98oLRXQL#4WiU4&)A2Mr(-H)uB{=rw^r$6ZtM0g}L62=j8*sV)!|N2g3uq z1NR}AFuNpU0t4OTs~wiY0;l$vh5p4(yS^=A1k%zd30*%rUb{W?nhlQlv> z*$_sxdD5c#!v!OG?-!q7+?#EuiwXM{<(QkKm`%H6=}5?(%yJ z3w!Ac>E#IG_|{!!-0?F@PfncPKn&dn4dch-rV5+0+vJ2!rUF{|%j`%v7 z4g3~oxP!@P4>h_kBzv~#`am!)-ICMLcN)k~!`_%5mS|%{1Dapw?k}+{(z{zF@u>JT zaT_W?D;UaH6FaJlzXAq<{Wi#A&XaATRQ>6_Zmg)+h=`D8CC|U^!{_iLkBAhO;@z6f8y){%#O-(W zi$c3(S^&hTUh7wBwTyNV+C7W=@@Xo+q_w)7!+1qdP7DG!*F3^Ksz6q4jN8sFZPi6S zhkOww6YkG(UYxOIiML()6drv&f7hfJy0gS(;4#2nJx+~!9=_q$I6hG!|JgFtuVJ59 z??qb;Z8I#@tNQZ8pjXJ=C3Z%hN>Cr8BqPdlT;Q@Nmn`wr{kx%%euat~p_;wj#YGC6 z_*0Ux30eCRHhggxV}8qrF#XV_7ln$MSkD03oEdkCJzbA8s{(}I(GMz8OxhV+84C+R zt@v26B-R&SBtM6ChQDJMw@4q|)~aaY8x@J9S9+#Sh`h4=a6Xljh8&1I+_;XUDz-5F zQCO~yVzRnumxf?MPB_{yMVlSnEL`kL!>s6u>4xJkI*^tjHZs<;pYFD7=D9G^d_lhK z2x{oTlkZ%3Z3qA$&CRPQbN$ch9CE`Xw>%@*sMZe&pb56=K6|u%V!gSgf@@34#fhEB#AkK?Ql_OUVmQk(`D}@9 zUsWPe!yQ6IcE~xaapX&?)M}ebd$8&vA<4crJsnDReN}UKUZu3ZK2u{kn5Y~99{7fxV)JXNdO@am2H?! z<*(hHES+F(dHsp%Tz?MU`XKyxhv=$aX43I3*h^I@(9Yd(zV{tp#Y`_;!A3^jwlxOX zOP8TVjC#2q*xZ8`!VV5TOhgesm~#C?gjZj~9#zx3Q(SLV{7PNOm?F+CuC3La`iYn* zw|4IR%<&1I{91A5fhLcQ_-0`}8nkx#u`XCgM{4guSjRlq+O49}1W~1ivlKbsq&D&h zLqQjF)5cQe(gKq2j4!#OlaCOB@$%%451U>oOrKvQt5HWgqjgUEljntP9=bDBR6ogx zhXzcu6xbw}E?k_bRw?3ibP;BOEOq{zCA0Q^k8MZ`2^2lkQkUc8*^bcE?jnX#sZKWf zF_sVuN&}q8$6Qq@)%j=JPgHHMPJlQz(w6e`(g>lUdUY>6xUVZDj#Wq{rzRA8+Olc4 z#)oaa+QO@-Mx%r+W10^(e!fv$-z48BLPjcr6^YP#b_V(RXvTXm4O9N*Wa!kJvV=ly z>h{`Qld*n;Ts^haTZp!2o^cp=uqp{>f%O>o45={Nk1wL!_i7r)NCkDnJKk}_xEg5L zn(vNm+TjnpfN?eT;9;|a3vP6-Gd7{hXY+@(el@FY?`l3e6c%(d z9)i7BnyRkiJCrhqfG?{($U?D-aDco-5Sq0vjSzDsh zxz^eF+=i}R0<9sOL_Yh3D3O^WdaNHDZszhoz``+RdW6wU7$_L6T!J%e52Rb8AIf@7 z(Hvq2WWwwH@FLmRx0uPk9Gu?9nN|W|2nK}jN|MoIQB)UHdsmJHR_(YMpN-9zpb(kz zH%px%sg%G#XD-hd;*eX%JmsEr^Y6Q9(k`8sfd;<$^@Mb!u`@tS>@%5QD+#_B5k;zTqAov=93OESF?D8_j@+}**MKf| z0fEkiDeOgoDlI3WRNM3_`+cQU8aw`kA#rCiatchjL?D&lvjP zZgkHvOxco1pruW!VA4EdugFr@?k}xk=p#s^a4A;H{?iK^by>dqd~mJ|bamQ5y>2!q zj1XX<4YTC#w1Vev9e+Ld{RF~*B0uf2q}5o#cMBO)EgM&0nHm(Qf=wIaNuOG(VaDv> zI#I{tbg9EDVxfy5O;#d+h*EB_2ghd7Mu}pz969Ze-l|TK0jsY7x?yj%Ezvbf$y7E3kG)|imldu78XK!PeoNxw2gQ)x|_ zz){e@ne-KU1D=zkqLyD57W46aLXQM}mG9wVT!sockl%@Ba-ZvJgEd6!HiYWF{v*zN zZtV^JB3xI^DR;Ved}pFLn}0)x0Va8v(L&{w%Ji>WM6&0duAN+_1=pVsk1ze!Q1}cs zt#>T^7bDO&%mGg^-ATBybi_=SXnn0U13wFj6XvCPzVz+HEj@{c?FEFCj08GcxRF|T zDEm~fH{e|!lRqzek?r{FpfoklYr@P^t^&AQV&iZC(ZxbzH+ib_R>z%nLra|q%KTFK@cj5YwXqQj9kMI&oJ+LUz0qRFoGR`0{8RTae;9;sTLt2$fr|Gde zhwv}yk7@%c{jt=l`{7P;WI~Du|Fbwn#XB8T;k!{LneXVN_dJiD^E7sr4@A=F9Dk4Y z)o%KpI{JtrnQCA6b=8o<*1@mjn5odHF$Il?ykF6{C&ai%I-(i*-}xEwwJHWFFlc;56wi4$r8&YYugMkIBd7DvQy_YK1-i!s&X zDp0D*N3rDV;fyYkyt+`S)oSl5k;V0-jq0n-F2SU6ZvM)5m_=xrOch;S#(SKcVs3R8 zK0ZF%>p%7NQOy2sqLrHp#ou18;9`eZr>fMU{s zDlB7X$TkUQh7wQhVud9dUjvp(GOE_3gPu%tegx99wJ}G?6yC*f_)=8H!!+}ay!P^| z70wrgXwJ-Qd!8h!6<$64dETWt|bszC#l?&5^Ij1YIuNm#Y zC0cld^RLw*=+00wu4h^;J}rob<5~lgE=fVdW}vc@xqeN}H~jd%$I%0iJ86c7?~GG(r3n5MapY~Ozq|m-Q=_sn06~;! z)62R_kyd*s`GiuO?D>c7dkZFO2UWgzni_bhXIrX>HvEEb>O%}qNuXU2;gJubNrAQr znTJQrLjGK07;^@>HAa=Gx2W8T%S^iBpv*FsB-*DP`<0eS*g9OsvdGv9LA3#jyh1md z=MFk#=7{oU^@?mIe%p{Kudgd*!rkts2#knV4Bc>kyWg9Tzj@~4rC+eW)S*k*#M!Kv zsUQf9A^luaU0r?k(_jLNB!9+5inPl^$*j~jJMkJU5buTC4C?`p)91iRC9n=eOJqUO z+{ub#-^BLvc9EA#vHtHf&Oj2Jks))u11IJ%f`ehA1dHqR!$1{pppCI1+WX$~={SeK z)GJZI%^`)Gb)*AqPD%>FiM*95ZhvbI8JPtXW!I>>;UACuX1Hk>ynb&S`mC5iE!%ZA zMV=@lIqeAy`vpvL94LvxVN@{8X(Ag`1kH{3DVrhegLd~XWSv)udJhbtZegS9z9{Kv`Jz5Z$8ITwQ^E7#+$&*Flb z+U|YeQbxu4#xggqx{&aARMt7WTB=SnBc^Y3H{{^{_DG-&DsgK%=YCAkKDXBrgnvPG z2l1o3vk+fXh@K*Lvih?aW|72i0eM6)lLaPvklG{qoPC#cGO|4+$UJqHG#$M<4l|cS z=W(kt-!F*gneQM!laD3(^46onAZ9tu$}~QDwA5Z6E!2HmLJI16<@*-{3DjJRB+x|HNe0#(INu|e12eQ@UqDA)|y^*vbCNnBQNo$Rn=)k5%%w@ex(skMjQ-6imqc}(F z@dWGrt-RPzUf4=5$Gil}gkT{~FMvs!7fUV{{PP{dPFTz8gtGz%tgI76?ZgBct z%oOQwsglgroIBl~gZg@5|CFy!lPmc2t*9Gla(%luzuSE?liBu;PO53{XztsWVb+gZ zJ4=f!<}|7;2@VU{Ric68T8T8>%EFz z)IMc9@jH9Iz0jQ!RTF!rSL-Vmi)7F0XMg8kAg$c@ti~tw*c&u6Ro*YDtJ;vU=&W}V zQObk0jOLvYtQ4DqsVY<{8$>2<4VmuDObrIczEWE)k-J)5DGD)N4kMfUKi)Zm`0X?mbi@{PWXQI3PdSXyWLd_!eT-PsdNvPFQ`Ecm z&lMuE*88QcI{#L2-BGhbZ?=&kauB>esWE8zc7=kCn%FHDOD2j_)>Tf@*`DghF7F1s zd=?fM+dH^Bdp6%)UGAe-b%_k;-7~Q?tvkjqj?4gcS<7VXYkD}7k@H5HH{8{Dh3dR_ z)Oq-*C_+^TQ%pVq0$HVz9XnbrNiO5T<2QDy9>cbEJ5VuiChtFP9*#6=#u~6PU3CdM zjT#uD-ajNo8}4TeUN!qGm?Ct5U<7#2+q?;)IpG7laHs9DP=^Q01tU%ii0xIr33PoSEKw$!tNa=t7k?UDf28G{sjeobsq2f)te!4g~Rb zS+p?4^#nX*zSV6;jr(yP!t{3o=~3{C>q6$5)*& z#m&>Cx0sOn&``^ZI;bHIerleB+!T zVo^@o8%tE%gsRH8{0gYeI2gxlxric{})Wt?q7YB^1#ikv53D59u-#+&| zHeU}TOa&9t>~q{{hM>D_juiN>r~{Vz5h;pAq`N{<+~ni}>V>=qfk%|-yhxyJH;PW^ zg+rhoA#W5_J$c5CNGg9csO28j2;mnhoQVd+e@$o48UTT#LAo|F5En(rt^V+5bBny{ zB$aLnKx2Zktmi!=W>Y}aDm+U6?Uu=5D%bA~?_mACAnFa<`Py~_#NBcK&D6pmbPrMd(I0#=QFhi`EIX5Odx&!YurEY0G)0n`SqwaFR zO`MQkjV>FiQ`qQ@$S>pRhK~gO8#n0L*M6yC72Muwe19P?2FqKC8i32ehB|_-K+UUL zJ#BGgKT@W18xHP7Rej0P@spx{+I}eakB24ga|x2lvt}x3-S}Wb&$I?VwMfw%sP0sL ztLPS61nR$iWS}Y>~(#MT2u>&7$PGzL_>fLS~E?Nzy@f?U*_?VsUNPd zwz3quL%N?`xqTRiyCJ`#$`0Nyd)S|&Bg+FL)Pcc1BjU?rh4kzZ=&Auf12|RoLGf}DC{IJAF`+k;fJ4Dm9EUtjl~iJD6nZJsKMRD` z%=H=V2%%4UljmER%;3*iK7D?FqT5JU0&O^>s~WV9W$C;$$#YyaGv)o-++gKRwWD61 zeC6e-mB5L^=*RePPpqKUlczT>1WLcA`B|nQ@IXH7sbwzV1aoZIA@neLtC-1&NXn*^Y$KC7 z()$x3S^l5!mcs2R$2wN{l)EIV5@j4Wp`|^1_R*hj{u^1@aNr2Gj<&HETL=xqu%R5cmP1=s`Grk` z!%vG80Ybjw@i$IA^7(HWgw>c*%fanIR|p7A;l8a9zioLP}wDau^+8re3f zoX2}3AR+&v{UQ5WJGg7%wR=!xavlak)K^vid4g~;6MHHEtuUD0nX`$SN)k=!E#`_p;sb&{|3W|-$6d?&*jno=hZhn6MOJqD)9U5Z$PW~ zKR$({Jfd%Tn}0@Md!B`GsX;FNh>L!QqRf0O5+2s7;*HDIkSO*4Iz zs%FCKR$Yp*s9p$E5e;SG)%szHN&c;xe`YuW3I$rHRruYAKE!KT- zzm&zj?ASX%cx6i9#Iicm2cKMEDv~T{EEd49#W(b{Uh&ert-DYFTO@m-{DH z2)M0VI;!G~5)SH@8>6UkRDAI-i>}A!3;UgA41(6Y9UB*4=}A&cBr0*56GwCiG0N!G zye&`t7#C9)Fl0v*`>Nt$D{bM^?=YjdIw^VQ<5y3EtM>jgJo zaohfbjk?EGrl(?W89r}n$VuVz-BTC@?H~Gwf1KJ*ds=K4n(w#wpkdtr?@(bQ(ZrjU zBl4F!wRw=|3#?`^v*ad2YO^E40hg}PbhGH4okY2T(;7C=fPS-r6U!@La?v50q@AR9 zx_oH`yDvMq|5&U%N2&?+}e)*8`uL>mGvU)6T^x9Ba!Q#Zyw$vM0I+6ndN& z$&VS9P~`;%BBQc?Q|>4Uq~&#XI77{$}2Jfh5N zdY%F!H{{38Ctu_ZF_W9AvFiUl(dB}$ZC;igkBs(~mdBIUyRFzqutx!+P77y75d&ZF=ccq~qs31{X+LB{MpZ2y+K$?f4M#D*%B?}( z;d0pgM?q@lbz)*0sdgOKETwYAF;4WZ-H>R-RpZK`0;-nwK9lzPi&uq*eNQ#tYjTOL zRlz020*f@!@=YtjcD4ie9bxnE%a#|u&5)nWtg*g)7EN^foWedPpAMDnp6Pwgw)F3c z9c;8W8-KsRY4s+{In2fEK>K|&vU_CXA4YL0{ag%W+SBSm#L{NcFV3zdS+La(eLeCQ zE#HC3(m9SwfF9qVD8DYKj5aBLYVc`~UFbXxZLuCRg?jap^{FOgG{HDVbY?0lfzRPF z?B8Hfz`m9O6GZXPHT~uZOu|WdyYM3SHXSIXT0J;niKsp=!00iX)>4K2RIYZ74ZR!} zQHwzi*;M($eF7nMYN;;Vt|u*h*wJ)mNIv^bQu|ao{3&U)oSGL z)B;NOjQ2B;$p0;nL^J^n4J@e7?#|9#E?q2y7|`|n38`-V{B7m7^4f|a8<3&Tv5p43 zX^x^iEpKs7Ocv;N=vmS2acENHE+3S1{31%PO(hl;E@7V>t=qi*`_)iJh`wAt2%O|Iqa2`?t6e5d-by!pYkwUp*G2F6QZlHb>w`72CE=eB}W2Rg7JfA-LuRNr!;IIX*pdCtKBx zFGz}2c3!FuWt>%-A=ZWdmks6E*XGSv^%3fo?vK(mum<3v4LSk*SsLfMsl_WVfk~4< z-4<1@@l7c8rgh~VV6@W8wBnnjA#V*+#on9V@z-qb2V+OEq5(uF{;$1@t@`lt9EvwT z>=|{|kK<>CvV%p}u>=JV8bQF!7C`^$R^e!n)w$@5+u7Gs?KmVhU)>p<=YWg}CdA1M zaVMG2r@XfeTc@-h5Sa}|0_6*T_TLqgPV8wn3})zL8ILTEZIP3tuN?=Wl*K1*wDWHP z-wFWZ>v%`e`lBPk8ankrB|Dho)Ir?hSV zA**u=mJq|rNP8M%J5YdI;`o+Y3iiBxqCQ*a)r7}vmP!JwAc@IZo4G@PQi&eM1x#H~ zR8o`6X;27jsi9f;o{>DQe{22H={&Bc{d%f%*gaZl`Nd2l=l)zho$KpKH@dX57_K>> z#6_;TVy1yL0?v)Desern?bb+=Y__r)I;yF2Eor1wL^C-Ezgw{1t+A4_#!25p!$!L~ zCX|YB=&6=9gPKXJW1v6NA9!j%q3ewfe$5|VY^KU8`Q71vl))b2P$KHpIx+T*mZN!ZV7azzy-5?{bdHr3r zV`2h~JKf)=+H87g`)U~L-2+Q#|NLYx;W>L@aX!vkVe~t`%)8(a>PuUnIc^q_f?6R$Jnc`{G7#4=4V44bo70va@;$>T-P-SWf=nCT^d+*2u+#^1?Dz9086B6H@E5}C+d<&gjbo}yxLWYPfn^4? z=4)}2g$#a4&RhE#GfYD)K=9yv@hyhPAoai0uL+wE^tB*&W?;(m6<=*sbkkx^!`*?~ z2Z&Z68TjyDIeZrgoE7e<^6Qo{Uj|>Ik^~mf)-Ay|x!M`~_gJA?K;;SkUxc#kcfojF zwBlX*g$=P250vDg((%+{6^KjG~m-k@K+ zD1-tAG`W3F%|r+S({6pc_q$^9x9lXc@JZi)Zrk3Z3t0&s{+T8|<7C4~)SQ)Pf!-Jk zwrQ%`?tT*96}^skOC+xM->Nmof%sh6x1-PntQqDVr{C$e_7j*|=}h zfUa)7JTt53>A}1G(dTm0aDQd!dZVDE(ZDu4_%??2t4+{N1TlPk49xcCuT0b=4N2Xo zC<37EH$}aOS|d#KuAW`%U0{OS79~$aul-ROQ!o|Kvb>o-CNuWYg%SK<jd6U!^U)xwJRK8s|xF&{x2<{+g%jE>OGxTGAp za5$A;FwUKSHYZ99OO0*;AN|t3ja@&=c|ovq_fjvU18Dz5sQldtlT6fJBXZEs4-z*M zl+I)H?SmABTV{It3%_96-y*QXoD~wHxtk02bf%koulaue`lK7^LfsTsq;JVYy-|s| zh9r%hUS8e0joEmz5d7UAM{eG@2Y%~Y*wzqy`6=dj6VVBL(39|g?fs~0=lFPYV&`-< zl^$pxR>vokK;Pt9olv=qy;RD3d~*KqFE4{sKQq#h7bt_)hzvd1mProkoi+)Xw5SYME0|%5 zsLneWIpr)cMS|Z3Kl@WK5GkjTQN4O9F^qOz4Im&OfUf_bWo1=LNYvR2>h0~_ZrEuS zg<)pdm3Q;7c#cx4(CO)EUXh}SiHU-O0@Y)1@PK)e zUJ3wQr1K0!D(qQLzTGpCt~bBkh}>UfQK>`;*tn>usH6&c`M-S|Ld<6TW2t9Py{fjh zwzRY~w-ga=_FcQu5Rk4wqp1FDqhNDm1CY-2W`Yp|K*Zkqd&Iy(0Fr?^5KY`~V5?$?*cL@avJ!eERkDs#|UL2-Sr>Benbfr#~gfdA-# zN(v~Te7N1(nyg=}czWvPe#m#+xSuVb;IJ`SMmyKAy1Z=B#Xu;*_BcIrO!`CDVq{G| z=*xW)jt_-VazOHi@SJm+_-#ijb!_&v{T!u&^NomY4gfUd(JzBo;tMq0PESX&y-Wtb zwgO`o>p!yKa1n)6TA97`OF&>v>I?qV0a{)V#*GHR~Dg_7UddZJi=c>oxh zrz-ec0wR8oSWWTR9?p<*$^n*K`#>YJ=PJtXLV`-=cR|2Kr{8g3c()9#7VtxJ zj|xhh(bH9CeT1i|BHfztv9aN&(+p;6sSdpi+(_3&M4I^W1OVIe2fvm2^Tx+&;Y$o} z9xCSMC+;4Wq`Dy8yv~o*qY)xhb|=5)llfh)tS--RHA|39F18Q|L|hzp;Vmck@D}tR z8X1R%Iea>Ktwz_~U-RDq+?$f!oE(gAPk>7)RZw~tngV3nU39%mnG-@bQDvoR7O@~g z^>hE!85m5TwklyZY}RY$;^O2Ce7^VA?8758)o`gy4_t{KUD>c*541H!2>*5xZyL<( zQ8dfT%c1;-qqaWhGwjV*hfz^@%L70o8)#6Q3PyD67Ss(BH`1e=;_474>WFKJJhr{ z*yH_oKd)(mjO|s1XX_k&4i+hoH^%yw9b}@Q7bm+z!q*o)^r?DPmg<0Z7->dm2N-U2 z{0F$db-Wf$)3dlMFSy@N=5yNjgj(|D@G4+^l*dj}0EM^fezt;lOX>kHPk*~%`C_WK^5Qk^xmDL?YZ+k%IlL0$073k0!MZX=rjPbZinAa>;pA$fr}G#*wE5y zULNFJbGg{a)Y$CtA08g|#W8yvO__7sBAJxT2*QA1^}n=A6-Oh(5^uHCLyz)4M=vVz zGXuWJ+p#N*e8SM@vWwD39wXW2|58Ug@H54sO+Xv$whfm@qG=y_F1)V+&sW^I*PEC~ zS~8I|?bHL(U*uYNPyxu%?-v|C0k&PD@#rh5IOLy=7BkqsGxHBSkB_bym zyjS*>##YsB1TtBgR$o62@(1G3e?yNdC`uF{I}3Y#tbqG-x3{;adOX?aw(oU3cMSOJ z-jd`;n9M=O1_lN@$R7sO>cic!ckBf_AYAI;&Ss(G~{Yk~j${H3HcJOUJG-JI;^WD32wG;p(2LDrq z@{u9GH$C=wS`Z#N-4FwYd59J>JwEPoerSYb+JPf?c6Qc?DDwfp9)6At=vtNeZ5gC3 zS6n!?ODX8ImY3(hMobzGROEV)`| z*R8U#w6G9xTKm$FncLZ!yJ2RUSUZldQw-i5Ol7ZKi}HkTxWX3ofiZrQaANf5OO(C# ziyzhgdNgByIxa45NzFb`d3~U_1lq$rTd5 z&N`eWjsMpGOQXfRx(6TVG}Qt1J^<)$Jp$JAne2V;t<22K08OAM`(PdbxHb2)y+z-# z0siL8gZkdrPF!A-8qLm|gYb=k`m5tUz#!J1{s-i~M72JstEf0xvTtx46 zi9S>HR@?T)Q5(9=#H9)^P(G6cDBQQUKezrODFC-CoNE8ni=3Q%$*^)KI4`XXD$blG zf=|x37vFrfzSa}H9`H7^#&)ji4(Mt*Er|@-B|pWr4?Jg$c<0W5mG%aDxW~p0CM$LLUwla9rCOp{IuU3^n<_ zF2-+vehrJ3|AECv(ox4EX;FTDB1o&JURj)v1SUsU@Uix~x}s=2MbgB4F97SDaR)rw z6Z$vehe#iAGiVdXpZI!g*QDUz{&4tt&l_bFX98Kho?^KPlO|Rk8fFA zZ>i#cE$T^>4gON3-2cq))ec}d-A4Zz+sAR>fBt(pZ{!1x;91aL^yJ20`6Lw}RrTNd zbt9V!08|R8zsT8N{^IR*37p{9e-#mZ2L75!CMu>WpkA+7eu_PIw62Itu_ql^G3sb> zcKy0>Fm|KIkuk477}kg=uH8tgs}t&bAk-E95^YH3os@b5*MjL?Ks+FSv<%ih-&du33>nDo?&gRtB)%BPL z&h#DUgU;^V^q2ox&u@gvgrZbR;^N|tj-^*7+S=MB2938qy>fPTe)c9fA{G*>J#SY{ zz{OOe&lZ2IV-S9vb@duGwR_r29cRC=3s7N~-ychAweNP!@8GPM%qQ##qbvE+V{qv{ z-_l!`6v?8UHq<|tR(?R2cU-qNl@S6R&yrSlEHzd8u~F1Jd3cGEMFQQB%;MvtOL;+H4pVXUi)+#hnSEs=JS`#EyQKVBgPkI2AZGGDqqm0 z#ckR?IHDAtT|?kz@K-{oSQ9);UAf;~;&R^e3|qu6=7|vt3f*-hAt7>QVsMCw@)Dsk zE$A(onAh$(h<&qY#!3JlGczS}@?2ZuZ1hIN^)X_m=jR)oHx-fmaz5{h>s3QSL)ZO( z0L8lZ1|lc~%K+;J;Qm~cYVRfWT?WXsg@wgA6oZ6b`}O?%VBlmX{hJp9Z*TQHwP#MY z$C}{_u(RDMb`Z!==5_427V;yClX_*fHKDks1#vix1RK>-s?G^y$0DKaS3@0Y!aj&&_RLFX5Z|^*x^sPvmqwdGRfi0)0 z?51_8y*h5TtJb?)ZQ1{0pk4ntAE>a%sb7x{w8LhoZ*!$~N=X~1F8f^~$Ktsj zt4T&qu7LgZA$B}lyzV1Es3Wl0mD=W4xTlqbz2TyE)$i-GifKY#KTBtMyN$z2Glf5^ z$K@NRT1mX`CT9z>p#3<3g7 zPmoAmohtiETcd-zZ~4A589Oowf` z)9-(DyVi#OjS(t-5rNFCsBI<4#R5RkbuBIX$Ky6OhCr8l=*t6d3=~s=q!C&R1R7}o zgVpcXq5xv;JUh@9K)BNc9AET2(D5XGfy4UI0~jwr5U)eBs22e#KF2+wusZAc^CM4B zPflt9ueI(1$i-MzGsaiJwrKs=a5pJ%6L(#EvcwQ`*oHqfHN`wc6N91Tvzd;7T&;$L z+~4QEhfgVVvH~A!Znjc4QB~!_NfxnJRUO+HNJfD{z(+p)uaBe+G0sy=Z4xve94cw5 z1H={1qf8N3*ujDl2;PrrI#B_FTt2op59MsJS=sl2$Quxo?qS`sdZDMKH4Ow$etx%X zrRGORo!(>6FQp^smI6G15VCr~Et%_SJGVZ4^x;L$41wvE!11xM z9W-B$$Jv{&j?tGe!%|~OKxw!w;f@7N5I`wYE6}P_t;?7Z=c7jws?m(iOEAp&YD5VT zHA)0MwCuXLaRcB{*ZTnwkyrN_KK=goTmrqngx&{&yPd^GZ~0r()6+Fp6F-*bA(-5O zyo!3@jI@PNaj|DPpMkqFKJ%&y8}BonB{2NbtHMEIa4tE_Bv>z(q2c$a+aCLq2ZH_OBs8gxrj z`?^f1YceW{_n&NFefxJKn`?0*`zu2Tu)mur&V!Xx2ExYeUlJCxZZYpfyT1D@jSuJZROu0=vk2ubi_UbA#52KbwTP|2;6=F&;(%Zv#5#j zaW#E?->u<{wZ3M@)y^&|Z+XxA#{atuv4Dci!qRZqiVHa_ho0`w@zeF&T3XK37`3qj zdWAwVfBoxGWo*;mzu(hqSL>oRV`yl#HKN*oR}2dm-`)RuOp&3p^_7lAGR`Er;YNHP zM?H^W(n04)c;McbkzB>}2WPZE>nl^ZSL1PM_N5GMHWkqCGgC5DQ4INE-%!}f+M3#P zE%F-cdN8SNFvO)#(}%bl&ouu-W8c!!juk%TTAK~P9TMA2Nf7(-n&HLO0t}3}4iCB` zUjha3lAb`1u>m+S5s@1+<2Im~fx&qwoTk}oNQ7QRX_mAn9G8r2XE$O3klG6K^Gj=M zXJGi<(Q8pP`o(GVr(0vy5o?2UrOs0$brNjiDqhOC8E+<59RWRXj$QuMgLB<0FV~pt z_s`+-QXY4)Ze;}V*Tvjo(B%cO53P%+#csxu(8h!4zQtC@cCk(|C_#$f-D0NWbaIa( zt$2jg^|O;L{xF=E=C!lZ5egt_(Lg#rg}~viA?Bh4g0cp*)F_;U5pMjO|3wx;03sd_ z1!erOLN|Dtr+Atf8D+Tr@TtE96ohCcS5-({t#J?3bA^G^Qyau9f~9`VuS^z^vHcB#qN8*uR>~4Ghi@n(-nF9`kupIij+1ff^d&0-o7@>s2$TDrJSat>=%W;}z2W^Gb+=JKX{&eJeY|IA zTQ6Lthkg>KKrVJ^3}hXZC=mI&bF?*HXADJ!6gtX+{rhL_@h$8j!tMvxYS(NM>Nr>7 zJwH%*+u7pjX|9-dMeV*Q zSd;mh{ElptnxP?PQr8{@1QLtY_J*=5uXCd9r`S5o<x^5pHx=0T!BGP*WLmmUf3-D3j#2K5Rw4(g zm+XCVyE767vk`-}@1^3SRI+9wkYr29_Y1cX^G3QLZXWhK|z&@!7$rq(9;W?zTw7`y!au|?$tJJj_8BH?MLAh1(-|W0x;rt3E56W z-9mW%?dU&a$kA39!kwK}-(^gJ+pK?UvM8Bvi%_z(uI{3^{@_|mR~-fzgKQlkJ~f}q zSz!s(^9+!P@w#E-GWsJ;w{Z-$j(bDdukz$hKo?tWL_|cX!X(6QY%E*z+V>dNhsLLH zf;PJmUUg8HsHtT4ij1R<<_3880{{6=1OurHw2Z2H{t9Le1vS>l@n7Z?At*7;)f#9- zIpo|2MW*}!-|9Jgk>=27G8h?(Yu3+rppzMX`dIzB_#rPJ2IbF-aU4+EeMs3m)JHB{ zcKoAnQ%MkEEvb0_(c&8reun07AtcrR2? z&D{nm3|sQP%*<+`0Mw)#I{$?_xH3^9R70eyxmOnGD;WU$T@DIUy#P1`iNO2i*c;VU zb(6>aVKk-Q)x{(OiKt3aZmF*n3pv?pVU)Bo--UIWU68u$jfYnNFLt~)TBEA8zu4&V zRj8Wo9`V#MO89r(Jj40Zs>8kFAYPjAHBua*PBKrm*);8ahtDgsn*BEc<}`1 zY0tdL-zbp4!1JckeAdvbOX53YKIWcN zgf6{M9`JmHC5imyMPb@{qjA~nM~2C9DxY0ySo2XeznI=>cyrFo+Hwe;^|ee`0Jtx} z>Hg)#lo6w&g5_qYwI2n&-lwBx0~lyy{m1Z?J%m7$aCzE?XdAtI1b4Bfe%l3%s)S(0 z|2{~%agQxv#LBZKNRuJ`yX3&!&R>yf49i0qZ`)6@KrOCH4;LGwXFgQ$^-$A0p=!W=9`f8lP_5E8i3G1M*Md$7_0-%JB}Q;|Q( z*Dzh5cVi{EE9+fzdEsU|k=vLRZGEO_o@AD}N`Ox#=5*0s>YmZk%hIuldUBJD=f+h~ z#$V;aH=f?X12W73Mo<0viuCeF_XM4POcnNQV#>F*_`_ccc#K5R0(r1ut4iody6a`( zJ-aZbShImN-CEhoJtXqT`+&o%AKMKi7vuo0+-BocBh|-bNidIFpL{ zyzQ%^%%%?HqNmHVyyJ zB0f1ca=+aBK@P8;M;h$m@`mx!dKb+56kcA5xum`qHMZ{k5Q?^)7+q`EQcP1KqWt?h ze92@;l;`uEt$+!;a`E#Ip@oVjn!Hb~mVs3$*1!CUjdK53ydw$(aAdAzcd=^SX}KvB zwce=xN=Yvu861w`n_{?kw#uV`d*|w+@&^zr)_GAP=u0WTypT6qV=b6 zax)XyNl$7wOOA>!d~tO^w|b%J7*wf~=$o^baZWQbowsqg{L*UDnuai#mk@Qhy-PZl z*W`8a%~x{~{DZpGR?vK>hE5?#OW5-e3pyQ&;-jf3S^9FwKjcBfzhp#K!6xDS!`mBq zIrKxLfXeXMxXQ^YiG7}8^4U(0FIx~YDlilf?=VId*I~kq8&cvxZtO{>4ovr*^Uu#|6#@wW_)6PR0s;^>Q5f#fM90a z?ezx0RPPrn?;#t^!hCY&lk}=oV)uLp?f|A?1mbGTS6h6^@LtLln(LF10B78j9_3ow zWH&Udaxwa##h}SQb1YTZIB_lg9T>~FJs|+rHK|57NR}Hvx31FF6c7TyfFLW2NH7a znRIx&ifIBlHh1h_G~=9Xle>6)#1sni7n6*q3kKTGYQ(KdJw)g0vdbkFE!zh0SfGeF zH_S5AKvmQNK84ZA(#lNqmyzENzevi(88)6Yvv^`3Dfydy_A!`(&3%OuzlW_+P?2(j zCo{d{!<{V@n&#pZM$%{OzrCTMm@k?8WwiRC>g*`Er-09H?($M9mTMRHHrwA%?e}T& zishTWr&b!2LKg2E=~z29h>_5Eqs72L9IW%DCUDU=Y}>bql?Ccaf+k+ENp(hqDN4K+ z3oVSZgPm5LYmWPnEi1F8s0uFmEHbv4=EjV}eya1hn0XVp0qvpBoC;)6-V zoJLPH5%vxVSJa~xQP=|JHtiaFXJVN#=Lt5pcCa>MFNLw zl5YNJAPyCAxRHPiqa}nwpyFW4G;!OK28rM%xW|@fR4E&(QRM6f_ds*GXbh)xRhMwz zVVNex(*bEGTa0BJ{PN3TD?W%+9=Z7m&YmW!pbUklcZ)3LN07Pb>CGRn_bH``7t+bCou)xqkt&CMU4|+6(2yQD=glbPk-lBw;Ct98xSz$PkiXP-WMa&KYF}f==d_I z0(pRwAFH4|sWfr|*DRq|N=2@e9ymhwq@M;#IBa>v_Ok0&_w*E zPq7y&41W1U^KbR{_mlJ6i9pa-+-a{9NxZR0NJ!2~n9fQ{Q>3H&)`7gN&(TVNP7yk4 zwcMSKg=KGVraWQ$<_*t3yu^18@(Mcyb5OqSfOSvE1eGZ>VO4!?H{R^ew>ZKx2^qJA z5nI+qmilk~&G4Bw;Iq{hIzR0C7MhEW&K#a{I=O^-;RR$Wfl|K3#zfVbUN$WVSJBY7 z6TETrKhvu_;P>?h3)|0J1@U9b0kD+S(9qyKdng8Fk9^y$xAZbegDG}T+XesI)h(T( zGoYQKYOcJDjLh@qy`!%;4wwA@%0=9GPsn3&gCk?bc6e{(&1>*fcu}W9vMp>&Wm-7Q zX4p6~T`69%jb6U8(w(J292eQZW~*DV%jqyvV*SDpbTGEx_3342ug!jF88}wf88HH{ zB-fV_CxyKP%B#=~)WLjF3lK)1e{%qAD zC6^VPItVRP*Q}k&#BGk_6;tqwwN=d`B==<|LDl|ZHDoic|KtPDmVKf|0U(AS0F@Xc z={KLT15>_!Wu*f(Dffs>{3r1=-fxxJJ$%xoWHHhd-QM5u6HYdk?kYk4G*@c z+M6J=dMPnBe^q7@j!kJ{y6XW`J`7pMrJipbO;qQ*jqXh7^ zqsimOIsU6Z!20OG-|c6#0u}d4y`nx#p{)SatN*t-kHx}!i$=dij55&8sSYFHv3?u? z5ZV~+q%bnBpYS2k4`+(=FI<#DGNH|0wIc$6YF23f=}g0+>yQ(~g3OuH8Mlc(kqa5ajwSJ(AX z$WV7oBev~}89X5d1_t0$>s%}yc`a^y^!XbICi}B+IM}Uj*ajH)&@Wy&`kOVse)PFr zJ~K2{(rTpc`GXJ^$zqBWd;ccqU4op6kk5W`VZLSq_nchW2N-89A~jo{;}Ww%j(=+` z6)z$7R!QOuld4@7Z}V)u0G9Y;RKTBLW;0BFkDJ7S1NScKPwQC0yO<0s&Mrv)@EJo$#sTZhW( z*5gDW?KCprW0wbQ-9!K&!S37{^rgOt`;B&<_9LrkI_4@4cUypvtXrmVd7ixtXq4^!v$^cUtAShM43dYIQ%odS;0ZS-AADFTjr-$Y)bqRRyy zjB!5=d|or(OC)M8pR7|4Hu-e;By9Q_pO_=^2cEeiaP2t$yTE)x_ZPnlb~2Yi(=4Dl z?Y%#V&=H?SVysK=^m1yQOZm?-=BrwWCsc-k@DM1U1M;!nr(2^9lDheoc=5@Q^l_E` zu_+^5KQoZ`)vL(FmSwQZG;ju_G1=m{+>S82)Sz%Gduy0hjBd7CzCFmRX}fx$nmu*G ziZ|fveR2Q6S{uNFFkGL3>({?x0j5Q4Te`;)Pk-;unSU&bCXauH>kaP$_?B3axse^8 z%PXZNG1PwQ{Fhtd&or&Vq0Pefo!?{HwWuPXyFUZ?E%eFP9U2;Y2k??q8_h(;49~ZB zjT5qCzGl&*XMdWR7J|=Q#NBV>32l}EE-W4EPZJX$uV})!SuDQa>MmU`P}@AZ6VNQE z>CeX^#X^8bHJs(Xbo1e0&V8%l{KVb`X|}>7z>h}CMtxZ1B^*sZH8;ZYDU)2SWZw^02qoyda{m2`yZ@hMcNB|$2ePfLbDwcEp+D!be9m-I`WXmd zg0*-&KH8Uvp>VB-NqhB!hDr#&->EKdP>dlj64e4Jb=#l3P@hD^*g zQCuKKHe$SsXuzz}Km0ktr{p}+(2x6tIc=y5_g&H9Q5}tQVY#2;V?1rEkN0(WQ$o55gFShSMsfs3cCYR00uH}{ptGc{mq^RN)r?%pZBLV zPtR1U8EvwTVA~4B`={EpeqY`fLVd6`(H(~4JI~`^Y>!oo_iczac!sh44ovti4j1FG zFxNyd`1&_}1dQSx!=KM~21wmoWm8eT$zom2e5cdbXC(0+{*ww1pVw6W(4Y|d@OG8h zww(ap%C3-=0TuE67nLgk4`ACS7@(Yk;+~lGyE-^|Qa@e?@o)7a%dd}H!2fs@K8tYl zk*|t#IcapK%g(626|D*8XD_CKb|L*V&xFQUygn{0Z!l$bZ^vL*1vDQKWi?#!<^`GH zcXz|)NEPPfsf=ax&6@~2y@4jnCA#ZVt^MbzJ_DL%R`*>NyGB253-s0~Zdt`Wh9n1* z@eJI(({MmJ_cfLHJ>W($GTkAjxUl&;t#`a;LtD!`6*fJ7I;UiCtk&1X1zUJtgB6Yn zNjz0f3?0n5*tX^-q9!ZTXCODCF9TF!-s>9FolUobhAHEzeqzg zHck+-t@Hl({P}kWzjL?SJU9StlO_8j4i0G)cSciH%B#VPIXqX|h49F5C0Bd~`#9`h zx1vxe*dogYwygum5we*cEeT3&XZAyL1a)ioz1 z&={dOebj|+oa67|9&I}Ex)v#Dae=`CuU`znR=$6oYcZVCY+d%#w~ua>9_WF@&^HiG zW*PW|g81=oYKPs~96h|*5<|qIFOEQs2jO%&cPxaWw#Ewm0STbjNWq%6m*T5eMHgXM zuayJ!JkQ6G0p)q7*|gC>NvGnTG?s`#Dw(?3V2XCBtZUiF<>$Z@_AVq}i(^Q*I>WIPIvblHJA!nQ`IOZ3i!b=pEb zG7R5;1K{SbWB`|UJ(GX&mT$nRYeQ2j2n$b#Q*KPvwc+zURP^+BQj?$0%xO*$@p_k~ zL28i0&@2CfitAUkdCO(`%pK{jygf90Z;}^Im}ofz8(BAhXu`;AzfgG89;~V-8@o*K zInFq(;eMi^b!VtF!lEcQeMM&MYiii~p*TtyH9j%eL%Reg&Jic)`&ch9J6^2p`|A~m z9rojOY4$hW_-`>~8`YE$bSWzl zc^vx#9smL1zsne(Z@_r${~%JLUR2GGK^g=;Ptai474!J@@eJg`8LzY9tE5a;fd+F? zuyqY~)>-;{0o61G23^uDoa|d@fU%R5NVvgf5L3ZzmW(nG_Q1BshaPstiUUb}c4Ku4 zu~xkOtSsE+<9S1d+NCZ=Y93$E{Yxiw77qcdiQ)MJ8xyOaDj{}UKYwa)ZS1Y9g(%BT)&ePKV};QRYm z+7vsKlLrNS9YY|^J$KDbp-OAKryRe^U(+_dODG@BHSK2CYw|i?JLOtzb4|WOBUzU+Y@(22NRiO# z9%ag%x-TidSmClo;bC$fXDbs>2$j#-n&WF9`N8}B!xjETr(cXDbSo@3_f|Sd)~L4R z$G*N`W`4nBHPo`|U2Wg1(hXOD5=sgRP4`2&3oJvcUT}x%d57_mU2K>CPS1gh&7=!L zV0{}2GVO~7X_Ue)7W0JxS<&Thj5`Nl4NR4EV$Zh^+JewybnqJa2x`dId{$moXlOvd z9r17Xb1o*5f7{MMK;AnwcI%kH8v{Uy@i8j!zsccqRep=XpoL+dn?vO;`H^iw>LvP0 zR+g-s+}tib;}u^;FT-u;e@0FIK{Ve=?LUW*&?1 zrc$m41L*ddktT!GBwnk@AIb&A{hd+_gp6fs^h$=aS94Z61&dX-1wlbLlFDRZe5|6Z zjEu;Ex$0`WCExSkV3pSm8U;q0k?sU{+Bh}{9CzaetfumJf3LM};wFgTzRTx@wZ0re z!LG6{s~L*;Fp5Q(mXXOi^-#003;j?PXxI$BzqcHjy}n3Td+l^Dr1Gil)C`&edX1d(t1SK;s`@vM;#W=w?l z1tl$Un~BdPxl5-iqFoOrDiRIJLRa(K=nKYmSn^{bkL-y9=fU0GRKT3%i?iWgi} zU0q#XzDe*#Ua$3{vOs`GJx@v@PbKGNR@PEb5Irs32eS`b)Q#ut*OAnXcV&M>ZYR9t zCqdjhR5Q|#uwvi6Zwb8AC#J{}acr)#8@abSGcuWPk5eh}UJI-+g;yIK-r+30~nXuI*5dhP4t z2^9)dQt0j=MByJsaY|kxKFCS3*Mir)=5!CG^i-l{%}4wYWky;&?(k`E=;X4#Hqa2< zy`|Tt_YHDdc^w7)4^NWe-SRQb+r(&=IbT7xXa8Z(lC6dhp`ZTlftJAjXiTl(#nQuT zrbGM((`nN2p9H<<@ZQ3b2A!U(K9xdTiTQDSeaE(~dq?UY;_s5Nbfkz14Pm5@81N4X z*OwTSqS`@0rYD%oSBQ77eaqt#618PnU$?#-RaNACLm+7d;71czlr$eD7vZr`8Sx@9!M;Lg+I6o*y$I zVCIqT9mf(l_{YUMa>jOw4)==UWMviA3kb0?=AI021Rl%7ks@aUFEZXfBftrg3Qy!< zTU&pkU-ZTw9sf`B6vR)WCB8SudrHdXBi~`gi@YUn<1<>P0Qub1ME@AbV~<-^l2KL` zg%$dEDzTRwtN)mK7%oF0n6Bg_FFzQLEP=bG6()!}CTBrCRs43P{~q9%Or{G`OWAmM z*C{0OWr3sPUPKD)`JPPoh)2Lu)}5wR9|eByMZYEZ{H`0pu+Hby?hqbuS>Y(5La^Ec z=nQRqR>cOT^Q3K#O;;9sKkoW8hMpAD7_G|{%urp|3t1g4# z0_QbaABu;=L-7@5=6n3?`k4CtX)LkiJl+W*X$M(>VKyVhS?%*H`W`1+!JmKuEpyDK zElx8@;sR^6RZe`YU3xeKw`dn}ITwq9PVjwjOlLTjg1HeU7#-9WR)zwO_x^ z)W||dkv^-VXAY61%8`?PBW3;}+flH?js6~6%jyxNY4UX3^R$&ZsYyw) z$}!7|R+W2*Z)WzP2k~`~d+CCASp1hA-unH9yOh7fdL3Dt_*w2z9cI;mi;F9UiME3( zICFxGH)jHD6>vQ(<3DG0O72oSYA11VvVG``?<~ix@1I6^LZjr**N`~$a(C*-icW3I zh;Ka?;AXaC_tX=TWiH$>J-r>)OD(ry1|XA!p(U4oDuovWXII<8Fs}j4lDYGP0XZOZ z*zjP$;7$ZhGJoMrj&6x+JPi0A6B@a+BU=8kpE8Ldf`Eb;)u$ z7ezf688a7nBQaolXD=x;D_Pk$Z{FD0$OBh6U#F2$ky28V7xk;Gd4FJLwygZ2&ZPNc zZB^CKZ1dX!O2#jplulHF>dBKQq>p`%de@~9_SThms=)tX7)bytQHoX!cQZj<_$)O- z19DuS13!Y?$mk!{GhTm6`8apN>b~~vf#Ea0GN5`w?fZz!W)mm^RjZrdeZJQuGo}Va zFzdLt@5xPRmv4%Ad&I+QCFg!7duJO$!}Y!9YcOW0K;8>6bYgkNOjab8rkU-&eotRl zSDwbe?4;Y-UPc9BkqXnem8*(MSre|a%?Cb$;5ST_gm=$hlzv$|;vp;2i;PW4aoSp& zDbG`Emk!uxymzEZ|d{6+9c|klgH``-l6JRX! z!DcjfKsTIvHj7E%#ozIASkrEJZ+p+i^a&7fjW;$2{3(a@0Vy&TVHtj4;H0!P{eF{OJ3ay8(KGO_J_bk=;Eb88TUcw!%Kpj>qV_mH2Y{ z2&)OE>!hg9wa{`MUi~WxbF$CBrF1}M_Vi&(MuA72LW)opp#C1o5y!2K50+{RLpblow3bVot#Y4Gf2hq*FeORi`6GW+3#pr z_75hTtL@<$whXU-y1^Gg2w3mi@E(I(-a!FA$MqUv(qT}#$X-6!y!X!e^7(f}pyOyD z;%S-H^QGfL=K#r23fl)~q3ZyI<&OXaD5biHKH-iJCdRW0qu|eQs+_fA zb>5ke^>j9;>*yjpe%j{uke1*uX}m<(B(6CqPgCA!Wo4atC{3ui`z_|{x-yTg5nZB? zn^t@pYC1H>VngBW`Fy%(b+JKun5R`HI6Vl7pE`@!2X!~9Z6lORt@-V09X38#IlYjk zPAXqY^zGksvzdN10G?Usu$=z2C^pbMS8=&j3PLc95(MLK=8?`W%ot5p^x!2|dy`TS zb9fK-(IfC43vRxcG5txMZwffy>qg(kOPaJ_ zMK!rbKY!Wjp;0J%=+Tm~tZF{c2!RuHC6JQU+4L@Z)Cip&ELK`WZ)$MO)qKt-+U27L zHGp0U9&u|(E5{U+qe431*5lSM9tGE6B__m_8SM_HCQq3$5=!=${G|kSo?0uV@hz15 zxf?sp9{A!^+3G;!l2lGw2N&JkkN`v_3AlD1g}R4R&F8&U;Lv;QJ%JUk+gPUg{{8#J z`-}1R^QQ?zL&ukdnOO zLW45~Eh_xPWYO6bZ}JP#C{NqwlhiprN4e=iV2Qbtv}0 z%O2tZvOE3vDk|ND06po|t5>gW-ZUY?e9Pa^u;>qRGcpQ_u@!$4T=)kz7{+hWCLi27 zG)OfzFVAJy{n1X;TX$CQF_t)Y%D2Pr894D$jYCpyh){20CWCI`>1g^)m`>F)ZU;?7 zeBART$lhLfQSyt|hMYXMHgMOU(M7sqLo?-_)Hva~M-%$K-r951cY-7p(?l^XvD_3o zs>9Dhn@jW|C`GqP5Nf)#dC4Kaa-qmuNu$^RaXuKEX{a_>|G|vzY=2ZnQ5GZQ$;JD; z(*aAu-)<_mqwwP^a^cHlcPcC_tOi`L_TdvsQnvUH0(GR+0jyNlr;_lGQ`xkRT{L$` z-k}ytMpbROt0Gccks9=40UyMfozP`LyP@J4cRUyFWc0F(9&|h5&ybse~ z4gbn34tyl$@ox^(?y6hJV3z6B=5cPG-MASIT!#GOaVjl~pX>HjJubtUJ8JRvKV2`kbr ziJYEaadprdZtVb|BzwG9sTeByCAHsa?Wg!YWbg5@SX^?fT9%ur%ClPJ*7}ZNoJfOj z7}K%BFl@oh##BS%0U8rl`nnSn;_7$TS!v(zvVB& ztUfu~UmkDoelY8Mb%(rvp23Gz=vhr8E9N%RCEfuqEh#=PDP zXKpfY{Kyv9rNgN9xAmyM;+m+PnzA=X`=!SW={qk=BQkDt*Y_LX&oEtoqx74;Hf%Ge)B| zoRvHLg5a~APmRK03-xNux6(MS`fop{D|e?-1sXJqm{d4S+20k6#JIWdPZi85E%>Ug zk5_0r!xn4aIwS(Q#jj*y*=8s+y(q{fI$F?qqrvy+4ah(cvpYI~ov-e>e5`(u)0fLU zj-zC#L&m}Qk~N0`pPT2tH`~pKsUI?^{PJ6}u}2@+x#jY`o=~_Uk7Hj-KMZX01*&yQ zOP~Hdf|P9#mwwaHJ*JAh)dcjS*rHzVN|R+FPL`oD+t{#g&6J8DdwjJMz@|<-ZB+|o zNABOhUs2(%U*|QpJ{E*?cAh`gig^{Qm0&vB>zS*-^g&sAkra_HO$veKTY9 z?b40(GOY_e8A?OY`co;>bPZV+gQr|csdZFUIQ~;@c8gqYMs`cV43ERoUNLg^DKHrN>L|<^8w~cm7WPq z+pEX;U;Z9-)6S)vtPp4xE?!*BC{Xnf-T%Bt?y|Y!z`~jn%jCglzbHRI^njX6fR8S) z|1qcYsHjTBGqTI^G;+f3C%V8rbhp#J5i6p;LBpEi0w-6$XD>5X;|jHWcMiqEbYiPL z$W$z~-Q&d?>#8vsbN-vpx$~4{gF`QxTvtgyg#ra=QL1Cr2eX*D9n<@g8}zH}S>A-t zwVNuEBa~9nw{dX$O>s4C1#2P6Qn4Lrk~F{h?e!p?ED*$K8YAhkC{6^b)LD0}{{2IV z&4Jy$Fs}G7^j}YQ7pIi0XhRj=YB!k8m4f(w#NJnR(QW%0&UG*-frDo;cZ6e2?#(9t zjwdxL>f)rMz#l@@HJW-!c)t!k-D1DR5g1dr)POo{N{!K(X#f{__JLhp5pVm{_Joh8Lhhh} zin#W?!1qsE9jmElfeR2n-P(wi9c8k*!f?UJ6l(!?g?Pqw5%)6+Xy?G)v_mA&46^{z z=&(@()b(x1loCqn>T1iA^Irwo`S#~%j5r31_f0_sDZqF*`1L+)%t`7S7CWJ+wJ-I=%kCbJlWN%m+ny+2jA5xht7tdVs&T>ev zj?;Q{t73dj>7j8hF&gweNAPU zt!$kSCgTZn99FNZ5*-cPAigNt2;C*tid0-$*6X$Tx59Q?*cy&?a4dgvMuMX|R;S$Fb_pfp1!5>6Jwn<#+zE@P9 zc=@!UfY59_q8Pk;5z8X^={Cdk?T|OEpF|;KB38yuNyfv6BSs}@91nmTK0f()9(0K# zF|1LxsMZm&e3kx-pB?Iy07<)P!LT4!SukkWkn-{oyH?E}kd^Iaxf9f<#%6dCPus_& zR+PW~i2p#8QZ(CMR>fEx{z|Oy^W)mP@MwB$ zRZ1>ebC?(8;!PpQ6J){iOX)^@-#)NDq=Q;NKCItrC*k>$`@St(rJ{V#^v~7b;jVIJ zgrvC%IH_SH=oZlF5#L2H?&63O zI=u?X%ps2Y$Y>(uvQ0z=R6n>6O(#6{>oNg6Zx6UL=H9@Z3rG1+HHL}Jk_Dt~+iV`f zzSNq-W^X-mK9INI0k!Dl>ua3;CNJ7#R1bg(6}2cDJ&OIH zGq~*t8poTSM9lCNcS=orw!gF@<#fHU$Qn_!iK-`l6zgm4L-h_fw(lSC8To%B*3Z26i==xVY~D;?wNRqT5xs z5uR>Ey~FBq9BXpxqR6I$%X&Io*4(luRg>S@7v$#oMEL{pm5C=FxP!C3I%Up9fEob4DnL>$1p7I-;_oxC|HIyU#xu=#efhQ4tUkQ0W~+nv@7gNgzZ)L3-~c(nF09NJv7GcQb#T^UQP3m-G2O z`82-oqVkiWe2EH8$krVBRd&~lz(R&P@|bV&wlv( z`5#(d9c9i7o-i?i4rOi{q!g^Kpw|=PBw^7(nw`wDQ`b!qDlQ#%sE&GFrE1eEW`l;s zs66PxJD313##c{L8&cv#V$D82M&ELxj1IVJl8J`1Cq--$gV&5wLSuHHkgu)=!#-jR z@98%|xI$y9v{5KyIg`%Hdi+K^sNf?KHzRwqMk$e+eu`YI6TGE%+6Tknw z5o*Nk)8r-8(_TM^_;jxE^{a!_6L+LtozJI9zhiOL1z#z$1&Jdy4ZT46vY5f=z$5>A zK3TX(RRyVxT-Z<;N<@=xly#Bf zl`u!c^6l-olrg223+Hl5#%mu^1}d~e&VY=Igpwc_1sceoRBJWeM0?DCThCDi=wE-m zR(jT^^0ACE*3uK$_WG%cHz{sd5oTX-I}KN7*NYkK6qMM|Y(1q_W|OvfHuO+Q|Hq^| zS3o($`_@(&)WllO^I6Xam9syRQ?!cgDw_)m)?XnF4`yht|G7KPJiFiNAWg7Ky5X#R znmJ83rTlAi``L|gx=nUoZJHwVVU4hU_lF}HKLd3e0iQXe)blPP8L8m#;S1yqtKnsh*N=SsJL9 zabXZXb^yUh&AmikT3!(~&5ecqiBjZB2R$4NY^friDDcJcZr*xrrd>`;z@NAPqHJK` z_tw4Vsy+sF$rPG$9XeDrv!aI>%S;fp0GNlRMMXQwUx~y2$^aW2vvYG(2A%Gpy+bFb zCsq9Xg>yv!{AX}={96UIUqT`KZ61B*axWj~X*?3XbN@(_WKFjB@@vGf^6ir2Z+#Uo zmx))&rbK@mvBmcIafSVJ^Q1iSU%6`(V?rc4Fv|n&ha>8g}L|R zKpTGzjhhZ1%Pk5Nqto~P*$&!qO(?6;YQh0CU|Pn-yr#@0sK_nr}rth*Ul zuU_P0b?p1+mip9Qh*@`|KjAae3PW#M=9l9?qf>xk{ZRc;`{x%_y7OjmRzz7yDkS^P zXZRo{$(fp*r=ND+ z{#tom8{nOSCVyhIz564%@bGXx&@=|dd14GY^_^bP%MI!5l{)cEJ;c?FU(n9S@9u`S$5Z840EuL zH_4!{>^T+@>-@FcrscgO`#P0p!BJjQe+DVCp;cuw&U^5LxQKCM z3`6^8%}=dfdu5Dga8`k3-hJdH(~+Ptf(=K?r?Se@v$xXE==d?n3~T^d$BwNwc|f6)w$-C38c zO2&Mrw#8L@jbf&TjR+#b38cx(e*B?lkFA4XhhaoP;23pFYYmEMS`mnuT8b)*QlS+# zORtAw?IO6XL?dJ?DLhDF`9M-Gm)2Q^)i)|M0;j^RP zi>{%}ObS&!U#ckw(rAM+d~TLXT8=Wq!?9MU^o+=og{nb;0i68FS$$XT)o!X^fWD~B(o^P`ODgs>4|LT!OE37Pan#u zTZnk=>|=lB0-d5Rc9z82)*9hHtIWhkXsbtMXWR_%>88E@D=v# zKDYXTEhW^tU4ZwJaHV$&fapo#)|WdJLwXY=t(V~A%Ul`EnRV{tiqHkC=?rQdGCFhp@QL`Di25_rKCAMN zenyKfV3PWf^Je6W58iw%&@To@+_<>+)K-x06XfTH09j?U$nbU9aEmj7iZ0iyCid7? za)M~BJ3@98f%l`1x%+8^PD13x;_U~`IvTKc5hnx?gk^wpWbgK6A}6-5Ph=22f%crA zWCX00b~{z9et8x;=O*`O03TH;Jts%KH8;|q{B!o!dsR>qsr7$@9kmq8LS~*p1*OdO z+PB~7eOHVlDhI6Jaq^H1*uM;uw`@4+aO2Wna`HoTACSWuOm{rc&unOl7GO%z7>c*k zo6imVrdatU_2lf`AhI6Lcl7XkHV!9%;i-8d5y_x=C+A)T5aqf%cc*_g%^Wk_WY_98 z_Nl;P2UqHl47P+(4*O+d6b%kgZ^J6VeSnt-op>#+9${Ldx zpDYXt+0u)tl-F1(pb;)S(bq&Rq}@hpb0<%2M=uU8I zb-gy;QAzsSn+Y1()H2KOatcHJ6i349T+cf@9mRmXFYOQIygjwgXO}r+)rzdCwrr0R z`)l7m?1t{QH!-j(SM!wkw;g{*hG4?>UiJbtdI0)e8s{LNDZZc`+mvx)2Q5i^~-?#{)Q^&v46Z>_W`J)ylpZn=#$ptxh7stG%f63)(p9ETJ^P4 z2K{y!v1rjMOJ5uhh60jPba*&Ta||yVwk*fS`_Z2`!bm#N;3{GzkSIFyE zf*=QvuR{y!Bqk;KEq)D`SsDll32~Q86>sjkCMhD0(tc2S@7#%A{@d}ECHl>0-k#$C z)3f0fy7sP)T1Wo)Cb7)TA=LIg7LR6~lHTGd7VqO%!ye!F!F26fjCtwabGHn$O-NgT z0kpwHjQ6ku*k}y#%CopC3ARB zV^b3m#BIH~dOSQlU>E*tD|X)l0J9mXj@t9ST*zFLW4 z0tJ3*yxJzH&)$w@dFe002QgJbm}YONp|-(Yd;1IO257@88BJ2UF%qwm=N9vvPNtVP z)g?8*G4r%4nS@ZIetZwH(jp%y?_^H;1?zS=Q$LE{qhy;57V?0$tC=;G)Elx@4UaB0 zJU+0en0ftAJLLGdje}SKR7)_Uv$s>UbaL&niOIk@t&=6zVx}Lfq8JzKTcl<^(B?TU zzJHWY_9?xUmX(sKlBjyEopa(u;M3O-btk6}+BrHy0LxUk;$_x?K2z|%{^?@}Qe>Q@ z6(zdb$074NP8GE7hOngp6wYJzCAk52iH$9B_kU)kXD+>b+id&v=~LH{Pj7CWlZQTF zEm1&6Lf8C=Gg5Rxe4Fo@ZpC<(c1_E@`#X*$#i3rcS zd~F(5uAqLpy<;Ybx6?r0ZB3SQQkBu?n1T%DdPw$Me4mhNJEdH7!o zKQ!Fk+Uo3c{rZZ6_wySz9j1=SQ7>K$Rl1G>K-3`>pF>B5wf&oaws#xGqLa*op!i+E z?DFX9nURGeLx2)nD`z*?R=xFjTZf%3@jr)gemF}gB|W;1vaZ7h)WizM6&^7>wn<(Y z-GQgA4>@=sACP!MwP>`yto0TkAAk``Re+lzayS3;JjoM#T1?Ch04EA5cwM@1 zEuJL4e~IlU>Ob4(x3mupe*)bvIwwRwfa~lGPhw`b)58Z3O04T@5e=afBEDBT63s7P zDhqmI!G!7U3o&btm7)+V@qlcAL^qUiY*wRGQ$k9r(4;u|^t6*SxYuRa+u8=E$R=5d z(gU8%tbMrqK^l;a_-`&LDk$)ZDP6QP8R#!GO%O9%zaTd>#Lva{)9+tW;8Hg*Eb#i6 zfsam8tU;q^SHh+Bn!bHw0R9kIXF3Nbr^%&bp^=z<5vg3h07kuTr&Ly1c|l83N(z*o zu>hOfsIXrht-jpua9f$5pPySz z_w^E2H&{mIH+}sIa^{!JU-mXy3sn*{N=Sa@7hH5Ah=tYGutUQe3{?lVOB(6Snc=jgq8Ry{!2}|i4=axN^W+e-4eg9%V z-68oT`jup6n?C3V;*e_FXRE0y`~8Kj(777R8`uB3c0@XV*SURKsiD%+&+qR`I5%#E z!}uC+7PMBO`qKuNxGpSw@LaSM-fB~XD#LnnD=RC3RT>=;!T%4w}aG2Ov9=tb>+djqpy$)+n*dnw>rwsp%s)5D z7I1GbpQtDM4;36;ZqZ3IkR(OqH!TAOp|0VlC-ry$>&h_n{e%QS)MIL6hmX1d^hW>= zdr?0<@bj*{J1+{b;clh<0F!`?uXv0W$_@8c28~t%P~2!)d?0CuFk#UdwZH50k6zHo zc?$Fw9EvQlmDIj)Q9s%1t4&xM4a!;yQ{JAm@*OSqztvvyYNE`pH3eQbTpC1=S79vl z4?=|?0Di7JJIpcs_PHYh0s?@r2w&^xxd=tWYu6e@TwPIEvN^pF#dIXi^)=hWqHXa? z`#2P8dgLqS!E5P(G4A^3`(rNZ-)2bFob$s2as{vix?rHu#fr^wUn3!MI+i@*I9A=4 zZd5aFmtf^H;+VInsP9@$jg&>O=y*Jm#ZaLx=o^`~?c=$V*|Ft7vmm=z{S zn-*g2AlEN{ihAnSWo2cxL%@KyXkXyZov5c4UE>lK7?kH`;il zq7<21*>fFfl78zQ(~TUx-t9pNx)&4`6#)V>1_%qvSWm!h0R&-spOG_bTBVGna6vaw z;x7&b#f}Gn58A&x0ikS<3F!~5=nB=J_pdDt9AfrLFFZ2=&>VI2^e#8J55VLg_QoclBE;Uaqps=i(U3a{RS@yf-A15XYbZYXsm=MnmQj zqlLV>_EPZ3srOm{Gqn|{9A8!#XPhrkn2-u*A;i|?dEW^%5Yi6z>CQ0@z|$uXW_uY` zNP1O@HIf1Lf4d*b=m$G3TXNMTGp}xcft3GJah0_z90@op1Q9cDK(4WtJmS2tUoaQRnLVRApVfdnIRvQ59<;K;fWhrkbu(mrH4t>MjYh)nS zwLBHbW(}S(SA}D=!x5yg`3!xA4*;yzTa@aO_`ORUdFAC&ElMBVz-|-43d!TX_-MpN zHhrZE50IaH!Px+I1tt`gaO<48Ai?gTi9JIJ$u zr6{*V7eA;9pQxn{>MLFK#4#@DB^hFgz5tXTq?o3u_Cik+71I0s0Q4xNf&|!!>KFqS zDIhK?$jh)Mg{dep+N6rb>#Bh>T%NyHzv%L0_fAsdnM2q0;FkE=+}vD%x@nND5ef2% z;GOBq<(FEJJ z_V!v_n{UV(KJt$i-vgaMZM-Bd^ct~r83BIL;N|A;d2ZYU`+6MMyaLw##{kRJ`tf84 z2aoeWk(PiHPMWZs1*kRFHV2{l0zEr6^9?YX#v zjLb^isGDYIk|!+*hIoWye7N$$4G!iz12~=XU4tkK-z6@@BMOVE!Ush{D%6}~c0KrQ20{yMCFOy8 zQ{$AM5ob<`12-mBbkSp@Z+JLKp&&^LhL|}kH0)Y6{@^H}V@h$Oe&KSn{^S6lt7Z7S zeB?$<`UcrDRsYumOG-)r^bNC$ zMaJJ&VQhc{7L?DG$FeKj(JUqKE<iJfg}0o~uYiRGQj-^5*kow=w& zZT23tGVQ$M$aZGOR_u1{`uy`6VtWe&SLcp|A0Epzf>E9ZQ5ZFzo#U(qA;6b#8LW^S9aB01ZIaZK?BL)!_ z87LMl)<|Czfq3XdnrHnC1K6<}3DGL)w9OZ|w``1mj_`8ikKIpBBnDni|ZYJ$ue)||Jwchcl0Xp){a{hxoDJu0SuPlwmQ+**Ecc2Od|%)gR>h5*bek2*$6xM zt2+*g?X1b)$AbxoYWy2{U~Pal4{#v?JBnOyz9?R|H3huK-HbCF*U$fo19oZT+DZ<` z-dYB_2;CmVF=j5RpaDAjdqlO{%7`j`nY84$Rqmjnw1PVWycdXjcjWReTH zCFMDv{-}O`!0p7>w8?>D3nYCe1`s3EQR+aDG%sKz$42`{n`>8MZH(cu`*+$3c0y4= zp2wv!^#YrxJM2msPf1R$gpZQJU53%SIjBM&dYDq>;$F-~`>h!gmLPUm0m1N&sqt&M zoM$UktqEugK*Y8aK7ok20*#hW(slDAwae(MFs6|#N)Ba=1cD%oT^wD$zhkb+4~2!! zp!yE8TL#x6wII33^WaP1dQb@tInYQ%;HWG3`i3I0PUQNYjlVHVz^;CNl%v|DZ58hd zLX}d--eg!hbxpu`d$k}B)P=iBg93n5?g;UI-nWys`rAF0NE6cEHqY!_!@!~0yNY9( zikK>|&BVZQ44*R(L0Ec!=J)YoW83vRbYQ#A_FIwI{sKLLe_I(4F8;qi{Xa+`Qsj*s zU?m)^8)gL05|hZX4`Z6g3iA-G=s`ha%s0$hQ~R*DcUfJU&=wiTAZ0`)*NKuwyO-jL zOkbo_Wt3}xo7^h2u4YM~a4*I1m{@ZNQIQnIJ8Ca}w_8zBoJ!S!>Ek!+9jA%;B=cF7 zpz-#APIQ^P*`UcD|FlA+EE{|5uj82MKCAFBq-`XDJx%Us-(Uh+7gM2Vf5!dCTv)tY zvNd`733)tEr<)X_!0S~h$Gz@8c}xQzI2M4)7fIu`TKp&_kh-+pL1Aqz8i3&K@o#O2 zEc6c+i@98E015e|STBb2qY$m-eY_P~eNxwROrx>$Snra{*1n_w=4#9GgNY6!@!>$1 zPowzf#hk0NIs2fYsWp^zgA=VX?!N%*!XPHu)`5pjdLgs{y91E^pOi94zzpr|$M?3WQ#4 zw-A`B)zjLDf&>`d9Xx(%EQG?+JLYvL*e6ZK;r{F2kp%A`n+!p>Y}f)Ob+_7@N#;EsUtfEwf3~f!XG*9K@>u~P=rtZ3H)y@ZB(4rtdaYI;Ou%}tjJY?p zJ5qaS3VdGflf_8C_50Q^5W(91HVTb0PdF47+n-I<3r;YrkciFvdeZvtcp9f&Ff#?_ zX)Ifw=s$`pM&*shk3XXkzyJ5w`x7}ZA2XtiZVzp%bReY0Z!O(!4pxrH-r}_v>)u#a z`*Ufz((Yi!5_DWCanLN7ojvIvwUPOuL`dv}Y|_O;l>FeYGqmn4@D2>SmJef^qL(oK z|1Ct*JHaKm$8#8`@&0Ndt};|c50XQ{^YDNPvGTlHl8zm>ktvIyTJ!JiEY$YVO{Fm^ z9}@jKeUT%z3Q2~e z(p1vXp8LK1irWx-(2w)3I-ODe=cfJRBb(eTSZ@xEcn@SgRn7fn^c*bXc)fBq(VJH~ z+E-2+nO4QIs(qT4*Y12NLZrwUOdEc!Ei2&`kpEDwn!p(>hTXS0%Tz`G*UOG55Zda8 zR0L!ogR+C7LM(Co_+}Jlx0f5&-gFFAhc#WiEvSLAP%epr*bZ1C7xX=&N8&|(ENO^C zP41N_{zy187q`o$E3PrcHq2$irB}`Szx43OD|7qm-haI|uk>cuzy1e={SM*P%$6IQ z+HVK+|7`I8Q37fzx6awGdVbxwOb=YoHhM>nvOc(HuCm`ILC?C9CfypCEHQVh!nZM6*Lj*@JjTX!&Oh z&7?CWXy|=26<>v|_Ma84o9Tl7GL32(x{!5?yo|?$ug&hLisE~L4WiMgqe1KzXReZ- zJHr)(eT~c$pzDLa#Sxud;R~b=1Xz4;9H6JJ9 zwm%_HE~*LM#^CxPIpV}`(J0d3!>-?9Q&z%JY_OiEF>pluG1|FI8OEg`Xx(;2w!Pj8)4;+xfX31lWk#fujZMe>$AiRgE6%?aQC7SP z`f)zX5;hVhzp6pe&K>VGLn(u&-X!`COhs@Ok>j^iICp}GzXQrHzNFctjI?|6HKQh1 z>h5gtxP0Tm1TDxX;45=C`d9A`lKR=NZhjJCFx-u@jjNCWH@9UpXvxqNmUBuqOFPpx z$jic+K2wmS@*ub`69s)lSmX-}3Ra$}&*;pEW7sV%=0p&!O2z0Ym%|WBlHi-|RCR&nE(JqUojqZ80S>V|0)EANTb9y5OvNs9$jVa^H8jtu|SxrF&$8JSE~Ng|PwJ zxsUqRGCpy~bsaDYmmx46yVP4Yl4_84>J7zNBN)871YA1_QVQ|_8s@fA8KId2;h z{CT|=6P;9iY>-P?H z8#})k-8BqxI%T~`1I%2v6?*!)GqV+XY~y;b)NP)Z)U=-MCjoB5vMo$g_nez0#d8~j zJK{Z_yg<4w=f`~d4OQZQh1{IP@OEBDIz8|)9?P8G?bTPq&Y1e-`2ks_lMyw9@i&ge zoC@KynoWT+DmB#B+QqSb_+;7HXk3ky{ZnN3ZciWy?Oze{*FyBrwU;T?yyY3@OS#V1 z2yxwrtJ9|>iO8!`f5;;wy;nKt#ysZ_3%N!_y+2ny?*&_{hRl~}b?u8lTyZ~6zi)j( zO_N@PEa~trgAA%B2x?XI@_%Nx+HCB{$hh~miQJ?zF*4|w;>WE$rpvG;N(uwriS*L$ z#4_ExD`Xp?RACO<3z0(WcUx~(zj0uCWN|cCfe&zmz-UJ*V>U%NQj<9SFWpe~k}F=V z_@v$~?4u5gyU3p_)fL*w`1ts-yZ_-OG`E0^e2fuN3H#_ZdXi12lbWFtC3*Zx8rDR> z9OF9q6h3Tig8441GK8u3U)i3w$KyTUd#p{gSc}rfs+W4<=iL_H;1zyM6F@$DW5{eMcWjHsexA7WgL7V2QtGyg2p7QOm z57bG9pp9SIZV*J#e8{+qiOQtsF>nPZlWn|kTo4JI#nan!rlS%_nwbo1T{k#1`L}hh z4R!3Qs;z3ePk5KpyEH$`B{_Ja=BUM|?YFJjo_iFm?%EjmP_pJ!re0dki9tRD61FpN zL*fo5#Lscn+Bzm`QX9+SNLK{KYoY$f3yj7Qt{cH(%XxFfTC#-Y`fXi(=w`(HV&b`8 zcyz=oNc$p(|KdiH!G@)C&T#^E+f7BfaPj<0dDJ@bhD`XBQePa1}NYp5#7i;Nx@CDoL8RzLeJ-uh)>m8bZt+y--zf@bTm~0~I?$QGq66iO9{LoHWAU z@0rXol-Zl17&K8k)u`~Alv&t0bqVndI{f@~y=6qTip-v&%yOM?4{=m)8NzACT$5$a z*tw*wq&ddFjIWcDm1v=fi?AQ(y}laQkpabs?8h1B%jGVZy3Ag^Tu!(zDe^+6Qj{yr zpx=x?W=UXulz6^mW6hb7nsqQE9qDmDvX?)ZU7%ml;lbjDU-|mE?Rwj=aihDy?-TUXmu#!wP`7=rxketjuQNHaA5qbW(R+~xU=ICd-2z}eVM3>ps|l{ z+Jxw73+de3lzv!uNS%VA6&ghEZBdUqK|P_~!&`NMS;@IvygxE)vldsMQAVp9U6U=L zofoF2-^I9#YtT8GWpPNy|J)o=ueqcBi+r7E*<>j=nVwCU42XzVYdle+omFlhj8MYG zdao803{Q;LIk_Xe=W7=^6h^fu@>8U|j3Mlq8m#NLvbOckZS(Hq-9;{1(Ickgh$V0J zu&Y6USxwMn!?tpOTr;rQ^yP8DH_R}E+*dAA4Vt$#6p9c^ctDWnFA1FJK; zN-qlZmF#_4GgzJ{#(WrJ*X^BdKPPD~WS=gX0xBqYtteoQQ4E+ z3{6q=b84seL|0u9rWqMIcKb$m>apJSoFQ!Ii1>NjUkmSJx^cH>by$s7a+~5GxswYG z8Nih_axi6a_k<}rv#Y$}SAB|Poaz{)qZJbbn^?`K#iLwD8m3;Y<2an zW5)}fEkgz6IWXOBdN~iBq2BbxIId!+pb{C#Y~Y--QC?@V)xDbWJT?Kxu3?HV*P;D% zKF}}j^iMG6FWtU=#z^v9mPfFd(s9>({Y$I-^fFG2*P$D+LD#0Emms~#39??Jf=1=e zH>=hUjlVwFACL#0He6{Gy={Vc>3@E<^Zs(Xx^M~ljrQEFhCV5(DVX|Vzz5<%VM{;!Ep(hBkZq1G-1yVw{BA34A1zfSAm zmg<%uHOy(DZzPYERXX>NH>X2N|1zxF{y@sotO@;jB@`aqYSoZ$6kJj|N~?=8j&d6K zQXuZP$Y?f2^jCP?!j&-Gwh%0vz3+deGeWDrex1|jw|L=yx!EOnV*Yu2Fj+4a7vMTS zt|HRuLr;~UWd`-8ICo)H)(;P6?!CdlHy=ouugk{{`P_4O9`Hw>*01pN(8KWX_6&t$ zzl1jb9+hoL>RjQtj&`rOK+0AFBu%_>e&A*&xIA@~%)^(qg93afTf}^WW=*Z8Io+ZV z{aLD%_3ttS|ER1wqU|@=Ug&1YMYs+;J#lCwyx06ff7QyP?tPSf`M*8i$&v$7($;8{ z=Pc2=YPwCb=dFE$tF;B9pGulP0^VYRJl@#MN!s<+!u&7-bnfZWex^vgDD@W5phwb{V+xh(5>zmXXHO>`$CfbfV?Qu%&^nyUgNIAZU#9Pj^h_iB|mIO z79)_()`h$jz%8tG|N8G}Xi_-;i#m0}H1R~*E$N`C?RYI`#Z{)6sm~inEQbOKJ*y)6 zG7fD}fBx;b(T9iD?UB1KgI*^#texw;8rAQhG1*d3pHvo5_|r+!Ld7%TjBt?5%&uUN z%i5kF@GYK-{vZyE#aEKU!9prl5wFXLw#C`Pey~-3*?#K)YX;K<_tsz&?$S@UV3_yU z;)1qs@80wKW^%}MSh~{ANRk)o&ahXll*D=C$?wiLj#E+G9GJ%ya~GprlkQHw30ze&L@@bVp^4W`2dB zi1Ynxh)5CbHpt>VBA?e?XLYAF|CQydrovfNh;N;|B9^cjN5_2VJh_m5e*NCD^4pd9 z4wP4M-^@Ho0m(h(p|ai(T$yu2IaUi%`mK_?(3igO>aCG5d=$r_AiQmL>&G6^0K~;5 z#l+=;^Vte|&*REl+9(PLBNM!5wqrquSV_M@tEiQ!uFYzk=fX90Umjt$5Kl{5t z&|sK_gdi;dH5($+Yf( zgp$he4%{rPov*iilio!AS{^=>wU-C|g&X~)*DU2Ns%ZHG?5huTh44l)K+u>m_<;-7 zCzG>Y$(YDggVo=3$2Zfsa=Di>v+M7#2~w(huD_~}8>?8Ct(;>76=(*FF%?7g`!JgS zr5X^}0@?Cm%GRCMyr^(%F)JPcmE3D6^7kJfIA}R-$x{xlnv|H~4<##+!z2`@QDCfA z=WZRR0(XnZGTNuKSVm5cK89Z9ADj2eMd3Z@=Bx7-CL8ZQ#E3Kw zDwaQ{gzFgz>$^tbE?|?t8O)mZ%S2??^L#_PJ(MO`|3MhjYt}6#Ow*RqDOHcsM1o{L z1U?M78j;;WA0?IhuciI*PpRZ&iN|I1mYGvi75^tV)6XI4gbA^B{HGazNM24{kXz+& z4g$Max?X_|$@|nFc)`YB&`s>8w`SF1K!;wFn9`(Z(A|YR-gu=i;@Zkc=pYe^Kki9G z3Nj`Wnz=_k#X~ye#Q0Z4DBdSf<0Z^C%py3t*QmBk`IxKvW<`%Q`l~qPvjq#g>0Oyi z+qdmucVbs0WQF9xsjBQ)jw@oBz33;xBZ(R;NQ?x5NoFYSKlHnBEb;0aBwj-HNA=W$ z`D#`w4jka7Xy-t;thCt}Xq!P?F`wvxnj~RU@6I@Odi?Q~vWFcf+O%PJ=P?UK>!g-w z{};DQ<8WC)_pG2L}nGg8J! zFGlGdgTTbmc19cPEvxFevqo-4@LR;wJiW4>>XKDEro6ZC4y)EtWA&I9dN6nSbmF(1Rs&{EoU>xCt8-X(@8Z)72~Sr|XGNU54jUK6I| zL+fHbe+J-Wf43$)-=DT9aZj^lq>{qmX+Jo(%VlVjV9R`%0ayjUi1)aoyS7t$L$nVgD z?Frkj2mJr^PX!I$B7L;WmNi#8uem;U%8x$C_D@wB;&D!;JaBZf*Pp4hMhMR)CS*CD z3eOhDE}-mjTQSq(0jGv3*j=Ab{R*8SH_jc&bD=l(TXoZN&*PoNw!NmVj&iZQjupev zYlJzD;KOtefxz~6-Bng;x2|bhyR>DGyy?8;zLDb#l?a%F6!ND|?zV_bwfEj;~Oci!I|1#?ZbFvT@N3)I3%aAU7!Bt zJ0LgiI(1#PA|-Gej~uur#_P#2_71w)&pysQTrvVkNEAD23LoAWjvka1mB--Ai9b@i z_dVLkkp=JH5*l|9MV(up7YWpF;q^Lmb^2AxiFE1n+OFPYJFY{UJZ#rFekq&g3t-KZMqV%sQBTb0%b&2-o~85 zCB#@H(2>dG$oVmnA}7nsC*^D7UW-+^n#Wz5k`>efsIKd1kYO}Jyu!6zs^#|Kh3{68 zeK}hb`J<~>_$_j>dCQlFM__k16AQ;e>IKUV&IhbrYW@03s<$x7R7|Nv^T}`j-yGQDu>aVk- zfm&`4mxzFIY$0|jB|a6uKAP8R-Ew{|GD5>na469Xn#!~BX61X5R7+cW)Nmz@CypqO zO{6VG?KiMlaF5IWfJj@CpIh`jy||)45T?p0W}Y=i|9sZ=obdG(4=lCv=lkKS917ae zG1mTHTy(N_IXL{IDjM)EBe4<8kAuyTT$M_JK}PpWLDM|=>lT@@C+y>%kG+;Jd{fa) zCvTIJ3^ubPA=&26RR<3?6h?k3@q1jV;*z}GpX{48Se7Mk@8~%OLU~eV4IWB8&*tzq zCNF42)_lPZ?=nDmyRORe4a!0SnfdtGE9C<9-d*k-3T`gyx1Bl%FHVp6CLQ2VD4!R6 zsPVGK4-PUR4?9-TjaGyT-QXzy5@-j<)Fmq+t728yfRSdp?!N1L{xJ;Fh~TJo{hv$1 zN-&g{DPu6RHM*R_fvImcF-KY<>ePBNo!i|@5ZwNvQfk@j5(FBb*BE_QX4Wq|EqFRq zJy`74ZTXx+uiYMfpyDli6n$x(j5yKs{N-sm`p{>M)Nfa_MnYwXH&Djbdj;eo8WbGZ zc+>yK_!ADlE9KpIzCqe}8K(4pUbQpaT+n>vQ`UPq?!nG6Bj!M$w^#qgxo<(1t3@?J zU%2DEhO{-08@qLdoYf^dHB;Lm>?VCA-TEC*F16oTmLLebJDs>xeb4{}%JuRh^XXdE zHna84b=2#*cT)CpeE#^W9`67AWG%Y@Nn1;_9oAK=Tkb|1YEOD#;o30fc`yQslDTju z<3X$M=%*P%*=%#Erg6|W_nb8D3Cp@p!6wUvSIO_9zb>O48j?9MQ{GYIp3Fqjc{73AQSR5u%BMu zMwWM0{qD--S--DbqzzF=!C-`Tn3b{x+M%<*^HPA4fK=Z3>B#`ljz>ZlgH@SDkq)xZwTcOXRas1xlOmp&CN`9= zvG02DZ z9i+{jV1x#JKzpWBvbFrx*fh;|1*;ZxMN#Zue}M1nMQl)-^sIuWQ`MsnP0v>CRLqHA zI|b$B={3JAeD%+!HiW0ekt_LTM&+myYs}V!5Z-j&WBM(ms-lGH4X;{pzk8m@e;E8W z@9zXL&CKnOuQSIZ=AqkL9|d-~e-BYf&RA+yUw3|aG~5p+T1WVN05wpp4C({4Kf^Sz zBb79RxWJYd)d$(S5`UFV`P__e zQBOcWK?ieeeqPX*@U;y-I%;C8=46jv9gIr0OmtYgx3Sii84hy#@M^hHVkdA(@v^MeJw^X-bh%=gXUUl3g*bzW<;Rdy$?=x6xWHEeG`V3* zWIG9p|5F4n!Kzr`pq=L%gB~Ga^dIi>R{NpZ`BK`3r~#8i=Z_JQF}EmtD=C#whyCo`#X6^RH2Rx%o$y z{%kE}jGW?RJ9+1qiC@q!ZGGyQRJ}s}COZ~uMOUJGLQ^u5?A)2&2B*j8;#b8W^GK## z%elUx!$;2>iLaN(S(xG7q)Uy66saQ8dz0RzL`p#EH6Xo(C@rCdUIWQ_ zP>HVfee2ur-e;U2XN>(5MxNxZ*FCQ}=XE~|LkDF<*~$jb-4~h`DJPoeYlr1EU7ilE zoFu?IDEd=AjzV4#-L-pY_w<~3u=gi#{W=-sJ9{%y$E#oEBp98(vwZ}0R(^YMp2OjK zrET+ijh)tD#v^%&OWd(=^9k>{BU;W_wvptVN< z2sH@jy>$8NU|R_a(Z~cUkJ*-Y6d5)r(UN&bwEomg?v@bh;6&F1GEihgStYjrl1lE($z)3|zWWPP z5T+BRhrRCgg7_H<6|x{dSkpd0Abof|{h*`iPYEApkkZVMy~!hpfb3kiACGb9A$0>9+V&F~xiLhFiYot5{C?XaW!#(6@h zl!s8hCvlzBLALXahwFR+Yg1=S$6Jcqc%+ha;bBud;>(GB=I1`J?WT{^UW!t|wH3j` z;I`eQmj}adRJd)ma}eO|_xM9Dk<(i0LJh|TFq7V7Z-fHb5nKh>O8Xhj43RB!gjyLKJ`@z*X5Q@sHOVfxJl=gXy8#N;~nn4d2MzG8rMz zeV1;7OYv!rV#Q-tn7-7=6s_{ZRTYltF1oFRmlPY>6L-Gat4rlgM7;q{hhIS9ee*1k z*YK0N&o+?N?S0;8-;77`D`SFjyK|;gS2%4?5^U1q+k8kNx)rJGU*vHJlAx&O{h0O1 zl7PXfP(r}Y_a~5%Fm3Gc8}@YE+ql;nExg}X!y5~A_`WuZ(sdWDV(-f>gw-wiq)8GI z(E0odP2tzn7@XdR!FX*_;`Zz3BYNrk-_0vrSOXP(+Gw%q^%BnWx9$CvLK;1B*v=XO zVxQbS-r8rC^S}Yeg8v#o+%)RAJ`PNcHIU+B(qxADbwsx2nH=jzM1X8M`zV_Z?I3S$ zYhAkpVCJr=6iSrpJvBzBg)CSV()A*Ceo5sRQXZh*-7tSTa>u3A4M;BK5xA!#gvlMw_nKrN=ClU=PlJ?g`5Id=|1gK-Lo&5U+U~E8P`|2Lk9A-0!A;4bi zxsf<=GjhTFsrQgiXE{Ehn^$)hMCCX%6XPodHUs&d9_4Y=?&uV5_nk}?4xp_Awyx^n zcOg(+g$7r}@5& zJ+>e~nIGq3?^|sDo{RN^Qo`W120#|z@EB^*dmB6=u$OKx!Tj*_Q6NdP@g z2JTuO4ZH>s(!0#wtG^K$zW=Ztkh`pVOKZ4C-MaY~DwK@E@(K)!AjcUL!Qn3vVKcC= zjY5=NWcGd7llqa{hT7o4+GhT8T{ls$+!>vwP{rmnvW%n@_?jBv z*>4opEWooxPm0m8XQ-(j*p(0`d9fIxNnhWlV%rXJ?*@`3i(_R?{=J-K@A)Ai?(6hQ z5kLVBhn1U!WxxNsDP3KgGL^mHAK6m&!Pc~DR2{=@ZjsX6!3loSj4f_O7zkaZ#$oyGq)({VapmVLKq-(07)726`ytJ*105#NWZcA}SJh?zW|Hb)8>89Y3! zT{K35a5LE+ms|iQW-C#3Wk^Q8V%;7%jA=jiV|Kr6cwJJZAh>XxnyM0)%kankOjur? z_*ER~eiulp-z^y-EskPBmAJqiX0Q2f+Ad{U8x=O9m)`iGbDcrDR#FwSJSuXI!D+hV z!^}04+drtI&C?4OKp-&JpyQw**!*?Kp(3uXnFm)UZ_ZZ-uLB&LeE5DS0sNC$qT9UX zSKAmrF7ssjxo(3uMWrVherFs18`S5u1feTP!`=f+=K7Z`U_6L}1E%wafCJv0s4MK^%W*|3g z6BI@^VA`HveW>*dvt_aa9>r*uzQ8tz4@2T>Tq&x>YmhV5j@S@~fC!B3&Yt?X%V+dW zf=9>IQeJB2zC22e_mxsyhp1_pG_{pEwcvo|YGCdJl8wd#~x*oGJoeaw@VIwtu=+J62;Ib!dpbIIhj1 zjFwzq7*F1rWenI4CLj>|J^Q>2PKOl`pzY(^fcruKtnQsGr?a?F!(*`77C+UP-P{Fx5*ei&7f0WO0 zDz|6d$>O|?T4Gqpu?TBTE%4=uThX1ioj0Hfn6C!z3?Ys`POop&TR@!Z9PJ*oJQF~@ zI(oXJ%Zcau05yZtXwEFaN+1XKi`D#g3N$_28=0Z$NJ3HxpECshvBzH^^8x9?E6u~m zuBsx>Lj>6GqRIPn>TIi>QZ91WY^1dgM_oX^lRz@B?JV~pY0Sc_yyn#)*iS>Es7>F~ zJ=Yo6R5u2%NpWOy#UPV8=_-DJ{VB*o*mQFbM}hgDv%ox~E)j$KbR~00w={BJ`3ZN`?e%6nT|`4 z_T@)64#$2j-_~L0V&0-rfGmzHt3RkXASBiq*Wj+(s>WCepyv6_Qw}PsBD0md%txns zxJ4`fGEc&c5<0F}+8R^~*KCVyY%~TXD~yay(iGO^o4m1KQl%!Dy;0m!(zJdC5I;omR65H zcCr2Xny&{Tzu?qN_&h>w}e_xSVXCpak%d{gCR8WgglL;QX<}Ee!o-aDTYB<4x7I$HhlF zj~RXS#~JfzkeH`-x!G6Lcr_ba1}xH`rCT2`lEsO#(-pP zs?>_gk@-{8@s<`k@scU@=S~Kg-z(WgdkeA6QrvFN9ru_>xNPfixqT1UgWWu8rPPNH zX!*LUHyxQJ>^BeZq@gBZ)SE!y@5?(bTXy9Wp zWqTV!1@jmEz;?cbhKNOufglcYDDj1gM)X1nC$cCHGcyhh7aZiq&IwJ*38VKkD>Od!r%s zyHoWCk?x2I*c0&nB+CDV`*bHv-xXX6&lOV;I`-6V3h@Hh5;zYR0TtHO%#xnC zWoGOhM@947n~ggLV%t<;CDjs20_g{DkGoK&k|cwybHjqc$nmMj4FgfJVoBwjzLnb* zvX8+Q*4D`bJOxW)9wA=KH2cD7&qeuBft>G#2rMP;IWl&ejw!$LL@w83N9&2V-RHLk zhy4#~h+@P!AKMTRNFS{?0*lMOu)09*fCS`&3>rgb8A2FbvlLN?$pjVbSiK%L0SdzA$s#~F+%c1_T zeY=9w=dXHOvtCAoIBwpx&UVn(J8zrz%eA3|9=qCuR+XJomU3L7_E2U!Obag*nAdaq zAmQ<^uIDO?wuX9AGm5X_B5{caUs^brC7q|2D#17}b20^;sMM9(!(s4F@w>(rm1sv^ zD7L4V!jFlB;ALS5zAUHikU|<77x+*0lX^{i~woB4KuP zmp|3os$#IKWIp6$I)qL8S4`=hny7909|Y1_CocC$R@E=JtS#d{Xl#mv#K{Dgyw_s$ z6&!v-HmP(9sFS7#Fc?9qAGs*oz+XbIH_p|znxRMEA<^QdMeU(lRMlIt%BKr>tiG2& zjFSnVZCV|iI>XeHDyA3A1~c^A@Nek>O1=&uW^m+9vkop^V(xN2)P$ncZCcqU=YTO~ z<~zE9Oqz_|$wiaCwA!;owU~|9fhvJq!(>3Udqt9IFh&Jf z3}ikZ&y`LpO()JCuL(d?yU`M4cb!a z@HrU}!{@|Eqns0SfrRVx9Dc)=HEy84e9FyYifRci^rA1f(1R}}L)9F)OU`#z@~J={ z9{3p{H0jILRIfZY*}B)v9sk|hZE?E~G_9-pO`Lo2L&81aq8lg8#TZxrf!@FrnO4L( zV2=Iqb9_B{wuSdzk+q%8K?-7T+dr`4ly)1Rg@M2Ih5g-@H5G&1ZU0E<+)-FCIDDQE znZM7;5{#*;sUNW`(p6t#x%0JYrL} zuQN!!d@yFto9uO9t`gwrjpkObc@VK)+_WvjO= zq`mqQc4MRawODf!!~ipT8&0>MH4NSxdmHg=Lr|80AQS&9qvdPePr?nJlRY`L)_$0{ zCe=Mf6+xEub+O=@7OKD>Hk-W1X#7{jixoMbHxWcT6+6`CRy{`5wD-M0!2$W4~o@Z>QrOW5LJST5* zeeUp!8j`yWw07lShuyCt%iG!V58U}SY=`QqN6N&;p{4ZVK5I?*pZ5`@*7sg%o&HNz zU$U%MiS@p8I2<$MonO3)ckPp&ZZpMGrCs8=LXg~Dqd6j2Zf{#}c z#p@fj2Q3k6z0}2hL`{QGzaVHG(Z^--;f2+vMg+M@Z(p)aNPgP+vJ788$&DU&TQ6Jt z{cUKuuJHr3H>5ccu9GSB;v`!)esZL9x``yNu%s=6I2)a5E*HfF^+V1>7xa5lvn1jc znG=M)tUlMR_1>mXlu zO@=q*!^z>Xiq(+Du|%~}J`{I9qqt9m8GbIDl+wU9HhG`eK)7gwKr62b0oV5X3fkZ~ zgTfd^T3X3f_0>(96E_8OByzZvi({P$91e{!RCPDsA_il4KOysqVM1XSm99-8eHXk^ z#P$-VQf(mX2Wx&F_Ia-=lb+B)?RQbA-RGJLuagy}Lx@vindr;y3@RSe5c*TV5hHKv~L$v5@W{} zlh~pL`vyC^Hw3l4XGUdH_^T%#eR8v0(E4yu#4yQNFXB{>!1Nh%ehcP&o$&B}D(B4XSlajodJK~aS!EY zx{>2HI968RJo9=h)2$TCO<40E-A~Kxth8Aa@=%h!fyelZ&$1bJF2Sk zA=q!29tW|Dx!f@{-6?xJ;mawarU$EtNTW}PAn72(zf6MIT-i>Lj(?cVi&D7jA>vnG z9763@*1Y!Wl)5r1f~d(2G;%=i2sbSP_h5Y$*?eWKnab_fPFQ<?cISf=y&m`&81Sogy$J=`8@b-8N#}V&T6v1;E#GS1^J5CPem*|-CP7KAHevDvS zZg2CHTHE7}V5d~6@Gd1Gn4H(I;m zV;^~LBjH_4?OX?HO1ds9N7i^ExsEH{Jg%1im8p=YeWp7dhX|N$EV08}xhXcJT0Wwz z268m#e0bOq+Wo-sWcu4lqD-1nMJjd{ruNiE|F;gb*}*i;5&Z^w341R#Hzzx~5@WR) za!0>xUgbx1EUbsE-SKLuryMhaG8NIYLxy}QJ2h9ty}C5(mUE}S7x{)o$;gLaY&IdU z8p%W!d!E|*#-GhrCdLmv>u8Yt`9A;gks=`a?0h|ukVa;ZAea={%aT!+EesE5l zdEezzWq9KIuz@KHV|e*+&9%^6gre*YxDy1=_lR)J{ z^NX4dx%%xSa`m~x+9EPM)iT~@9lYs5lnCxj{Oj-YgPI&Vx5icqI+sf)H)uFdlv=F> zZS{4PZ`x|-3AT<5*YRZAV%da!{G8YeHVShR#b^%HU)TEepgC2cE_QaaAH;`3#2xa4 zUBS@uoND%$PGFjra(`o!&>x1rft8L=N?n*&)RSAd5(n$SJVhqy@shTwo zhuhHTc*05YF)!mZk+B$tX@nTsdCag(4MwhuZ?=teQ2|0E1FiL3>v%j^JJV3t zUV7Qy*-+u4x6qe8#<4jkDaUGo8jo_J8I6wfbP{35CqyXhIkq1fRaL#=QxX$QT+hcw z-BQ}8FK>;_6Px>QlYfoR^R#IHkK2de-KkF3Ce3)K)#(k!-_7RW=A?d z7Rg^c06)-~6;bRW*Dfb|Y<6QgmuC69wSV{%a&4?F|F@xJ)8vTrYwL~Q9=S5Oa8&K( z+c{dLi0H+`CB_&H`L>C?x0*zJxbYY$G;D47GxeZ*)r{7Ph?uA*%KC6(45k_5S|V&z z-%_Z3J=o_({_1Ob`WIm~muk0DKMEJ_vR4e%RbkuTj3 z6><0t{w6`j17>Q2vo7^OeOt1qV}W|XL{ZMSEOz`$H(z`???XRr3+lX*_om~4qrwOG z=<9OICMw$f&p*dehI(;w(iUu7y$xm?PaHE>7BX{P*_MmtlJG$qY2?eB;ScN*Wx)T?5nLkv z?;i{0z5!VYjcfldkJJ|jJ5DPkE`DCkh@wSQRe0cZ6xrO6!DH)jk&1(%MM5m;ZdDR0 zAJyzYsO?&~a>Vm&iS~&8LdE;?DrR-vV;Zy`lxC>_tPo1rF-iH1x`6-1%AAQhA(%3y zM)K2>MoGa$cWu&TD3lm@zb2 zM$vzq;$KS|kF;6z|wRx-^$^LsOJ2NB)vg9(`T=3bZV-Jo|$ z<$ymX*jis7i^>|`5oAbNa>t?~(ij~Tc3d1ec}x4IRIm_`~IY1)iSc z7{@h;K98gxZ6~PF(22IK@MWpp25D~%gSv0Y`E{ZQVTV-`;B9mi*1&5gP9saU)@vbZ zp}x#+mA%LTl+(0GnL_0GCmyb+c68dQm!)or@mVlc9qrXGvRy9^Zg0_OlnD zXWe`U9pmi>;h9TGGX=y`v zD&)h=!=9=uYVfu)IBydJNUF9TKvF$^t4jQ9dyFo3JQm~5BQG__`HrF}l0T~~k%sVG zK3=pL`~^1~cG9S??;CtFvDdG;f>S>w#QOq00}Aq$b)TWU!XlX*Bhy~ghFz<1N9fww zq+j5&W|_Leav7=$72F7lBDwC)HsziX##J5pvT2dRJmGDO{X7kGUx%|K=As#!d;oC{_w*|k2xnJO0y%x zyom7nW2Xaf>m(j-g`0~#$oU`O7U=4U+(a=K?1u;@;jQPh3W?)p9;CL5TAr9Oji<>{ z#zmc-TPvgB=awcn)lW{Xa2mrWZ0u{RTGYQXT1Cjyz!jvYHvI#&NeXp5Kac6ZAdWRJ zdDCKhgQ`BCE^@)!Wd$n+aiL0z-MT%#KLknV{{(WJQA%QH>*VK}&j}XmG}+M@i;URw zp4!lG-|<+B>yHqLjRThAfl2ab)Fu2@75%KuaJ8FhhF7|5D3`u-sECTVK8l^C?-?uK zi8by(GBdwPuff4fOE#*N=Z4^rwdMIvBk%zAo3{m*VF3&5`G!WxMbo5#2k6CNpFwzY zg3S0LO?PVRfosMs+PZXx$g_t_X69Rjp}usM@2S(>RNxvq^_3237n2Pz!!HB433fuN zQCc+S!j?2G4_&Y~B$bx=Ih>SSEGW0t0i1|lg3IUOgLA3Yg7bS9;MrdH z<`Oj}*q`zUwX$bHtQ)VE5H-PfHfOPKayZYWMZ7-Xn7LZxG5%0GJ)EoholJQ1eCU0c z#T&K2Mvuv9vh+17Rek0*@WiK_B#t854Zyr1_2EZ@3kg}Er)$K^v(yU<1nw-X5`4YR zcZP2vvppVt7`1KklsIYTAk@O~Mv4fKa4cN92m3O)04(k#DCRyjeqaSTyGaA{Mmva_ z^zSd`=A`QT4Yw0zemKn{81-_1H9geHtk>|){iWX#^LHOnblXXxyT|!y`Dq$H^=! zvD-D@cCkwdbSnAtzALlko#P-XM`AM-^KCBZ>DM{lFJ6mtcai7bep4{!U`fETztE?C zZnF^cZ7-0iUn@8x)VaSQbVS{iI_0qKhHx*0kN2v|@~Im6u?pdMUcsle5e23q3DQjPK>u23XT*KBRwVm=2Tsb7F2>Rc2PjYm@8D6eQ``JN zx?rrv2r9tO?UkTzk`P6DKf@0IQj3KR8@1Ec&~m!58yxS>pgF6w_a8hhPD;?Jy8h<& z^c9xA9n8H;T3_?J1N#|e_mpMfvKNy#By-*exQaX3S=4Fw&|Zo|s)Z|@Wpgb3PP_du zjN(l`nc~!H4Ji!KE0~Rm>(3Gy$$(z2f1La|{%@meE{yYmcj&_Rq(?gM`5MGU1k^q< zD?ATVacx$3+u52Ibc$(S zEH#)`FMQuDU90w@;eg7cC!*VT_|j9FY&P&Urs+`4qvJz|C;RFR&X#kPC@;oBQBNl) zPtC74T%m>~#V!)y%{HI!k{pFO!$ZS~e|gy!H-%=;%aOV*+x0Xx0hF+?IkG-wmm!(rV3``BkgQg+@F1*qofUDFv#ct)tN;N>GI@JtQ%pYg<|9q@8da)Ic)I zQ(pb6dM`D-oAnBB;FHn*Pw79!{HB*7AR{lDUy*bl>CDSD@a>gzuN3ZtubKR zqM*_hMy?GhK0MDn-{>*9RQbr^iRc#93QRc5}$WZso6`CHQu@ zDPOcY?qvj*&#T@u`AXVD|!D9U$- zzn}3HKrqqcS8bAE%$$wsy&!Dc=P4qRb&%ilC*+pbo-w&ak_M)CZ+{(oAT3*z^NaOz znM6)sG~p)=+^-GdT*&(g*w$IJ(eX78+w!ZOf~oGx#jQ+?71Bk@iY$1NK>9bT447qC>Ap{kObF5PL3d5vlbyk#;zHeP z0mxzO?Qe!;p9}AfJ6_HMu-LT+3}=kratMH_nLljDofo|-CUD0i9{|G~7$P|h{AT|z zXl$GG3d=2PvGS;wZHg+fA^mXR@5#hlOVvgbet{d4%2$1(Ck_SqEX>QBZZv(DSXuk) z>u$icVyYP_JKc5I`QhNbmI?&(lTd|et_b?_EzrE$$ZQ&Sg_UU*{o??Vz-_ngsISdF zo{B!NT1JGuwC?usxtSAn+U-u=-(pd5z{-`2MD-*F-lBI7XEnC~Z2^M|#{^%($AT8K zERhqI#ogHMvHQ|i44rghaX)~Ve%DU|4arCQ9}#Glh5wa63k%hxciMz&D7Cx|e&~+v z2zaC-=_q>h4*vj-%rjr2+r6uYAoR!Y9P-bk*IJTtPl<{ z9V_G*%x^yHwi8us^}f!T8_2wd=8}Od#>C(3gAmctDx3UGVUyU*g=*SW>0^?dt0aaz zCXLux)R*;2_2c8B>mKGW3yzPEl)gHm&2$$R{3+|AO18Ix7AhPaIln-SuCTa_CrXkE zD(w?XZMgv|n$Ukvqh(7a+#_Z%UO(p1#5)sYYCv29@|efQ2OdaSFK6tODNfYF6%h!e zkr+dX`RKENB*Ck%l@}kQJ0c_^c%_Jk>rLazRblX*@kF$_a*UZp__qJS1Gke>5ga$G z1Moo`pwc#K{!XRQcLP+~24ceyQwcW{a$NG88%V9J)vE8Wm+Kq; z`pyI4twPsf5~pieFHd0`^c?g#zOTD@Y^Ye~i<`dzMB3;_?Mhh^gXutE`lgdjSAH;V z_PJ1^Q`}W*YBu1@Wu(B8vcrZ3d~QGzp!)6rRNsXcCw1fjUahLFPWCi@2YtPTW%!h? z%^M@WC}A#7LgrPNqBBmvxK2qUzcl}J$gM5S z5o%{&`<5Rk5B1Kq%^;Jc^DCL^$}>$hh2Yb;wzZu*2jpXpJjNJ%_OK8eS_&(qhl+Ye#na8TXr?jq$gs%qzTUW?)uM3x6D(SbZ$CK||N-b@Wo+T4#l zK#qJI&M?fktT`iZ#U3T&TFg-+1okNHhTj1Z{E_N303y@*NrcgGUKAp#NFQzId}{M` z$rPcXnuXpQE`c!cJyMh2Ft!mHC(6yU-M2_;AU1c9QA64_3B?cZJNxD7kD|Bn!8qd zWKaN7%wi0t=SW3ik|B-v=kr-vJOsaPCa#HY7$S`@^nuk9n_8vQsem0Pt=?jc7Z>xP|A(qb2Qc z*ToJWH?)Q2Y0_^-&xh{5I62+^`_MN&eQ0d_q?ySL138d=x(K`?KvC{N-#$MM$aAVc zt@>aLR_a&@T8NLf%sh1&r8L01;=a%luh;Ca|FxsLHMrLj;VX4NJnnAn<%Xp|ug_Md zTWo7fX+E`QDz>cAZW&{>xTdAHRL9pJ>F8`Kn?`nyc zStisoZm}0(PUfZDttE89PCwo~x|z<|uuSf?dHj+7!8mrOCvnbANTPj1$#T|vxco#e7+KN`;`H|qq&-Oo5A7e_53hYgWCE~c1>(InBZQ?oqh@<(yHD3^ z(ibY?G}O~&-wI>4)la6QIdOuQi}(7te=3rS&R{^)+oQD0M$Wofx0f8a!y}Bdpsbs< zAKeCOt(LWD=$!kK1$YIWJg)*+5$z3)KM#T-uJA~`v63! zoueBzq>6`kxZWK1B`ZQk?8KTuacQ1irLg{)Ti#;K=7`A$(gR+zb|3VQc`>_aWXqd2 z4Cng{7?UvoE+w3dhK6kx$KBl~Ys~mR6+^Ylz&1t;122)ag&KyC4&|Y8Gp)89GTx@M z@hcpX;4IgAWU|Pu6;-F7RBZ@3o>T{c(F1{=cibCLwQ3#0cR&L*P!v#xDTb) zoa4ygSm6D+t@8$Q4u+^*6mvGPJsj)sb9mvsY(RLal3;>gIKx~kM3uw(rIj$d*dJi5 z<_8#KYsAOL5w0!K2cV&EhZ72fAWw-^+tcUXK1R$7jvv4Z>rWqsRs~*TPuusZHb-1~ zAf4%2A4)zpzo+RZT#J;bV`0FZncea^XbnY=xlOs>LZBcR55pw*`hAVCUir1KMC`&?S8GQ0j(S0J z)NQfYNfTl{ExpNG-Z?6}!!kMrkjC2?GehpZhV+X`+2Qn^5D91Ti7)h=zG0U{g4*dE zN)>tx_RcK8&0%w9u0ucM^55CapWti9pSI7d@%1bp6NdeT`VyjB>U zuzNsZ?MQWm|7w2VzpoqknL@qnu07kyJ#1aCcLUPu-lGE$MR~wwor?VZeGp4OL1ESt zZ+7Gg#@sDc9rQ6eKlREvc!}VBL<23L0A4#A<=6@fV3uMZ@XA6{AUUCbkYD~T>wVdyQlM+JIS-k3=}5Y-EQi=9xvIST`;5b%m_PBF}&cFBNb z8O?aB^F13!0SEjX5g=zYb1JHByd%S0ZS`*&^kcW*g%cq`776`_UGsfQ=&zG+^{%Qs z+Z4yMouZ9IXda;5hRtVvUqydm`R-3fzMMc87dgZl6u?tNv4V{|NF=pxPRs#*E(1kruzvPc%z^JS9Xd)k4VdW}CDtZ#_ zy3mu$6r=iD9w&R6i`2ur@Ue=`u*xfv|ISVVuVGpK`SK^-=SMSO_3q05pKxFOfI&k= zNfQu;4l+ zF)Bdv`(vsAJ(I98TpiFepRDvPVb7Af27kpKDV*iwDVMI#w|7CbFbhUKhc-KMk1N~$ z&JX?J?^?a`E|B}(zj0ssHemP6Ob&j8S!jNLcPc-ek>_v5h|2PYPS8bqD!u;w*XPe@ zRMLu6CVkh2u&u2M5z?2Jb1-Jup_-OZ&(eAh%Jg*%bQ0^lc)5pT-_;;&Zy~*Z8hdE* zX`+s{Xhxz92g|bQC)l~>t;hEJF6mx+ZE1}&ukufJkm}kkSpU-RXyhqI-33O2;)}X0}gv>$rLHgThP1D$(q1%HpZ1F+jmOZC)J|6&e7#o|D?QU@ zS$@z~<|k>sRF(F8qi>*0Nu;Pjw6&V`Y_jDMe6h0t;LFrR1~6=lKZflO14ap%Yvo4( zS_LO_DHpIDsgccZ<*0`u&MQh6bip_#$qHnPAiu~i?r{^=6YaAtS08*~rAnVIsv3X2 znP#`<({^nG;De}*A77JCTKVSUuAdBvChsgBW?EKdlNSt+*8mbl?N+tF3y^^5_#<6M zn|}a!mW*LM>i>E|ne|a&VnU7kB2^vE0@4^U=3x2tAP$Th!R9_`p~6XA_s0~T%A`}5 z{vhlyZhh|Fz`|I`l?GRujA-;g?g?bjRAT8UV@pu&=+p}tB5O9F(e{%!1i>x3u5pWq zGTgVmw$$Fgi;UL%#Q+vl3sFeB=!^y~M;bx{lx>}v4q~WtW77G<7q97%i^sGUqsBjJ zt;4QOxskKlJkcCCAOAKjQI@EeD>xGEk@Xf-q_=#mSoHk@G9?Xk0t|&Gr*z&kC|whM z_p)3+;zrrqOE-57&CZ?KgAW&H7t{m``Buj0#Gi=VTah#7@w|8YYN(_}h-mh$)&&v< zl3O3EHiTC8m4B;>trtaHj%{8Vmnj}mRGJ`*ry7AwT(;FDV9xsoFJwZ8-)IS0`tp|Y zgg(>-$_y{27kxk;w@$3-M&xPU)igZ)#1YX22u?K!Ibx=4P}bkz5^UlpTpIj0xYQP5 zT!iAHoY4uoA})$X{k7kNli$(E$}-c8q(7l6l{3Fn ztc7Ze6d+K7w_HA%y`Rvg61AC`aNCb9^&EfF+NejubcB*L{y<4z08`-{5PR;}zZO2) z3zm3+;%}lMH0pFFM()8JpcD4))aUk$J04>sip+nCh3$@8*7gDhHaR)6Iw)qw&4Ed^ z@QcQAE{h6VR`z$pIA`-2{J3USJhA>2z`MyrnBp*T^Aw1YX~1OpTeJEf87fY@&ZII- zz4J*ja5rLT2Nq|mZ>8(U8~nb`ya!EjZ1MW!1mnDc3`?q~UkfUH?})|%kjgpy!pfBa z?xyb|E4~lhUbNmZkDblm^86m*roR=n?JKqSn+&<$L~%OH?Zcpf>Wd$yAD zci3++Ak=ueIQz~#Y3%5%D&BIm7BkkH{4y1I$N;g*;v$|ZY&dV0`c34c+v=Ea$5i>0 z>kyW0Q$<;ciJ?ubrZ{>+EeE}pq|r6X4LSGL-A#|2QU`gP<}J^zZ(2zOG}IV<Y|T{sq*5JQrqEPk2!rDrr<+Te&Cs14`FZOWs#WD!{TOi znr~Ug-mA?y(M6#<@?jzjJC#c5@i_$ov^II>aYnlL{#7?b@7MvI?l}K~$3?>3<}4nY z;6+1ro9*H}wgu;_@Hv+o7cwXo4)T##gdM5}BK4B$p(AtXG$C=@Int2dluX3UJ(V`o zVtGZXb8k5^mSr#IMh&#h>#Mkcu-irnH35?r^MEbj{t5i>o{I*I*{fLZTJ^$%B0!YM zTU37gQk>qfnWQ1FxB9V%^|{W}ac;|VUNc3<3gnl``^y5YG{21XKdm$WC(7Y}46}d_ z{=e5L|9}2#sKRS8m@y=R4tzk1Go9|iPV8cEI^*8+-4iWxeaj~a2vB%N235!o*{BIO zIQTj(p@OO3ojHhs!8qWefCcXoKAcX<3S!p}vJv~06=NcUXx;{HOKx+3L_&f*ofA$4&SQ#nM=Pzf3hOx^7JPK))N?o<(D zp6G!e`U%0%fp#XnLnl`!Fg-Rnh>7enP@>UUPc4P}E_G0v58NyBlEe3y<4KYM3az$w zd9lGrUn$(gH3D0bUO5F+u|y;$TnG|p=!8x{;&xo?xY5`d#Vqh+=Ap^HmBwY+i z5}SLgT#> z)OsSGQBwV6LZ{dAT0UoZJ=a9<-o_N}z$rX1vPYZV2@N5s+vUX>9>igQI+~P2r=EWM z^+kbA1y=e^egtlI95Fg7_dc;xf`7dqV!(Kg>R098Z)=z6lcffRDQx8qc+IZ`;RW6r z@gz-Syhz68RJT2!oL#7rxNKZ#x^3FqP{@ARzQ>C_OsJx8^xFysZ;ht7EjkM*A4c+G zJEcfD%DiilmKy?C(M#$V(6gZ-pX!x@mylGQ1g zWnKm(#igOSnK`or@aE{Ho-o(pN(1+Poo7ws#_o{m<9fhJ25BKl+<1tS9D*E|&tT zZVqwCKB;{T1+n}z<~rP1DR|d7Pa~d?pd<^wh{_uEfXnZ)Tuw56R2KQ<)wIS=U+zpK z)(}lx=Q6TfRKM-eV4c>LI*W0)(ou}@)nqRhcH>atX?Kpw0^hP6hc_pe5!Hg48>2i3E`#X_au;Ly{D{TW?$0~G zu!c)*t<>)@_1cba8_+xFgbubMJove=mC7?_y;!f%+h5J44x{x5o2r!d+@R)ELsKQi zD74A|NZkg+RL&|{$%hgH;kFQm`Sc&9Hu_X>+ZAa^>mM0;p>_LXXMoEj3GSc8H$(14 z^yVaDd%S}8pp{uFK>+(cptd`znE`ZRbJ%xsucDQ=NPKddlN+v^d{J1hv&wVNdG#*$ zUj=?3TZfIt&=?$@R*$HFZ{>pspmyqs5X_FOy?ESA?Ujq~T=YhzS??S*bh95^nLhXV zG3s**0Rf8^e%meW9`F`RV2Ap-MY06G!}s7)UMt-_w+Su2-)-~>Paq-fN$vh5^5|UC zgnpm@5V^KGPlnq<8KaMr*!?wSS?kcUe!U$CT)6HKu^A*8062gy>(z6GMs;t&J~lAT zxm$fnAO*Tgf$!?jjEnbjSuqp%0PN+_ct7s&&1#EK4|tzxvD@4IMEP5wtZ3)73x_Y| zbvjl(LnffK%Wp%nu?N0$&1%St@_h7lGC28|HtRzLpbqfy?_I71J8d9#LGZ!N`rVAy z?%VZa3f3i;oW6zV^BEMDiIdOeUv0zpX7?YfK$d0)?e4tF5!el-v;VOD4` zc|AYPu(`uWV#ZIbi-CzMYccl(fix?=GjV;Mh*XZ76?tl(MoXF6BuB}$V^!CIP~%nG z>TaE0AMLbyce0N@)JqC?R1{beq??d(w0P?GzY8MoV&h>x)4;1@R1laiNCTI;!yjdU zKtqFj^u;l|J;{_}1&(@0MStJdO3Nts!{`{sEWOuPVHhb~T>a^Q=e{;tp_IT@!#k{< zTy}@Zgoe+GMO~|Vx}R-!pXtS&XCJw7ON^}M>V40PSwDI@?)$N~t#w+L040GhFW}2< z%;l|{-^{t2WXCrF@o2k;S?4yVj`21;D1K^qKb`wSx~y60$bNNV=4ku(AaDN!pzch>E2mf-x1gipQF=HZ@h-W`GvRiT zvXC##2}JM+&)*TIeT24^E|Wu6*FB^z@m{%vHDmFO-Zn8Fph${6^6kZehXB$sxF52T zHOuhCVW)x=Ty4BzJAR|C(NYWbfjJnvjm@$G0*%Y zrM07ab4Myf2}E!TznC)cLR^ji%QJ)fR+i{@5wP-T+MHi3QF~bN?#oh{Wf@a@_vQkr zw~Nf<;8j1LgQ7amFA^GF&UN-P->AMcZZPM#$td=0^eg z+h)vJz!L7!{6*GlYh)s;rq9=cn)%fDh(`izi`*`pYSKD?t)ZQ$+bfuG(q0XVntEl= z2^1Ru?nS6^#YgRG_bRtZxz2EL9hBq3$(kRWP=?;0oKSd!9cm~Mb76|0lJ7XO3Wzoa z8GABotA4=UHlRV88XQ@lB9oBH*bl;uD#%%Vj8nFUld%WzJ6&2XoWAilzf*Vv8vCm~!oS<|Sz$9T z%F$5+bohmKbmXksk6~rAt`D8o$8(#a=2%? z&jwzLuaFzmq;&gXW(s)6Luo4(@QzsN3l)E)Oy|lgZwXVlUM+n&^uu7+QWsc=!SOq1 zUa8?`)f8GRR772>S2!@@X>z^WudQ^>|FHMo(QtNs+psheQ6hq*t28rn1V3ahy zjb3L)@4bx9drGcLa^27UJm0<6_x$s&_2!>g7U!JyxzD|ief*B&_-#Dd8;efduhtKx z`*P>>MgXDGR=n%vH7$*rR--fFAX2g92@lH`^=b3mnt~lL0174c? zc41py6j{H^IGS8t~mxlyE;Z@>Hv;AxQg3Hd{J z#SN4GvgA1-H~zNd+4x_-n|@-+Q>qZ5F`oEKN`%BPteT-tRNc=IJ=gs(+}Z|-wJ!z% zzav`Uc?tUo+gfRQ`@hk5r=j>EO%=+wNbr6SnJ@W536Ex!_!S&aFF?|)GI4d#u=_bW zrWSbmAP%e*ag;pAHAm#T`Rwy72braDHCGGSuRm#DFnOoZu=hvtinvXENR4CYdq2^Q zQ<>0^*aRCO6LKwK`$@`#SGMWeE+fRK@Jue9F3R*1`PJ-MTaHb|?an9urvAN((!@gH zbwh_AUY>dvV&nFHTn1A*2HkWmI2tTB4HaJt)WpPTU{hR|uSc@+-$Ad;gwaN$IakLDSZEO0Z854&wM!LvHx*8i(-SQ_>|`tIaJmJ%n01k? zS7+@_X7`t*NJBB~Pqojp6PFwhKNVidZ}rxjCU_$kjDt2JqI&$?--_(C6GgTOgcHw# z^mLdmwQPkczJS*mWNUb70t>z70@y_Lq%8Hm>UUWxFUnySBRYR#+XLpP*6E!A9L0ZU zlKaoaJ_XWKxN2@E!=29Npc#nW>{9H{5CXD7kLgKO7bysq1o6+Hfp&)Fvu}Sd>py@0 z-$|`c%T3dZW1M&ae`;TTiK`b>kV-9BK8(HA%~z}w)@$7)rKdo9_4=OHF_z{>Pl!xg*=i6M(yf4>Tc>dK)v`7sVLoZRU)Up(BhcN=ZK+w+nCOA{;MPGWqm;mO#PU)Bzi#Y) zJQaL7!<^)-?jPm+)sZIbH3Cxu!Mg#^^hbYsM=jl60XKEzU3Vs9=jATrW*8^u^_8JO zQOER0#{&cE4zd`h)!wcV<_u6h|V6CK|u? z*zj6r4xUSFN(u4b__63;-B$!Cv1O9?bxb+xbAE|`Fv-Gkh6D8&l7RBdV~2E$AQ*F| z$o#hk&|iul^`G{*Q^k+lOt2Cw9aPUJ%vE|uOEdlYa6s6=Xmsl#&YdT;06=GsZa06Y zJj~*`=uGA<+nAcOSBwlizN_MqQsyyjLg2{Cp0nm@aUo}2LuiKBve@3~hUNDhM(8cS z`7dG1Q-_NcsnNCxUKi;e=U;qi@@}_17afR9SvJRhUD~V?l`xl0&T=r#_^I&;?*=qJ z4is8#Y)f)m$Jn1K9+0$J;KGe!SH3p@CN}@aL@`31tZB&4^L2>UyGgLO1 ztyL`pUv$P6P^kQrSUdCz4^fCw$8p>de@+2SuE_6=T$@p{Usm%!_vF%V7$x(bay-FG;mH> zXM)(-IgC;**!@)V*-CXOv=nAd(thHYOEW5FZz{Jth2WYcvhLNkCGv>-{(pMgfK{mL zr?MIlN3*({7h`3d`pZ0+X^BTtvl+3O$@ilVBLiu_$%f!Sn#<)KE)2b$rIr^{K+ z<6>_D7kceLPco#j7YaShp3w;%_Ljzl$tthpwzdXjehhz4{}jUGotMM8a$TZ_0;FI+>YB{gYl%UH3RsD?mUY5_mm8t z-`?3p3FPjQc1iFL=#XhKt-?Hj%UEn|?_es4yF7b^86NrpPffT_h73<+NEZ$Az%gc{ zB(cp^u@B~no^1RTOwjjzA$q4i>JONcDudhug>*renZ=*?0+Z@SEepl%6Rh)c^YrAF zX1q9b5#S$2I+g%w>`$W_wa3`-spX6#Q|*4kB?ci4*pNE_imC>@ybS(1v!9a%9Hj189kAtf^yp&Vu@9{&` z!`QLItF8OUp7IF{(%=u+qvsRs>Y`j($NukOPpH-w+I+cTr3uB~5PNd=={lu)ND=t1Tk4PUm?A+p{?l&7jvRgL3X*mZ&k|*9a&jOiH9|N{nj!5u<9(v z1`E(e*13!zZOvN;fgXtAU9};$4(;b=D9q&&HOr}T!ri{R`1FocBR1+VJ-2$NlggA7 z`UC{Y*i4?>%%Yr6V+9rmJl)@sKhCNr%ji7nCH+@G=*eu&Y{`i*|2sUOEAAvbK<{n* z0+!d=-t~dOMK6k(#&E@T&3M~IT~0TR+V)Tq$~_$kXuDw9@doh`TLzJ= zFzpeIx7D}t{sKxN1B+o4>bV7N1_Qi!G0S>z|N`Cjab1RomsHg4=l2 zUMJdUFnb0nglu?;A2FE3A++7?O7$Dn|L0ju|3mr5FsOM6W<32fbD#q|f*R&Vn4jbh zJU@wSn)k)j(A)hKME_z~m~8R!z^8Be&)+?fKub$}Z`)FCPZ00XOoDIaW>*g!Z9b7x z?lQweN&hW2#4r2&pW>jCh^6UaqMK8vi`y5hu@xy>P&d2T;V+28MKlTBn!3DP0R)hQFcQF@V;3q+G^xpE{v=PRSpStgiQ@ZL z@11y)OZ^;p%NNdDnmvbZ*Ic)|MYr$% zIFs`G6f%p)(wY62OU%I4QdYfmsw-7nKjo)MEN%29i-Kb<#jATwgwxk#?|6rPU!GY9 z!jLGe{$c;pJ_m#$RdgoBbN(HM#Q$b}8M(dpPyd%D`rn2j(Ja-!p9MrXUlEl;Raay! zbl&fXMqm!#b$Ajw;LTn=eWw9Kejcl$*A$n2ao=Z}mRtEJhWsg&uDTB$Iou{c6@#$Gmf7D8;Cne!jhCDJXDlQ-mPZVuiXClMcXV>-M)<&;ct_T}$j z2IJzM1%ai;y9Feja<@(t#T?Ym4RR}wXg#M!O3O`&M>ZG?u7tq-*Y_SCO#qe#*Q9d& zR<2|rH~3RN{@~)rW~jc}kD5j?eq}vbQBeRp&5$uP!>1`jMX=7nd}ltpLCJu!GYyQP z{#ry^W3Q1Y$s!T;#OR>B+XwN5)dYp#@zLd%a(f;o#8; zWDqT7Wa{Y6uj}+EG}5BBHuCNCPLlsIuR~YQv(y(k-#gyuSEH$djW^eMrTTQnrL(T5Z|{1<)iXI-mcsg>BAKlHsr(py6n6;bi)4@Ci)uPVcT zBl86~E45$m5A62>MZ^L$w$5Yoyt!za^)_uIEs6mOeF zU21Ym4DPD*K9cyDyPm*ohQCz(P$UYc9)w%v``&ODpX0cU+TJ?MwX^EYiHW^4>!*ob z7BI0p0Tc-E?EfJ}f&C>#nfon8ahW`kqU@FblA`!rGrKl*Dn&`X`YqaYv-hW%FtCPD zmw^7B=av0*jrQ4J7AJbZ$osEiTu-H^C&@9Td1vxt{^mP??L0OCh>IKMiM38G>e3s^ zVOaXbs}#)ljEPw)`kgU?{i!FBEuqHqI2~QU-{f~t)L(S#?jXDMTXi5#H)#v=Bl2z zH*fzNN+kDkpfuo_D-%pix=^>y59tL+kP5ufKV3#VZ!hiT`x6Q0DE~!!?5FoP#Q&=T zm$Dkp^(bE*086}7cz+nKoS)*N&qqiq;N*dbMg0yjZy;jvH6X&xecl|R{4+iQ6;hE7 z6Uk|d&i${y{Kbg{u15FH!;az&@w6Id6SYfGYcPob3@*0#uDyUnGeZlz3ZBj=s zWN$dd|`S|*7I=*b&mjE z-T%X}l*l-2nSW6%zxP{Te!M2fexD^M*ny%ia=LC0L9}?)QF?uYQ2F=`&ZLz{xT-Be zH+lDj@ih$kjgO7LXYYk-Lv3tmMgh>J5+O;}!Yk z4VNzf^>H{AN!N85{#4WkbE^mm{JZeP3!_OM-IZ4?S$@#{RMqnD(%Y2n?im8{E=uIj!|CiSE#t2cjs zKjNCE#ABzTiSjyvf4~YE^JP(o>R8C;{9)n4Y!CB*)|6bhLjE^SQrih_CkMjQkhl6N@6l}c_gmG zL)>X*TFEXctTsXfY9_wH?lcqC;R&x=;DgCdv0A zH9?VG4tQTT_-dgpRYb|ty_c2><6zg2HC(q&T7dkw6hP`qQcKP zJ#+LDn=J?~-75JgvwZ@31eVnS3Z;WxE`_eBaH>6JN*10D-sjG{fJgDW81>`Ll!}jw z&gHB%9q%xobVyewX6q=+GREWyqRN!gBisO2Cf}Gs{<)3}sN~W|*k$YP1W@HfkWG}0 zFh_gl3jahx;j{xPS0($DV|m-u#I*H;zR!M2tW~Ynp$ne@sfz`EGvUpm^czgm`;h~f z)O};nkn8Uiesfx_eqHCMvNPYK10gTvaTMC-&a>%o}nj)jI2V;tHFa&xF z#i&dX3e9+M=fh?d;c%o~oIeI9d&B*?R7OS9)(lsCHDq0)a8l9=v1@N?{MrHVtbCJkEYxNQTgOaobg8@;rS7N(LKibp)gNiwlSR^o|*34^Sf#`+r1g3%bB3D z^2R!`S`19TplRnO7DvaX&-Tt1gwCibm@O)95VBNr0{x{f`w$CCGvRu+7Iy)K_?(-Q#QfKwbfeXsTF<+bRj4BkF|lF<2JCHk`U z{5jIRZqhwz?lugqO#cMTkww|;TM-whL_hBxBUgifP>u?_;v@O)r0AB8>_#z5XZs|C zeV|jJ$;{Hgx|ntKx~FNIV2hBZ$WYz2QZLjacb}{hx5wc9!u$((QEyJ6yHS3@BHmRN z<@S;`GaiDosr3f?K}o(xzt=Pf*c9MI*jQhkxrLH?6{{l?&j#yKqYH{;x=EWj?p= zLh~vY7manz#0$(-AoZ=XT!;0(+T)!_$Ph~CvjF7Vl7TC(aK+*z0jP+Dy{0Y7FAeYA z@ATm7A9!Z4yKScC&{^~HxJxY>Xouc%9I|FJg#P-rH zuSKZ9su5n9A9WoGdy{Kz+D$bTGr8e&bBjB5_4Hw)puoJ)Lf(g}p(2jLNI6A9ZZo84*M9j7;lABRJBx69JoURz6C zn(y~=&yzG{I^EtGxhGZXT1=)r)@YNDqPkZ~j}A{c?_rB7BZ)>^I9f6JlI~rMO zJk_yUer3XA!8m@<%u)PFn|OKAf@;un*}7L-z!N@JvWKx%fM7S{M-MY2FZosvBBgGJ zKHBl(9Ld(0a54w)xJAVkEC#i7Y$Z|953kQNnCRBbl5b5|CGZJ^!Y8cMel>O~%@C za`29&#k3FKw|$GIOBp1+V4KI(8Bw+hp zw+gt_^x^es-3nL`1|q2L1Oj!AD$PuE*6W%#O8k2x4VOQWn37D{Jwj)gwO1@=-Q`Pd zY`kj^GX|S0AXF#j%toMw@f+VM?op(F5nmT8O`iCOf;;*4)td2ES?6A9a7NZ+`yHjDnxAlPuj?a8VL^PF6> zW4*D=H={Uj4FG(#yUxu~0pLsAcuF?e+Q3se>oVIwsweST)>FCigR6}D;$DigPppr8 zp2qTW)ZQ*&{l2}{c2seDdV8(fh4$=BZ-fed;zN$m7rI8Wu;F=1ukj1nsITQ5&;V0| zY?7Zsok@ItB6edA!gh8y4wAHZ*CY88yH(=S`UjeG4I}LP)a(*_di(P*Rq#W6MPPdI z{V@n&+OO1G?VjjN`=N>r5d>sVO>lI$2(1o~GBeH;*vpVdNGBK^4?fGf|KSq8mGQjSLPeohxY9eyK13 z*&;V&5;Sj_BRx(kS?FGs#jT5`JODN!%lzFFND& zW7N+lqq4i8Z#}Uv{N!;vD9bF+&}5S!8T#AC+qCvv=lA)8Al~!hQL{IZq68odZRTmCYNt_?K0NyJpiOZF_qS z%2y+bnR5vj2*6q<58Xa$q|W?6?$%N+vL8QF=|~Y<;K3X-I`~djIqpf;vVIzbeV=vr z=)mvj>_~#lOegY-r5Y>b@#Y^?5sD0haOo>_jqSsQQ?New7MJ=gI?p`MD6zX_Zc7a{ z_-Edo8aQY!z7>KGW_|izacgc-hd3+BmOV@qO6%IJrHOb9D@r%F@uByu=+WP2oM*+G zJ3ZFopFIx`uPuLd#xK8_{j5qJQKd7i$l2Ux3ix4X;D?v~{Neh7YZ}mAkV%yV$;Ihi zO88YiZh7={*CqC|_eT()iKv~Mn(w|F59V-*H!d>=9*d<2A>Qdr@V}x30xt6ZJD&T0 zBI5qvO#L zfWtVR7tZTmZ=Q9u(}T>d<#eL4D@o6s56hi`Tt`7%6F0 zo5WkuX0PBsyawkwKk2z(%Yv+Pld-}W&z+s)_xHV8kIPtU_6#6O2g9VgfXOU3P3#!* zbm8CVAtGm8&&z0MpGOIrQ#uap8nJuQ7t zLT#&wD=d$4cTDN3q?UU`+Gfdl%g7|B?<8r`64WKi?xAFF8BUMRH^0q5JjQ85>Phn< z2HfA(bQvS#c2`I_l1-2MT)R_|4BOFut`XKev+AWkui{N4{Pdq!cvw&VU|-E_EVFYg zD5IKJ#tfB5nkcY$FeisEHYXR_)qOQx(Y>9RXZHS_kjz8(-%pF$4L`Bz>A{Fw2;Vr| zRjd~IUBc3zXSTIGD~wMwM55X%7#-=px?}CVq#JUjO+NI8uJ?F)@YeK1{uTm4@4Qj^ z^wa!g1?WcMOk2C4p(3$$fIuM6v>0NZv3qHY0dBoo3-7}A#_O&(Ol$BZ*yTc32dq=~ zHfI%`*fvP$hI)>zS5jN4wmpk$t?lpUw7n8h;TGZ5eAa6p(LGcq$qh73mGd41LuXkI z^EXXz>r(7rmkWK}OgX3^E*I=TQs{7RXb&nTVVJBwktM!2m_?c}sqHfSk`Lr{K22G3 zH$tk6b$x`j2sGwr*ux?bzgC9R8vX*&zrJbK7D1%rbv`Q8tC2gfJd{Zj+CvFkSuFoE zjZ*|tE5!Kx!(W4R5@AcNjGlQ(q$50`VuD&1W^lz{no!yzuA7eA+YbvN47Nj4)*Q&+ zG1TX__*n8a_v$0l?i|nywVu}UXS|fbG#f)OUHF5WmQIGwc}bE4`~%=}LFl`5kTiYT zc-iOWE^=DsZGmCi3_jRs&*+x0tjgm~{UUQ1^NdV*ZUp^>xzbUF%r8WhjaEVt#!Ohu zRWO=uqrS%LRrsl(hWN4lg5-+FsFQ-%rvwuAes9;hrj)jOP5sD0fvo|x!`xbam|kf1 z-sJ1f-fznt)(!p;;>G=@hng!XofGTDG8QgXx$tcWFL1Y4ZC94uy}r;A#!Cb(E~3qY zo8$WzTLxo2r%I1t>7MhwX>K*NfA#6E!L_B<=Az#9oIpH9V=Qw$g;IQZ|J>`cmZsr+yBu{nB_^l)=AU zZdoMw^F8$P)44cxr~e~Ry#C=jsl#gAK4(tlb?3EYPsB7!o1rd*BUbY&3qawAPRtFg z1u1@glydKl=*z#@k`n3mX5W(K5^@eQnep{hs<#FGc*ZJ7UbR2S5qLF0QX#+SiBSXV zI_rU#O;lemePOcLu!ll%z81-IYS zM+U!HNHdCJ|B)h+4{g$+juyDke!2az%+U0a#5d1@TsHck>(uAVqBZni*Z7DvRY-)mg9~xL4VWoL?yIwfE zmGIXJX(%Vi!5!;7ax$r)xlTVjWjrB86ekPl+U*9i+Dhnd^U zss_@FM8b$S4xrL8kb$&U7gPROBWE{pPeX%viv&Rn&(dS>+?9Zi;G>7bFr=7I#AStt z=QWK{tpy|C&ckr>kps>mM`@!6bd27d7QXfZyak{-y0pf$D;3hxz2ky+r|-Ngqm&)d zXrfRHl5#u`I=V!*3qRZIaFa2A`8IGyIxq$3J;L8BF0I$-h9)Y%|mSDcnwa4Gd7<08myc1v3hU-~cY*Im$b>N*PRB!{krWR-8p3XHLCMEydCi_y#N**bEq;vAXM>Vo8O8hRQu8oQ*5HB+4qg*gcB!v=uQhr!U%*ROynwZupnfG_!DErGcVXr%6+S5l(+IjTg#PzT*vU+$A2|=s5{7Galyzh9+G=uCp?_W*oI%BByc@)-$ zqP+w~Ts1?H)9g#|xs5J5;L2sd)oH?{>S9$~Y9p#2(r+h+$c}Ds;NA3LTfd`Q7490( z`3&FF>M+1OQIBuQ8%HpmB(b?o=LT`g=t{|XsVpsXj&Y2P9?#b&u&U*qW*v4yK3tNt z{h$@LVNR4lC(5_cwcHt>l;vJMqN_j1w!S9V_uaOwCsXZ?GC$WuP0cxa`r5_0yW6gK zc)p0hswT=XqDn!~jFPy+GIg5O>kN{TV_f2~DC$_I0zva#LHZNWL_E1)z(9O^ynbzY zMHV4Z-~ur>uRxIC`G%j|0u^=1r}wWwnzb;ENu`DC%I$D+*N?Y|5-JO(HX`>J3`*Bx z_SF2!6M64!E%jN*`H0(+wTdtWtD zy!&*Zfh9g|MmAq19`7U6XD)$i$WZKO1pP{F?N$d@6?mDWp+ME>jN~KInYRA?3a!QA zeoVLPkM_ic`21Sj_}V^$)}hpM3p|x)M%yu)tfoX@`0jh%X?2lW`e6qc2COX3M;%~> z;yc71b-|97J3K*L^w&%0G(q|Ch1fUs&{`qvp0Lq0!Lj@Jchiou8JtxU8<8Zw=BT2~ zIZN}mgs>-lUOBlHpQq#sO zbT@?8@-8c_LgC^VEaq?-?z&ZLbf-O|uNKm_`E2^ls~Zyg8Es8uLd7#LM$ zlpE2Sn(BXj=pct&@Z(CwH7~!rABfz0Vz}VglGP@$+QaUC5+V}`-j3SUL%2Eg-E!@* zAKXjQa;&W%qUG^vlPr~P@be%W)>^njXe-75zLdZlCSLvkr2U}^G}X4JKu>OBmgh0< zJ7>Gyw!fFxB~Hc!@|jrYbE?BJI5?!)SBjY%RF;`xajp()4<1?I`BSd6M>IXHnyx`| zWmBMaYbp;uXj06)FSnQqiBUv|Uq#qfY%etPPIH+YhKysrM78Vfrn`|NoitGdTVMFi z?{M-Mv`kc!%4=lY4%koJaA4nIjNbkF_>JdYgffTxbL!1j_)bemBpMr>+99#hMkj7{ zu z+!vS65!~sxzHPIYWO@cKGXrMaWuv6WnQQ6wcq3o4Csa$Trgc%W&1%e&9fZi67N#pM-$pg7{tt6*Wfo(od7 zMDKTBB5QefBenXFFet1&rRBp8(NLq)b_S=nl5zGu6V&da9qPG`V*EbW8OE5rK}@%k z!%4%7$3akY?r!}Ff-RzF)&e9}e;DnGt%fdp@vS(m{Gb*9*mQ{p z-Xu1~E)yHo-PNSi&lk$}qpkUSBfcDRZdGiJWgI-r?(2!0d z(NK8@jgb99W%O{8(1TdZSlc`GXyvkdpxO@pdleGM;BTx#K#R0TiC}{&4606ZvhjE_ zMir1!?}7vqI6HjR7Gx7$99>mEO?yw1P){rre$WbMOr$R1aJ7hUFA+%0b&R_0%kTaQ z{bIdESroUr(vDnNR<1edrA?BUde1(S=rM^Ax#7;Y%kp}%CjKcP2$K$gD#w*u9HL`- z%WMZ#VS}cRIJ{jeX%Xn{UJ+=uaBQ4l_tRh`!ea}6i#DVb^G)!@c&oH#JJP1|FkDd3 z8?bUuN*JJ>b+a1~n&D8f4aU(Uf*aR@yd^G?Y!JDBGso;s6RqSy18pAE?5FLXTX(B| z<>LR6g=~RY;0?dku~IXAT8($d6ve{lIQPyAymu6v6<0)FtQLk$Cuk(cFEUR)T@=~b zF{Vw_Zp$1L2$FNX`*ty6i5e}NPR0oEe#iEw8yq9DWqr{>Cn` zl-FnTNFFe#6!z_8B9S7n()Ter_eIpAQl%aM^XevXiCtz~>!PkeD^|NOkaVvFkdbA4VM6 z=l6Nb+gn(3XqN}I=Q;16!xqKR^>`1x(+wP)6*AYLYPV5N=o7?r+Z%V^&^!EItpUrk zeP^rc>A5jt&4shuDx@DS-jLUIdHkUyRfs03I(Z}h9-3AM*s^t%r|Xq>mCrNJUjYvh z2_y5ll7|_AgY8Y7U|1l<5Y5=y#ta&Yu)?>M{gN~sh@`7C>{lwhT&ZNv!wac_B-tN@ zS>^pmmQ)zBQOb&v9aDl>RR0(Ojet8sQ)0Xn-gsQ2!%&wXeiXBBc(<{LR&nuuD1?7) z-ENOqtgh*dISM*(avhEIryw1^<*ZUlvVACNu;kpm@MXobIb%ASu0%(9#>O&x(mGVD zFgoG~inv%=Wa*t#aH#rVSYj@0`{)1)Bav`oHCuWTFwjv5@Fp+M*VV)cyX9Ho)9-jO zij+N?{Yc6XsN>&E!-yr1e$LLu<4e+%@-Z1XnLI0>G7EG@A0OmfohYldS*8;#J^E35 zJaDPI{!NGH0a{wQmb^6ZIgf>9UGSFyQ1N#c;NS^%1e$QwKD*Esfe^MZQ!b;gnH}eu zO}W5QnG9wQ_`uRGI`vMioqsRfH2LC?zSnLYR_quF&ab}*zZ*V_r?}~j|8i&iJSr|u zARg_Tzq7~5eodn(C6P#gi@uD?bh47PmIioL3@-()gd+xt8l+9i>7rk<2f|mJ7-y@E zk}vo{@#)2Bj0}27T|>NH7|8Sxd@mJAh|Xs zFbvH?t|38NxF7E`FUQaxrf#H;dUxc)aT#J_M@_g$6|7U3gqdrxLm%w{(Echa1Ke>` z)Ua&_YqBf0vf`{X+|6M5$O?25PtGCcPz2|q6%}vmOWdW{BQ4}p%b>Y2+0Yhiv~9RD zT#f91|G;iNSkAZ@&Qq*e#LaJnlRDs17?2>uQ<3x)_U5Jc_LqGh6+Q&Dr+k-X6vZ4*XkrFOgl>vIm~T;JQKBUm zbe2C(y>TRDMZs1o_=tfwM|)f1`p81xhK(_2+U}k;RkC(&OsG81Y!x%MXs7kyf*+{5 zpnJqvgu&y>e61evvXusfgyStCDu+t|4EdPdvv^3mzy|YKhwkhCAlA&h8i&umNbJI# zMVJ^@v0g*_35sx0PG&fKz@VEjv%0spH+qSsqq?s>1y)u@PnKHTEew7i@-0FZS3hS? zg2yNmj0}LHB$j~X8zFkHHF;2&F9T4akL!5OSlaK4$eBa28ZQ_IERfq z7>m98s$&0cCMYu zJP&;rha|(0v#j3~6Qx4pMcs0)vy(7!=P~1@e52UFj+|KZNUVwJUTBGVbKaXG%Lhq^ zit0TjqTiHbo!50J>abzH^g-dRBdls!bV|7CtKQ1L>zU*{e!;U;H&c5eb_~01eJV zcLF0+@okT4wci<=JlZ<0pV3!5>Q;O6hIe*iCC_V*UcjB-+98;5?u_kS2Yg$~djPV` zpe#XLaX?KxwU>yu52SV;lX;U~{ehYLu|8ya6+On$vUnfMq3%l?93@GxQaqAP2$NE{ z#4{V$KO(3+Vm;X|<2PFzHUcx}yvFK;FD6i#C383xqf8a@4vU8;UAavrGPcyd^_ZdA z3&lpkOUP@H%deauxb|+N^#ie#uapWF^Uz`WC#U9G5r({XfXc{B?Z^=kb{M^r#dcF$IUM6mU@kk@Yq4 zj?Zu0TmrjeB^3lTa3t0OFRa5RF<>F;5>{>L(5`@8#mN++%H8#ajNTH+R;a2RfKHm9 zLtm4`(`5J+DTx75yTn_iKP-yVXZ;X)&Q<6<*bO4Ouc?L)0>%K07I(ZFL(38`K`%Jg zb^Lj~mUSkM`SF)Xe_ifDx7kKgCuSE;t4~Vd>ZI3zen3_nq4OtyBL@k0Dz63XU22u5 zBJgo4yg#T*F0y?ximFpN(0?YsCm94h+2-uJTkW<-UtIX6mBrxtB?#R4b2q;6ZlFN(DSkybm)Vbi3s5~f}SyXTFsJTjtq=><8Ol;n0@om|y6 z7&_2|E=F>pw|mBdB_pXAXM8_%@61aY+^i~1SvuRv%`Z^59~;hKHO(`Z|6y6KiXgm=f=NvP2$g@<`clYwKX;5 z(KivZ2&zZl7Zl?>*ffOWUD_SEovicj4UYvxC^V-g>&7CDElcMs$dMmZ+}tI+or{6~ zo7Ze(jAyg`x)d@w+d%&@JZOc9c>76%jh zmE$$`l>s^D(fD}mF;wGTqJgNeo>stQO2!rJk5TO~H`#6W*eor7Mhi2!s4&#br*DJj z_KzmbqNWhHkje_exeqzoI*iHe)cEo?l#Mxr$XdeftkK;el;Ef<(`#M(k>BJU$xWjbQtG=$QV z@0ZO8%j{Dv-T3^hD{J*|v1<9A06gwvQ%c?afDaP{sM}RHoJ&_OB>>07ROT1`{?Fo{ zkEccny!Spbl_)GbVFrYyIhe@o4~T?$9qRcs+xI6ob*z_{m&;-Rh%tutIa5OaIvbQ9 ztyab2>-qHJ-n#Zc!_}zFHRc$}%iLqUD;`cV7(1~p&8_iQ&k}2!=_tK3JUvzunhwoF z+N#GIm&uRUGJ|neDsRZ*Bw;~*Gx{g$#zx|xc(aso^2x`-lDdJFx!LS&u8zSM@>bnv&=tFR`&+p_nHu3 zJZ^@s51TR}Ym1+$xo6lBiNUrGITTCh!DWoZ(nMl5ycT5Fr2OQh@i+jgRI>S;&+{8) z-c}CheYg%5h>3N3{d&j-m8g;@FWD9zv1~&VDAa748zViUb6}yYkE=ruB zMqH8NoFeTFFhK$Q)4g%qUbRobC&TbYes@XLhl2TXA_mp2<&%nZLAzK@Wq{sF$_k&J zC!S!&sSyQ$mesHJojDv@RDvp@7f&o-rSk9_3S{```_2JbV`T$N(5{r5voOLJ6*_`Xer?(6fdi6V#* zMb?U3UBn58j%S#zTkXE}p3k}&O?dMQi}+fAqrivBBGSSW(jE_GW`deYgz8rS@vXo9 zeSRo|e~24~5GbXsi2e1w;D<(h4=XDxovD7AwNJj?_{$o3@+Ir9=By`QKFs`8m%-~| zj_KTBJNziBhth~i0q3D1!4jmsqN4AuXZkSUuMbph zCP}+M?Hr-2ex`_}K1Wxx6_QnYq}+){S3);Ft%y548Spe)u(EbK{yJ-iuELciV#G8A zVL18@I(eIz%Hzj#UPV)tD-3Mgm}Uqqweut0ckiB>;c^GtF7GPGi6)>j9v3jL<8(0wlZ&(-hC`IA&zp;Hfxc{-J(x-uz$3% zHKi?Ou##khv-)ke$g377-2A@o`-7G?&YcLp4nfGkG?u!(r_oK!x)X^5Mbnk#r$QZ3 zH>4JX36DgmOQeSsNJNd>n1Q|Ry-yK;Rmargni#35)~xVTHxB zkd!23~Y$4jZ{6$eZRlq#NSF4-)}eM_JkMvEHiXzA6MB~u$)(I4Jq!5 zY+NE9xor+@)2|v$m==b(TxL9~UPg9IlElsIk2F!1Uc}t$dfXKw8FX-MrB@rFb19|@ zncOSHEweZU7-Nz)a(MyAQRQmS`tqyu?dEf2HWsnfhCYaLIp}s|e2n-Dt*M0IYW>}+ zj{}KRWhzqMYtTQ9Fm5gMZ-6jwxxPZjdBHmL!#zwPU??_baX)w{!2` zgSH?97QD000007$RoSY35O8_f)H}uL#MY!y-s0M2O0u1HXgpye;gT@6NZ3gT5#3 z2{*%AHTSl|cG7F6HJhF}q#92|X3!zuUYCC7I=8){TV$;w;QQ&$*UaTLG2)*MkvpWI zA9Uf={0ur5iwGyrle92*4rm5{_Ka4C>*Rv7h%_+q^V!=6)9TU~uxt@^PR3uaeBKi6 zt5?NDwJoy4wFIN#VVOZo&pPD|56COsUbJqqU%KAeZtA+zKKj0@AhJF0OKcOo_QPsq zFAm9|C4a9Jcb)xRkd~%ee+>}rB?o8F&dwo&1^@s60F;f{%hIfe+1#p;x29Gji5`hpn$yhhJf`%BkF_6$|p51#R^zU$eI(tgl; zBz+0J;`M{}hDSr3K__!Q=N~~QXAD02dB-B`oQ$%&AG=#yyF^``Sx0AS;$>K@E40h|PZ8n%cg0xaZ96B1o(Z0Ltyhw|_6wIR z*;lTxzgM3BAz5P%?(yAWz5iq~uJeMP>@k*X{oB&Kxb3AiG%Q(R-VqnC+8VgkWY7Qr z004jzYM8y+E&vgfK3gI)XuFqgE*0{2OjF9Bh4VP=>D?JnpVaIuC+#b@R;*BHm9q&> z5^dKdR{Rco(B25lal+H0=ULldtdo`&4-*M_WQfLYipHigD9Oj zamFM}atO`*t&5XE2kuFQ4G+#$ozl#%>>tUsYZ5KQVTI;(o~rTrr=RT4g>PPw+_hi0 z~npmTLRt=P@?edJtrHmh)|$n}8x`8f)$%G)~oSzWdBpnPuxwmC2@ zl5elb@6#8aK?fI1FqI@A3)~?SXPxg96?Q5)1Xc+Uo^RZjAcM9KO;>JDmNA3YJD-Es znVr7r6ot$y#yJ_aUi&%;RJALqz>+D|{8MM55a>#}U_JejxZ?D_@ zJ8{Z6^P8c zpyiRPG=nb1zEaMh-9$LC6u1IvafswH=&&&fYZKZ7*>-MdsoR_X7eH1O#IxSud6T&I z1D71Rue7&aI*Mj7V{FRjb}1dY0001hl53c~#4SppSPxpbA?cHKEzNta zZ%@~4UME`ezaJeZgD#>Lha33GTa{lAI;_lYAX(lgTGeZDL~O5CEsolfk3gulXFLOf zNwcuR5zmroKq)imfSk0L+tVVUcUkM9$l{)ZC5q-u*kA)w~w7V zbYXSySQYH;vQ5J7tqW$>tC3Ly5B~MDEkuoT|F7S_u@b{@{`%c-h8}Eyulc#%q~vM_ zX^e}t*5$AY)eh==W!xDFxnG{h?eH{SU1rDo>-G*jJ&;{VJ$2|ko)U)Pp}dJw=kVOj z?d?EG7b6Ax$%U|`GV=76ufz>phK85_8Uu3E0NHV=!Ze!_f<5y3bGM=jx;K-5D2;h+uD9bo{)uX`c^xGy-;f~Tx;mbTg^LN|K`4LEbDciidwS+f?FaIgeA_m=D$B-^X>oJT8N3tF+Z(F&T zw+mXfyiBkp*bO+OGpe~L_$vX63jIqpAcI|iH440`iOv)MVcNap;| zz^S~*y)w8{?@N#|y&dn1xC(#jtQ*M^m?LiLX2i!14%)>KA(^ScJ)Ioff}#S6m`Qz+ zR2h}}YWXY-W^!kLjo*OO#jZ(#%SMl`_)IsK_Sp4+=H`$y`La`(r@FUlsK`9s=kmow z_X{5YewKFzU_?Z&TQsz^w^TT}xK6Af-%F>iNXLsFpC@^h@{rD56~Wwq(x!vPKH6Jp zE=0tu6t#;c59TP>)og~HbFcJO?wxhD^W5R$>8ShaQ2H!?kdp7gncL#@&k-`JpHI!a zwiOu2U@h<60Aa^{=06;4`0&^7j}Huoo5yX&(gi)YnhWGD?fTJiRbIO!a(kLiLAfl~ z&@E%xIQ6Lt!H=1@OD`dcS*s8Tg^8SF`C4xKUvqZ1a9By`*@%m3c!Wb?K{&4{-e zNn$|}^rJMX28cOEqZ~3Pk(#R|Ohdcyk``{wj4HPXG9~KsICba3KGD$%cGQe&(NMoZ zJfj!ahklJU$u-bwC31NC6XXq;NuBT<2j_L#;~N37yJk5ur6UJNb#%t!uIyGPv%#u3 z@aM{&9_uLXEm9tuULn)+9)0+_q8AenLGvmO+|7RDGyP8aXNfKGVq>M$#MIUI`A;~X z59XuB1catM%?%AV@-+MVHTg63NF7~5R4b$UDE z+TnWCZ`lJ7H2q8C67DZ`R4dk+1Mrc7Qb85<+mBCp9^tsg^t%}dZ81~PL?uJ+eC8dr z(Xt(^(CIx>;nE5nfpe`4XM~VAlLWJewVQDL=y=R?no<0saIK=*uX)y{#J!nE`?8S* zkKRC<=@M;tf|AQZr*azjk!(SKHdWt`E8dUTa=fFO?YIcz0;Otf2jO0Wd8sYmi6gN7 z1wK@9SAB@M`5Y2G`FOj%Ej3f1CSJcdDIoPsg2SEKLgaQ>j33N^KStC-6I z?)+rqR50&iks<%d{RV9>BK=4w-hSeUtU#ZeTxw@UxoA_&_lN!so6&l;XIK=vAkdD7 zTp*}IXZkd`p89qNsd>T86w%s9fNo5i;p&o4<5&nJm>v5po!8CAJUukuWPvW8_d;((_gAR{c^KG zR~^KhXn2UotR&7Xw$|nz_wot{FvX_3qA(j$`>} z8;s!2AT2;r!f47S34!5HtzM3hVZ>**hn$@*WEO7DNk&`8r|8ky&@dflFXH+!Rom%>&1e$y2?gg&3~QREBTr;41kaLFlh)=LNj*WE z0IVe&B25VQeMIRbLAE;Z$w5!LMr=Wqq{pAXtgQQa~uyC@haj%1!QU9^4qaH0fev+_ErbydCToJ3^tKBq1a0 z_`#gQGOJqL2OP$h4-Coj$NQl0?E?jtjm0W5BC%y7%%Q+%SP%r)Buq?59?q9dTblaf z%(oGk6sEzl*(qX{$mjl&Rt+I(=$^~8Qm*OYyz|{rsW4+g3=+Oe#$~VATk>0S&}J0{ zESbf9xGveZ4hEp@R0t()hJpU2O6~9*RGnIok%v%CbZpITCpITbaLWw``wWLc`o)K~2hWMg57^s{!yqZztpV<2 zFi4F#;6qZW<*15*JZSl|D>+*Q9rVcEMuB+_AyOqAxJ`RTnhtBAe0{1XyK1rocQ_8O zU7No1aW?YA=d6PjZYed=ztpReAgH;t@+s1ijX7A0w@}R_-&-4gA3ww!#A`n)6hM1h z91;#-*O40WF6on{nZG0rjfLLxIhuc$)tme&b0FWy^eo!rB+@tky>co&5MqM(F2M?N zZw@+)PA{I02ex+GxGp=XG#xPpA1|(V62zo(*cfXr?5BiHsf@??usH-->Dh-}9wvJS zbx8cK-VM_Kis^VOP!KQd!3?b532W-~C`~?_?(x}}m3r`@k?-TnVFV&La8dk_{hD5E4Mqw)T{ zR9Yg- zMi*Qwa@L0X4i`#|F5tjDtuB>DNqv1YO-a#wU>!YNaoX{c_%G&i)T|lA!i22TefI40 z{fzAFLg0a4Ou`PGMJV|aiJs}EPtRd{SOK6i3oS$hslWN}!SH^LjX-U1clE`S( z&oyU~Db`S|GqG$FKadS6QtBSlT`;@KqUR$GH9p(yyhdI*u9xEcu*I%Dq?R)1=>bSz z|LogN+HO+C>#*ox^zBNW8zkDGL# z{q@>zAn##xglb0DE=1X3A?PV_1VzWE;dj0W&(DEF^27uNes&Y3Fr*C9yCU)`01{u!#`CIkw-rF#7D|*irw%5CDPeXCw_f6icHQfMI z_4$Yt{YofZPF%&cjxll8&x+<)p7=MC22eh~_l1Wx%(#Mw0IBnEDOiE7sK}tkDuaY3 zS38f=UVz3(*dm!1o}TbTZYCf3=xt6tl@VHp^ufZwZDMaw+R8L;CKnqCwNVy@Qh3e{hcS`3Um@N+d2+d_NyJ9<0 z{5biy7$A_iC?WE%p`at;KM4T;zY+jh5ZPb1Y?Ep#DJj7^)qAw^p9vrzf-O6`yUARs zKo(2A$rQl#dX?=+@yz+z);TUD)cFlsQ0u6O?1>;DDB!v*$nLYZM5b&I;VZuDfx|hP zS&~MTItBW#_@r?kV?VX|#}Q49gT7tDffHHE7|#r#zTGzkfr!2Ek#BO~rj}CjpDY;e zuL$A~Qn1!nz%_T$Wl~NifBO+WMuAMC?=@FvTXT3oO+AIGxyix0v1N z<(9F%`hNdO*`mdGl$b(ccqn`u!dE<2bVq9iE`NSYv$M+R;7Hir}fA z#K+|10>7#87n34tgOzi6b@;tICxPd<%jsV{T)n(}LQ>=tx4vO9bhi8v8SSu630zAM zG0zkc5}tg(9g&n}SU>IeDqhM44K36N2eUeY2sFcnX)X*v_m(Nn{#gdUe@ym}xVxQ9 z*5YrX53e4>RU4t3nIqwR(n?Q!ePMt}vBUO15~I?8`fDWujFR zxV#ify>v=L(?^S1tmv#;%#uuFfcLoH#&HFQW!(-!!^D#A7WRA~P+}{ydvnyccUgaj z=eP2FH-)nX^H$WOv?r9pq zufL4Qi!B`yhB~^JSrNPuRs$6@d~F;!a$m>->2He$>720eOrqtia5wI;X;FdkzR|Ql z0&P6TjQ&9Q(LLE%;-!;L`Zy<9^7v)A%6MBv`S+w zf#wt+`v|l{mj@yQ#-U9ww!`}-yI&k%in8MV9%jr$`Fdi8+*E#z@vXdVI&H)1Ku-Tq zf!ysEc^irOI9z8Rdxf=^@7sR9>tSz|R#7E(g4J=NL9L4vsPr3T#4eX47lik3Eyeb1 z-Cy7Q7@J%0#U}Ckh=n^Ny8Hd%M&8(B?0Q$dS=+76lH_ElwSIeSK?1WbqOeed7vnco z-*+>=v-Y@qm8vqAwI~9iQLthmV=J5qkFGe}^7&AlXMs#AZxY^ySb#|SrT35PMyoB{ZO?LF)ZtMUl%;k?Gs!}hp}Go;e)(sYZ-~l^-srYs;@(pdxpY? zR)Vc==ku20hLohZku|4G+|shb3)_ptp3Z3YzYPDWnmEa%+efQymy-*3ZfPyY^(vd3 z@Y6O}Y#jXy=>+c+!o9!e+l=ehHR$o%dnUVl9Y8Ggi})aq`0TEd5;7tKF~aaTGRu&{ z?!e~}dT|W>&%7R4ia`@$1-w7g6eD>ObeIsdl@VK;Q~7HB1_^J&A1q|%O9t>+MRIj% z=~wnA_~*wGAm1$JZt3XjrfIGE42_lOLvpxAw~HOl?%4asMXT$WV>^TcVyTj~EMcVZ z5Ald8?}c-#PMff@k)h#1YwbKU+Z{3!QWz_}rce0DwP))z<9p*FXa^$l%9un~pHb;6 z?Zt0E}-A5&8rU!xKlD2RyrFdVW?w$C> zZ81@J4IMU3>wKltwUzf74v;pQd3hL0UY9`Nvfr?4@`jGMjibL+>&JKjle{8!txu@Q zZDVH1!lA~&KJP{1Vh_#yM&n0elgD8tRU2a1rnTEWZv9g;Bfb5}h~5fMEAEjLK7Lx+l9mPUJrP;16u{+j2+ zKuqRG(_)svVrWGxrr1Hp=U($8F%nqVXsatwi&Hg8ojz@rU4u-_`8w^Mg4gPdX_k=X zL$SURl>hr|iQk~X;%Zx7i<;f@cmWXT zwd525a!l=ruLp7&PB&km7a8A60%0N(h7n{4!#&6>TiPf{PS;x|A4D; zr}MhMOCd707FO}uGm$T^3LdqH!N%lA2Ah)Vw2gG%T#K`5m3a#= zQC(nhC_kQMIJ)d7NF2~tXe8^^*YPUsrU>ngfeZ~YHVe$h&V=ErW~9_wq_?Wi9+#cm zps?d(e$vAr-E3j&@;G-ou+6$|of#j#>9x-nv5BqM0tX&}-kTgd5x*zC(Yt5iUsDl6 zCIX|;*){_)3yF#>uGB8Kq7U0R1pVK2oeDfjVTJdAPL@{GRH)6PU8U;nzU+gkGKxpV zKE#l<*xnBFR*sLa$cexcsic_XY`t!`6oxP(V3dfZTh-k{6thIx2(PmpAoayy>m@rHrE zMh2De`{)j+-Ew|shH{5^fDX%t2f6$)_qMyqKwppU1`Mq>ypRka??#uIf*@rUgFQjH z!tcr&)Oy4!#4y_@a>0H`aXia%;S`K;Fzm>+6Y^l&jRKbt?m zU77nsxsVyba0pSywZ;m?#2+k;vy^z4n*l>yF}gT#IwgOY>kRb(g!$(fWbeLwyJMK##cJg0t!~rct0;sYvMd3{e z4l%*#3F9m7J=Q&3;c;KQBZ}Tw;N5fP%f48~&}=5zIs{aZwXu-}8cWFCR{ML;6>;E7 zn9;p`y>Sa`>-;1OAFCLBUppAihWk@~*3>IsoK+UOX6XprRLvDpx6Ceh(=$^ctSOkg zpZ=p<3MBVlZA(eAZo8tjFcWxYDv;KI2Lw=1lgzA+B zcYajY5L@)~naVjm@UbE&J=P(aSUYnDQ=xwR@(FYh$mjp@mcP(}G<*ei)f-*lIMFXA96_ zQq>dIW8%tb#V1*{#iJyr@ZdosC59UNRj14! z|Bn9yPeEPN3M?9(swFFbrq?VY0=gpz_*XBgcWf;-=DM{^=bKmV40wp^kc#P_H!VcM zq|$tbm<|kY^4oyx$kq$1SC9(s{ThST3tSEp(gt=7XH0=jA@l#ZAg~TpuRSY0)rT8d zRl24HSwf6RMrC4YOK_*Sta9oY&4cpdhI%QHOx-9)$$NHB%upti9{v>)=skc7t3*pZ z%FxWK$!LpUN;q5Boa$tGZIZ}6F4Z%{E6;RdKQ&Yk8u|RG!{V4Qw{iKA*eu69R&-wN zxs!K&iggY=p+C3n8dG5aNMD^^RnI#&S#-%zDRdU^d|+wJz09@UXjGnfZ6JpOzG<~J z@D*`hS#IOU=@t7tvBEC6`N8p_shTp)eaXwPx)D+kcv~A(Fm^8X4A+wF?O1O{BJ8G6 zf>x-NrT;{^bx2Q?oO2J_iq1Cd7=|gkZV7*77AAUMXCur~>a}`747Y)Tb*KC4zWIu6 zC5CJRGzISa+p{}7IE*Wbf5k$QaHoP>YB1bf&a(?E>86Mx15W!eD{y5l`RuH{&7(&HXIp^fh|rmLh6g_E!L zXSuwDQ82`(|4p2RarSA3{m|NYh-c3ht2#Ktnqn*}xU=_OxWm;HCc)}^b|BtcNN?K9 zE2nzC%doj4#*4H@Y((MbHZ2e+qor8!fqc16-EqARzF;#h$&~Rp!*9-7c*lF5Ecz0V zQG*JZr0E0alsGC(YaOJNzwc7B_v<`ZWTl**o7w2b+Ee zX8I9WPyHf=SJL)J0Y~qCTe>s@Fvr{;+C}yx_G`g4mp;|E4jd*3?ahmToVw(!V2juP z9tU)No(gY`PaFO4$ zMS{leG9tIBaV_yLGVB20mx~e!$%Q;}Nh|vd3m}AjVjdnu7%2N(zuS}kRr~AN9L0Iv zUg1X&qE9+{20b{lWOwMUvlmDaC5j^>azMcr^+9@ zbhJuPiT!NN=|v|olaUfRe983-r7baR;h(2Mr+*whm4TvOe4~n?ziHMvQRFbr(X8f~ zle|^mw>DBl+t%E8t8lHCT0&$*XbVu{-NU-um87)6VzavYyVt;3 z(6hzb%1^r#87|HbH7pADm~j*rZUZjgyXf%K)w ziR+55t1CVLK_+7`93<~R;*=JzKx1(oSSUWOrQ%;E(MSi*Qazq>N_jCCg3>ZNZ?Nm{ zm%0S=;BW95YLwb+CDcyNQ@t5LYl0%q@oB!~v?Iv6G2DqBgtTSHTV2W%@rS3)m*@u` zy(~~XI3*mdn5sJRc^x$MZmqRN?Sqciom`&H(Yo5>{2&r2qQ&}YvW<`4>D=MMwGB*o zU6%2Ar7|mlj_-p!cSF%=+agL7Lh!cxW`?(?c}qxtpqbqKHyvZ_cky z%SIzVe8@w37i*V6V{>ybn)f+LyowZ&MNL!eAd zSy5J!6t^~P(|8axR>Q56pEuB_$Bc;BL{-OaejDx{9d=sCPLw@Psm4dH`fK9%$}ljl z(ff>Hj|b~lrn3^{aNyt5zU3QZGP1Rt+?d}ru&#A{;`nGc+RxGVo`29rLvr%f>?OC3@24zaiKsz^ zcJ%^sr9yFkLS%itrqZys1ZI)|$!O+o{K+ILU6UWB-%bEq>Tu$#D8jY$urSU`lH$J* z2q2t;WkqgrIT~V^c-@FqhG>VWG|*U@8X=JJ9-Mk>f4ckr9}M8Winsi2KVb9j^wNuN z+iOphfi`pdMxg1Gwug*0-%5*Q|0foMS-P#GOZ;wLwGks6&c}8`{KvB?R&NLbv*aD4 z(=V4$zd7_DKf6<0QWna}qJ5?PUEPNGWzR~7vR0OdAir#GdBy11V(-yUGMW16Va=T! zyH&R~vOF{EI?MVWE)27Y4is5P_&`<~3gJgR*^``X;d44K))G zF?2|Ex9{U|hq0Z(1P9CxtmROiRWuPQb+G<02iNI*l_9VxjeDrPFjlI1VkcL#i0Ghf zYqR60Xi%!TD)sU;p>>Ke%{u_9f=Rd^=;e96dawI!+{Uvx?wL3W# z3QbhO{O1`?@1~1D`a58zTU-hm3P&l0_ah&b_rl^7=bcoP02ioutm<~H?%3zDWq4gx zvw`0w7}Pr}dcfN03qg0;)-e?WZ&~dvNUO#N$m>*V^&*PtPtD8YT{|Y` zSJF>n`Yp27sE+Rj=x~<(^hT?IHij|7VIY0%dY+$mCAF5NpMAEWn7)Pj!CN?c$QgR;$E0Sg}=AG_8Fuv6t!av+VFx{u{?zV z$r5>_#-wYc%{`g`(AZFe#@q9J*XOTFS8#x)qppXN9s$zYY$*4!m!fJLZnm-5rAfs) z`<%EhApP^v!+QZbydN>#ikMtYG4^mEyd_`8M=pT=0cb$kYBR$62S+)Gu5L6EAnr{-w~Ok?tnqBN5$p$E>ycmr)6hi6k`5@P9 zNb}R|J?7c1Q9pIIA1)pXBazEVGuVkq%*__=v$uC0U)V(J=}Otebku>z8xVMwX}bA) z93;#vYjFvCx+EOObt4~(RI=>fp}8#86; z!O3G~c0USjv)&C?Y>C#Wn8lO>-MFz21o|#Qo>XAvoL7lQ2DUq-)n&qn(km@)%0xGd zBbnEKU_fKtvC5t6ZlH}2#P0OlmrW9$J`Zj-hPRl_UcTMJzqblVK@IM7w;R00=jZA)RSBP~5s8HOy>KYSqTCGErLgHNfvbJe z$u+j4Uk2*XTYGlmuFMmaWwjQ1J1lXmJdo>r=&@@j4I9x3^c1kL%CF8ZTfeGIanhmy z4IH{<%)Nc-W;T@uO`?d%K6+VKCpGBDj)Nq4Ube3U!X}(m?wRjQ zJByHcUE%9%_O9#ifvxxTLzi!1Rji((%9unf!o1n~@c9mv-Io&IIgiavsMD4S zqh-E9w$hgaAfo1slQv`XxC7Ahp}Z?N&`8JPbm7_A+md5y{=&I_Xy7=3c(wPYaSMlY zp+%hFGJsuD7&pm={Qy3L|JZk*R;SCB3vIM338Wxhe1mju&qIfY+i#0lNH0b6{!u3- z;A@0$nX<T|pjvxH-H|Jke%{TI&2oUy*Yu$bQHz&TJ#{c-c}OTdL>?VB_778|&HwA5xArw;XN_FYLGrSa%i~IiezSVn2G6P#ZCxcqW2b@qAZ) z9Etd!6mAAIHN_JkZhR<9ic^^ytc%*inW!}Ywsw%Z=F)Vw7<(Fs{Q-7naEnZwG?;X!&n9hn|fYa4Q{3q0 z&>5=K7`>JT6I}RlBqjsB?FwP$8rA$hPM~J5W(Qs3n3|&fu=&-D9!#{l*O7b}*Z?pV zCGExJ%ag_rbNz+xFMcQfV+X)_A(8wkVKz>bmv!3OkVlxdaTI6_&jd;7T1Qt$!VxGC zfMz{UYy?BD*&nWj!CVe^7t6>i06H`AqFaswT452avm+?8Im`{Zd8Z#F{-dz{`lPd1 z9@$nA`vEUfZOY?cTHy_#W^X7+^eY zwXkvK2#*Z*0CF_1PnEI1qSk`e<6%`&99OS#2S-0#B3PG^@x#>&uE+x>_`l}o3ve%a zfkj+;+={zA(Ycl6<``K+#WJ{*>vAqNw1T6U1~6}Be^C6#*kb2VMGK9V!Qfe5S7xb_ zGG0|BfIYgYtAlQYoOMBANGrBXAp7gDN8INCtqT|#X0Rz zr?>HqA_BP%R`|k81}gIPlsD0NJ&+vR+sa6hjxr_C#xYg(%~t=NWHB>;6E&0stC#Mx zOzp+lJ$+#`QMutqbNZBj$>DZOqzahEek^es@9$st}hLl<0QB6X~y9JzPmX z!{NMdJm9@C!sVQLhA?g0@qVZT`fXGJx8Y=*ercg^r;YASUoQA(>xt;ao7R%Gnl8$nSs^an!Ejoo6EQON1@kX17kR_3rVt#eh-oi#n}F^ zr|Ms_@vVl4pR~luRHFPyv5YJ5!%j=8@sx_&m_z6JyV3n9 zyMnmeHPIc?x=xUk)sYZyEQf;41ib%~4$BeSK`C#U{ZEd}P!liZH}Hsa+tjGdUTcqR z1u5=G#dQ7vojM}z!?lH_nANOo#w|4WP|W_!btuoW82iNFvNx%xUzX=_J8ah~^I=IB z+NKW>prP<9rNSQ+UB}tappL|T9!U2&d^~K)L;sBhdDBXD{q+piu8z3>iVnX|-$|m* zFrQMrXXOgujrHA(HGWUy6bjrD*J`I`lMGEQXk;XnIKLOiDH(ZsKy7WE*jf8aj3eYR$;p~%_%*lW(dj0N7=~69{9kG zeMDA2&Ls3-S?sw0ulX4tlk@(OS4|;Yrv{HS##Z#WE6+Y~5tlfzcH&N@+g?jc(0QYynsRo`vF zE7hce-RSJGvY}bZ9XtfH+FPpwPD+9y^!oYF975pk2>HY_n#Pi(jmWHo1};aU03xH`=8>+D(FOGHJbHYa;Sc8T{uQ4j%=JB zxe9$QB<}x?IbRExxMd{OwV{XMm9^;FmG`-B%ffIoH6*VZh*R@% zD#dE!S?1xGZr(@hc75-FB4h9nB*H@hI{->J?Tv8$`CUgD5nxNfO(1_Kbfq}hd3Z$I6cVi}Ls zTaPr}y;Y$Sat-2B7Ml!0>>E+$^S?fNh2p(;HHB zF#rq0#87|yS7f;#AYHvx;-*(=DdnlYNkRtG7S{`#cseJ;jg^I`fE5)F?aai{Hnkri zT-`ySu{n-D-RG4Jw8LCwN5ma{_mN%$1I|~$D3KB4&w^Wy4T|yn$(8GbJCENBEr>i) zCqP!PAUo|SE@>^}Y`B4#*9P$P{T={0fF8xN&JJ(v{!Sqg{DgTGIE}i%vJd27bv0Oe zu#JE2BhIYv4Q|2DK)jaz@zqq{Kx4`OX}+zXG0zho!xDMNbOhEuzc@7o$h@RZhYBnj zTDeCvJXtO`&a6C2^lU!GaG6HsBH0HNp>A27}j?-%jAb-F*# zfU06L+8A~K^t|$;QP1G8<~`2F0VPvTgsHd$Q&a?K%<1y-On2`6-IGT`o9gA>Xm4Wj z7$4*wNFTF_o}*-9Oy)v2kVo#1imA=;%PkWiGr~B5g{O$)D>4u7VjPLd{f)%f{uEHT zk8qaV=3f=DmBIq1lj+_5 zMv)U|(9$ZkG0u8J-%5}B+!=YE~q<9^>~d@m0HP0;~1gA7vl`6=8gHj zgOCbB9Qk#k{nedniJ?vp%&5U}|L_)G7Ag64{0&iK#%E2m3^nPEZO?gvu?mT;-O+ZkYoyyd(Hw${wkLd}XEfq`=p;XlrDk~V5}(0h z@#wReH`kbJylMFN(CCkYsAe~2yDhq$f0UH;KsKjhqI=Nk0ot}D=vn_{$-qRYQihU5 zz0cmr0v*~~yL9zJS>8v!ohD3kM~@U_Up%?egyHQ6jXiE1(?&^4c~*OVwM5v54O z_dOg;SzE48Oq3bi@P9!toY&J290)w?NFmyfdH+|@d<54rQY-?e;Pg2d>f-dU>>&+q zke?h~MhGP?IQw6*vk`=NNxb-~gZb;=(ribp^UKq(z$+n4NuPGsn7-CCZp~Vrcj?6eG=gMSMK_$W|T<^nU`lffKcVw*h_-Ty$l&rT)od_g&dy>HQi z{@4TEAj0}{QiWfSu>e7>dn?##N?V49g%S47A}n&mzzOI_zXen8p#*xdAOe37FL4Z} zqQPDxp<^`<_zVO(qWF78phZ9lZe#$X%#y{u{QOM%I$Tp64mUp)J~fEGFxGGWzhgM; zD_a0z0ElE0G`86HuFdaB9}{8x|G42l4B?IiApiA%K;8i9a*HY76m*l_x*BtBw73~I znY%yO2IcX!K>YIki*iT6`R@`eSWF%e4d<#Y&ivRvNI!>)F4=15^Lr7|-t}B}}4@&nLUSG~^rmFMoTLzrM~c^S%P-6^If1;nEk7 z_h_jZmkX=+atfG^5-<|Bi`8AOaow2(JWr=kzuauD6|NkI3;9at3pbb7Vqbf(X z-_@nyi`%O{#Gg#D`gzWUi$pL>WLAMaJw0u0Z430v^UuRWL+^cg@`}&-*kz?J15)F@ zu(%lN0Q7Y6Y5qV3vc;q%Jqvh`M#7`7;VdRGaRUL~7#Tr0Id#Vi*-X_#*M}W1BQu<^$!J)prqvNBR$d@N7 z3BntLdBYztTSdAJenEs}Tsrym%im)i3@YvGw(2peNs^rPHvJ6EfmsekNPohKvddwzK z+$|S)j{!zX9|+uxFZf4K>U%$lSf6;WWW4WsVx?5)eNcZi8^$8#t(C3LhRh%Z8YiGY zhF=@={NmM%s`8z~DW8K)-UF!cmnXpO`UqF6gVjMi2wWXl`}NPin-y;Wn+Yhbt*ymu zRxf3lb*6K=tqoy)hw}Zf7$Srv8&DAh-~HW${-t3v?(@TjGmi;vEv*~%1-eC({TvGK zuZi%5Mv0sPq3J*FB`_~LJ}xnpIog)D>VSAm91Iyalw1B}M?NHl{?}^nh1uAEviRH z!)STv&-VNKKuF+-@0q$V6VYkte@$qSrJCs7tKfT$imK#!V<2X$VM-U(+ug15_;Ix_ zdc7q-AKn>9YTIS*0*gdNo}nun%Izogm%jg(2%@M;hpGAYPYuV5*LLj6GF2?PK07II zO(xlOo0NQ&@jshx43atBZfb;L&c-XZnsYQYrdGL|uQ}8TIL$stBn1v(5u5*lmR|=Q zrfrvc5|PJqOd=~Oi7JI1F;c!7I#r?DX>}d^YdUGxi5;OdJ z_;4ZQVtBo8^-+asTLfU4e!xdkBLhiNKAEbC2-lUq@$qpmtIl=668>XomoAR$)2B}X zNE#|ISh9b0_YsNi1QFF38gaKav6 z8u0m=@wqoJNk%29dAIlSP8%N7(F`bggR_A%{t}mZKnR6!##ek7{~n=`7Qu;+ID5bp#clXTM1@0WVmqF+&|9x?TZ?&W!dN{@&lVOzaG2FXtj$42EFmm?7t$` zZv?WCz62vBB?Yv72F#}u@9euZsW1$oTMpvpxRChQX{Em<)&wQO9gLe|dH?53ZIMiR zN5@MNm9|uXq5qsMiQ+J*u(z}10Ng4@*XVeoa*CaU{d?1Qo?HF3y)s3^#V=qKh3_v6 zLHl2Z(53OrvZv$9?w<0b!h_ek0E|+-aFw9rH|px{4kw|YAf=%D{`~@8?V(O)*Z)&+ zQ2hn)U%Yz)sO(~wK|o6ZQ0Kn{K4JmTQ2m0l{Dp=Wgb-pJ9qBDf&T$e`iy7j zTtBX)9(e6=i0;<4wJ^Yd*TU{90;mDJ)3%0dURDh-Kke_|ciGwJN#A}|GMNZFvB6S9 ztBMaAh643%WO)h?9!8BC-Y}SCwqaIy@IX|h)^jJd{0)a~YHDga!DX5!J8#E%Ib|r< z7@VZUj~_U7tPbWGLl3mAI;hnocaZWFoP3-R`o1A@CeiIJ|8vax=*I@N4OHcMum9Ox zA$%ye*obX*4ZwXN+mXBX?rD^n;CwUvvxl|LN82++^(R~c0s~ z*8}m6+_P*%jlm+Uv@ZNOf?0FKzY3Z}jcHR~*@R|7@%%K?Z$YE``h?R~m zYmdpy!h%)G`#wLv+E%qnDgc^f~Pm){S^~#)|etU(Nr0o&3mX~8(F~zrH3H%hm<}HdoN)R(c2B3A`<-K7U!o>w5x=?|2)YT_ zNHoqL8(~2lPWm)p(I{{n?j69~V3+@3&$fEg8#1*dNrq(&P{x0cvqr)ijs3AS|LeQe zp#l`(sx1HOJ4Pw*{Wezre9=5eXY5XQg5pC(gD07Q?R-jXX+;DarDkXUI6;(-`sQS3 z!(cGr3wHMJC&p_$Wuvx-hH>gcc zGl7y1FJAkOvcx>6%z2`v_XlQDR*pGisNLYij1CDtQ{EuUP zlTYwFhkg&^KdZ3%w3ZJbVcqF&CqR}gVV!RS^r{?ZfJmBA=}^1V+Wd~%t*{1&Ett(3 zHO3dU7QIP8(A^~%Dl(Sw+@2P+=n*Y=^xsK-g+>bxHCtL5co zFdg+P;I+?xLXr&);F+9kVXiio_q{z5q6A`QLb>ruUn-lyE zrx$koRfkE)c|HIKuW;9UerJ1on-7A(ufWB@2Rgd|=KaclrHhw4`4uA>KE=i^isw1E zgnqiM#vS|q?CPE>H-X^ zq^LOIV*suMG?3yu7uN`M+rGpEu&Owl)Q3<&YK2afoxKhL7`%pX7Ld6FX2kOThkJPf zfI6yV8-V?|RCK-#8^FBd#8UkB={vcqJBq zKUe8gDWH{N?6c-Mt0nClbCiX32!g|~)|+kJR`Z?go3(^&<{iPNh_cWtI{-e!RUg;u=&)mnJAR>>@)s*ZAKMXnclBS*d$Cn13 z%d5)EsfGqc54R(7)s(1<4T3~>9CV1`P*sF9A;5pOEudFIRW&Tm;*8{W)ShEv*$zjJ zM)YV@VsIav*xAKXBsw1<{w4r7p)+7uPupCmPsYdWlFU4N1=s7hm*rvp4+QaC@O1o$ zAjK^{?PyfMzN8L1x%{f4q^WJw^rvR@{)VW#_ODyqKk}AumTO4jB#la}w=+H~f*>sy z)PsL(6Sd)CVF49ZM^wWOg)^_DY;GQbp~(`$Ljm2f;k*#Lt`#Ex{U1e&a)N8hzSFl5 z&H<_8`_P6Vh_YUwb65LWPZ~uNYGh&4GeWMpQy=sSMcPt!cNn{+)RUTsZ|Od78M6I} zgwT>7_p})kpTSWgSam-(W>@ z<9j?tZ0B+8DPSu9$hJc3_fc*WbBUHzJRFmn1M={Dtb#FTZ{%xFAS~9h&WZa?uAt{T zl4?E3Vna1VCdf=SM{|`UkNc^Y$RJbF%;3@k<3%?NNi+{_$1GkPVIT|`wmcpJOJ z2`e%w|Nda)LY9#7W=FM7jza7NG)c0u~ zfPiUv$Rg-TUyS*4H!G`?mBq#6DgIa%=*m0xPOi4&k4MU;;o=+}u+1igCXH$#gi}2| z17FYzAH;2GzBBKSM0~d$tC`5&0i*3#dw^TBcKKR0g)oHi|71=kSgct?e&oOVq{b)X zS(ovxM%jIqeU(ORfEN|JUVwd!PkNWSKeRt0$pJ;qwdD0hj(Ia@96CR%JDPbrd>*>F zSB3>h_D2?)4`1XI5mu<5M)ld|Shu%5ebfIYhd%aL6VJ;aZ4xd zE@|V1AG^pt=||IvTs9bOVNN}q*|B#c8Qhl^N8ZW*;Y^g}yurnoyf%jPE9u(_#4mTI zE7rPWP?IhSxLX>ys@3<}Fui0>0&L0h4P^PGbb$%;y3X0_i&XOy4anmnIPhk zY@sORL^ZTzIwR9PD=H|+!|QKID~bqbTQDflcW<4!1jpCivtsq?SiEk2 zDYWWzl6@U{zHgSAU7zYI?+u}JIx+fL(FF@1?!%LW52@>DrrhmDMz+S~MJ zku^pu19%P*62dRG_@tFUu5mkxG!t_^Hln27q;!>v;^~*p1~dkpVui+6%)Cm`lR=cc zQtNQHK5o8XDUXh)NcC(`<@@J_Z^}}MC4;vAq`h8HYu^sb6>qz9xV!0gz}bKe>USJ` zO{DCDO?NVV#ek&F35pFNackIQ0)yBICKp|S`_}h3l2APLmP45-tG2rlQ6oc-`tDv1 z=2dYg?bVyR*N%}cWa(BmX(pVgo0Upa{~YnZ{Otv8C~eP!wXe)mKcRb4W>{1Xv4q@)D-Ck6WjPx;uXK$C;S?_XDyjYR!cN-)Y#KG$UbQcag8Dgn z`BY3VxoMoC?C)ZvTsbiLN4jg_E-2FIpgw;mT1hc@(@)vlpz}L6f2gpW-$N%ZuyiY; zHOQ~uou9e(A=YymD`XPkvB#7#R_W|F;WM=7Gz%&|V_&UqYiq~!?GRSSq@4#vgxbb3 za$U!&W}9P)`i}H3&-~7esMs+&()cFCP`an<8q=Zf=MS!X^y|4pban6I=>qXHdwtMJ zJY`{>ce2v4@#6y2yhNCpJvv|$vyQ@hRu?92$AiY8IFFq7aFwem=yROA`}>~1Ar3p- zogl6hj4QRL=GCNrr!z6aul_(06Fz4r(|g0ne3mEzaje#lgqf*f;M-S!X1sp4TWh8y zC}c)hhZ!k7PQ8BXz~Yp51Cz812Bp}YP50Mlpxq#=`&D1vO=MwM9M`mm`R_*@(uDS# z^*Yc&md0BV9$KEqI|qj#d}oo?)8T6g6^FWG$FDtYNk!Y=F}xamR%$oOJpnhaY2@F? zl;&=+gWb1_o@u;tu=_humC%2Ij{cp1Q$dzZnkr_}i48b!MX~F=6b<&1^_(6~FiZG) zUgW|S#W+fxrFLxMy)~UV{AOGLBRgR~DED@)ls9ftT2xqlAttM!DR^V41A3xHJy?^D zCl##w3&?-K7JgMifgPO4SO_7(q;rsdGFObf?tP-K(6`X`)o4q)rRm=%5dDaqmB9fQ zHMSPK*g0f@K)LP*xg+<{t?t-)w#D&>FYH{UiY-m+wcq^JOYa>RNNSA}gjC)Tl=oXZ zEA3|H@T5OX|j7^(^feTm@_C&6cQd( zQuuQD;%?5`5{xB6gq71QG||HWsAqUt*bHoNP~PGm4{ zd*z}Cy@HYp=}LY#7u1ULdC8hTNMcZD4?9{{U{Nt#i$7HA*AepBlBowYl>u~$~|7N~naKAsFqL~93NVT`oeX{JcpV>QaO#wszaB`I$A4KMd-myZJqC=67Q24fXGdspt0 zm$<%DfAY@OhXr+|IwdQ7Lqqxmap>Uzhcuv$2mktAKc#Ky)1|?Zd@&g}m5X=v(Lc86 zNDpRma@C^E%R|aDtuebq3r&=dfbHTQLS-^V)H z8(GbKyqi5)fGJ7tS5fZVKmAPs-Kg$IayP>Z4k-DPvAVKd0G;aT=u7=Tq536r z5tx2k%x0e)OTK6PGQ$xT%Fc^CeIdhsGl22{dUP)IXvQ;|{kl>{mJCODv^dfvD>TFU zQmOT~Q#VQlovdTkR&Eg3<*OW4esXE9AfpahtFHVUH_Cb}ecVYT^jzc)B8VfQD}nQ| zasPrJ%BvpKHAnpH2Iuzq1lNH*zP=TDIKw>POa^Vsn@`z?gyr_T?v^K{vOZSoHlG?s z?l^dmFV-qF;U24<4yW|&5E~b~KOmHf2`E`p45AUY;_sY!BAEg| zS<(@3H1p~~2RgYs|MI1G&Vz>(E1c-|Ohlh8qG_2%rz|O`w4a)7X5#r8Fog1Zn9P^- zvG9S>Eu-^VO)_YP9lWy6pxaK-OJK3j|G9K`2Jc%g)wf5sXpVu*nOzJO9U|`d?u|#h>NF8NDkm~=a50_{%88ZJLp?SeyczP7D|lMO;VVK7oXTzR zeE^d<4MeiqwoSL{v-@rM+LJYflxSwZ zpc9P~c*ENZZF-k`blT06t}lt(ce-%FAm~HjO&&ld9~cW!zV7cCtoT@h?{pbbl(9Bfm8k zS@$Ik!>3+jLtjExMQ~o6880X>AD^XQLP3*omV$J=Zff1;u(!9{Yju-`Gh-lewv@F_Vf#+Yt&(-96Jb1S`*oa~aCu2$ z>nWPw+M`4_MT^78hlQnL#?z!uZi0boKg$gSE_exp#_jcD%rPK`r3VW#7Qf6^%E<8QyUR2A7yOi`-C4=JLI}4CW@Pz z4J$Zbc^wt)F;?l*w1p|2AW6@X-m~QgoE@H>Ga6`lV6G5zf+=0er?+>&$t{unbOyF7 zeZ#114nAuy_61XDjdl7Yc%QR-He6(2R{t9#`bjw4ZNgUxtK^1M!}u!HLG4er6LXX_ zfr)uX{wvD<+k=@fb)#WQ$#RZa3whh$-EWoG=`XUTM4MJsI!zAuDmV(wO{vf{7tn7~ zrbu(Dp}pquWhLEpwgpSdI%1YNHVJTxJ>_~|>=wE&XKy^{Bjp9A3U}S9aYL>$wJ0(V zmkx!=4zAQP=i8(I;>xh?ZPaUK(Mgh;AQQ~<9$~%C;F(V3%gA*mDdxJRCHr1-nRA{* zF^6nyU|7}1rCmk|LNa$YTXk)P);yGZzuLu{S-cMZ)5Lq7LK7H6uuuXBHLL;$4Yx~yf(&BbQ;^RXv> zwLB+|AJbPlps1K~%J+qOZI>rcwq5G6&C&_^s!8b1n@D2VVTUk5mh}=Nl=n74(dy*8 ze0Z<0m9t^4RUE%t?ZvXjLwz|^ln=Q*l+IYAa!^=5Xa7A`7~$=ZMlN`Z{w4R<|B(AA zbNBIU)8`dy{kCO7gsyGt9jm8h)~AdK+*Z7&AO4<5`7lm4Yb_mY!wPc+8;{*r<#~NH z06R0|IkTdQ2U)w{=dlE~Wq6H0Y4`Q{7w%-_142$UUD_Q1GOliDJgHpAY*(|>z?V&k zOrA(=Id!=tS>@0KPU!L1dkFK$;RwZq8=| z_qMUI(S_aw-QQ6N`qfgGG-Tuk9WbaT<#y5c-<%j&GXk9DUuv7DkHqeO&)aSQ8 zsj8}KKOSTf%DXsIwwa-RtoD7pupznZ=BF#gPuSw(>SF(t;vRbj+vna!D4&8q$e=+% zKA6I*|Mcm~U}YRC-KJ-M-vws#nIAH#{$Tp+t$+ZI#Jw0 zV+W6AkSY}+wLdc4i;#sb_itys1;a&#`8&p?I+4ef2_WD6Pqz?{rkB&Yb?esRnDk+_ zpRkJyEr!pYkq*BKi#jbOCDGg0?y)4gXd_{K>sD~ES+J3R^~EdAn)n_3s*CHT)>Tu> zkmDyXvumlZ{&;M50bMl9nLpBpD7t8cKcmP66@D}b(~E!6|LO?;6$YMDd$had&(J1z z;QH3tKOU!vqc;(V0s~JG(F1*bl6S2gz+}EucD4RHd^IOT&*RhD?*b#esp;J`0d#YrVnl+n(?PHD3)v9#C+rI z!vF2t*s;@RbtqJxs~NN=O~V=1Q-`1}`&!<^f;oqu!_}Ytmky(4Gmzo|(Ok-Vz46?U ziCzgVd8VJd0mTMz<+C%htTVGFfOh|9CqN_ z2QcQ;+t)YL*B2EP1sZY>*8I+JaC39AWxGFqY~$cyZGD08=&wIcbW2i2)5haPt)FQ< z@$F3fC|%lh%jRj}5XqlRY-O`puN(^m(P=ts536as5c1Jp(N~-1iYqn`YMXa+mllWd zC=OPd!+MmNmfsm3Bk5<*UIej#*`{40xC#Z3R=_j`4JD_=a`{wcsST>~#7x^OA;sm8$DoKhCJX~+$oQEg0cdvO}1Hl)Pk%by$EXX-AyrtG`tx*gKQh^IHHZXEW51QAA8 z*Y<2@=WG4k%Hid0os%)V!;{~$V=Iv_QpQlPe4OX~l}i|4#KlqUPE&i8tul|IN88Ix zh^N=&0ZRo_gu^t7VNLvirGCE2CyzJ*SCq4(t-cwR2KHBecyVef!>~kw8DU<%Gc=ov zW~)7;6hhkVX=slxYpwEHTGwRnFs{CS@j|gHIi~oD`bfgp(yB5EDXGYa7!BrbbXOpc zWwp2Qo6LbOS8ll~$4rmvKX=7)P9=QbuVg)AS{>QNox(nfaCV2s6nWMaR4;B=Oqh== zD2OVT`g(bh*HQ#zLCv+~(*(kYC74x=Cg@wv?m96}I4y3SUT&Ty=lOKM@fe&};hlJF zvWypD=UA9%$IIXiyf7_7IeNGZZH`i~?P_~>n>4}>Z$Wqwc|_$1gVI-%QID6psYusI zHUmTfzI{Q*w9IxEF|djvtIZNm{b4mqp>&Y#b;(aZwGg{RkCv8mf_+c# zva*U2RG?slc6&2AwI6`?}yJ!*fC9*Yr;ouy}`|BY$O}`Fv7j zT<0rOh;!{Z>@c&seVw#rHqWoH?x}B`&V~r8gz`&dnL*w3)TQ4?szb>X71svwd?OGj3B^}Rkjos^F+zP}8sE5w>PPklc0 zg0yql=^Y@`j^!Ko^;q(x5GeCSfHbs*t@1(A<6AEnaym@9myRTsa6_{F}w9 zPS%8sq*{VJcsFbY%Mm?hA+u`b^hMlP*#f%4cVjsh3d^?XYb{TRIZOJKrf*eBez%SC zucHpRwj1R0vJyxm+n)t@We40tW}y~YZn+^?n#*to9}ADXtF_%`ryq}0iKVTcLimzz z?`!JdK+1{5KIH2ptDksin({<;RC{{{98-x~oS(OI%qpvDKgG(sr>K?eh4?ss?N0{^ zRDlA>feZ>q7WqykSJ|Pb%gx86*lJ-)JoRI1Ye`hk;g@-=YEYA68|GL2sJ!iIMz~?& znA<5<8UKEnCXEs(uT%*>@0((yTG;ADX~5Km$7Vz?!t#cBU9js56Bu^)^y+AZ#CQur zhbU(EDv4{C6U{FsCg%R*Nou{r6qp2hFeuh+`R?Q&F&IZ->F(`$5$HZyDz1%gY*b-q zKY7U#?@BI~hr3?3Xw==c;8ou6@Xmi?W6^lu^3<7A7cBegAjG|LXff8vcqNnm} z$^oaj?5B+GHMn&3R)1MDms_XJ`cnitl`F4}A=bYJV+99&O?}rK@ml=+keee?*OUT( ze%Rbjbam*>^0}hf8bjgTiXT|MZeHnP6<6XErO*iSY;!@h@s<`&o9yc@ZZKTmK>CWcV2$^=&uNAI6s@KeMa_ku%qeu21EdUzxr6*ni4awlHIM~DWq|f zL7U;IK_Mz&HGduDD6)Lik~G07>r_GBlzfugVIgCm|15p7ETB(7J0<1qhxeEC=0#E@ zeJbWJi)ni2n@!I**l($p&tRWhD3x8m*1wy1_9zQvA~(p8$ZCJ_9%TGmPu}3O7vX2y z656nCe;T6PiEfzD$Z28S%Z^3&1+)^*aq!XRS55b5;ysc(5PWe~WerJ@q>Nu(nc1p$ zp4>KY;T_Mm#iUQfrXtQ+y4%>vK3OZ#Yd+B@lhg85nt@F4RSqm${~E!#K=XXs-W$>& zcnN7`C!axorcdGkolV)u%widsv=(+gKlOT)k z{v+Us@f=>%wQb`ly&e@EedFrYw=FhcQtDc1>9uP;nVFfoc^%#3LLwq99V!jKx+iXk z>S})sq&l!*ta~yop_3G_BEEgv9nw>QRV|qnc;&QUmT=GAvVNwwa;#p*f>(CW9_PMX zvp(8gx{xtP+({^&kg|I!J{`_M5cpzmm^hm&K5Upro*Kjmw7y_rVjiw@!!~j zmhzSNU3DHQeD-X#=4Q;=$aobwHWGWjm~l|#X(x{HotT(_6Y1s2_955U2%SfTS02s9 zg)khZU3a<@CL!zczwI-gn^~&J^4`e|TM1)pr%;s7EbR8$5#B?M2bF3*dBjc{iq%wC z?D zwoI+-@mf~xT5PVpT&fpKm3_E7ZI1HK(F8Tu1D4{W{to-Gm|Wh9ovo&FbA&IH{ftOY zAD^7t=u6nEc=4h&*Z?Ec!zZogL8*c>wiu@FjRyO>=kjRx1E9XfRPakx-sC>RB|DHW zIqBm$=AL5u8Y*)B4>wmp*F`VthwZJo;$@J&sqon&mP0!ToYp}kld@k^ZYu|@eaOXB zu6(`P^7MK#M|mxjXuxSItj|Z3^L+e(Mvulc(W(L|E%b_W&b)hO)Q%d|%!J#EpDPyd zN4wLasj@xzMAdm!m)p1YwIs)DdDu@~=9_CRhqfg~B|IH2b94 zb)E~;ClyEM@nJ1OLKnO{UY`$QKFb{YM%&cU#i^%IHAM?&7%yUV$;tf>g)Dx~nL(j# zrBIfT z^IG>82Q#zBO1;cUOfV%!vjLsN0EcG<=D@~mG76v@Hl=LI%E&Egt9&DjjO{Y7s* z^GH=um*-S{XOh(X!iSohfhW$^dQnb2vv+J|Cze9w?^cKl2<^u*kbl-_LpaZTKpE)J z3IsY6MJ%>dJDrkYX&*sF=s${B`d1ltYT@TCIK=(jFebCSe#Mr9K^sO%ca*2hD_o~P zJpVcm5BMawe>U-4ytw?3bA=zV3*9zmPb*wU;$TDh?vE|J$70M~O+s8hoXyMjm~QG| ztk+DBn(5rn<_PzD=l$Mar+sjS!jYpSi;xK>&O^}b)AC#H#!z#PUc(F^(;lo zr4M`(eljf~y(hGrqC6xGMbecdO2l7AiYMGtWT|zZDBJ6Ph<xOESkMC)nCP+&70AwN`aEWPDD#964gh9N=r& z^6XxAL<6GIWMLk!IyOsYOrkotCvelMoWOz(tjbx6DK3Qb;$hx^Ah)<2-)XYym zb$oex#Ai)0{YAd>%gE1{Ui|3sSig_I!NR{=e?$tK-@>60FQzw&s>mySNN}}K*u)1B zbW6wWH-?!C63^rfZ~w&1Go6*xFEy)vgolf}F`l_)@m`=&i(Arxn(xXvxJ0=gKp1}a zqJ7vgohA7XwZfy0ET&`NX3~JaTvI}WJi<7Hyeuf3b$g%LVOB9r_wodB!;N~ zBrs1q$-Y^S1fY&i4_($uG=DO$7i_-x)1ZlpDp0+l&5i;2N-hWy9X883q&Yh~NFm_9 zM)a|XYwCa5npzXp?E7FW<7Q5-Estt%$fdWZ`XP-eg?+XnA7#9^vMM97%I*pdQ)c%l zXC@CH*;$^%4=+VAB}3pg(+Z4w{Q9PDrnSMF`AiZKjg1{;FEr7eID?NVmq%n2=CY%U zAori&-|WRFhLz_=-;j7PQdxOXNsKU^X4(*bqUP!9E9=e$%c`BdcD>mne}?`&P)A}gmq|@1wUPImkf&DQ!QPY#@7=%aRq!0MYvX3@@AAr-#kUm`Teu> zHhVmeA7-pzJyhE2-4^tXpz6u_B+xXJLz2pZ4qxO?5x&myDqh%8_wwlfcc^{h- zZ->6DHXO;BT5?tRig@7Gi?e#F7i%;;MC zh4qe#I`c&3XhDjLuVkWSNjSIBwKNcaCTJJydl{!%d zT^`M2u&lT%OR&ZH#_;yv?gYnzG^<~Rx0Z8oCmRJ~phiV?X^7|-lpvq=`2Yg?PF}~i z7Ms?5A4pL3>C&t1DD1p`)K4wyrRx_oP%bWZd*-#;DTBo#78MV8El*m_zv0=~F4Ky{ z;)oXgg}NFP!hflioJ#nSadF+U{QDO;m8?klVUp$Ue{t;Ps4+D|`N-{wuA1?DQcgcU zY~J=QNg4}kL}Mz}QI84e%Co}uv=6jZ&1|RZk3@9R;MQGp@0@-;xYKSv_RU0DUe$LIx?C~OXZA9%a^mkYznu}coAgraiqkuUa7s!`c$iwG+Zix2dLmQvKBuYu))%#d7fVG`t?Uyxj_6@+3S-s z3l9rMh+APWj>2TDoY|680Xv#k+1Ab_I4eCJ<&}2WIYIpC9?JFZ8ym{JD+cc7=;ZQ| z!oPWv${wcCBq&bgo<;;<58U84L;4Ty=9Pb%JyjK8wm5-$cPB1fn#Oz0b0tq%ygjj# zk;Agu1^d+2&#Jje4JIE@f%%q6fAf5+@QzZ+*hcp=2%E;(Jb2#DwaL~RL($Y;T9C`p2 zBkJ^(_b+bK(LDq1`+wS+H>?|9W1uueG6`Uu2upo}?)92n+f|xGr6c39mo1JT>z0?^ zchg6W!ZFt$lGdpBZS%uA@5BqoE1d7p)->P&ghf=8=7O-2-=%w!H&bNvDLX$`<$bts zjIGbxS>Dq3j~|6vZ(X>46V;E>L-PbxaY*O}#6FEf+z>NEy1H75ZjA6S>G9{9$arPp z#G_8PLTO;=Cgy%9Jd|=liz&+A?<2v!s2m5#)IOPs5&T( znvjrS-ONJw;~$M;XMmybTIlLTg?xX0sJOT|fNb7#9v!&DGZ(V+c?LVG*nHT}HJi#` z{6wv4c^tl(Sor}(Zr7pM7Y}E->jpO$7fr}lK14AZ&y)p7CKQ>_6t2p+PW1Z7tFf$P z<_0bUM2x6UyR_p>j6kPp$>i5c4P)?fTcp2ttu>a*Ll^n|Np7*Zgy~ekMr{xh;f4IT z`}v#eV+UW#8WOE6oa^1b(fzikfxJ2n6%n)8JgpMpg;Zml?<_JLt9g2!F>}FOfTw@< zh-tGx!x5tJLlFr3k}^7d-2gO8R#Nz4zc5jX$Ti9J-3AfJdeo@!%CQR ziN*bNnGgyA5}9Z#G=T8H-rBsdd|(aEl&V9;@>_m+SWaCzq&a${1P0+wx*pQg;aFVG zp3EUu1zAYfb~Qb!cv8Z#UCpOXY~n#3mz3M`^AXA8NmtNi52xMPJCcw-0nA73JCkB_+!N{IJq>%wW;@K8F z`0g}(Yk|0th4jA~Rw+BKM*0r%9Rb`GOI1wHrf`Rxtti_vJ?M(-CZz2wPalVCk}Rr( zl!>TttfCFe?me$GANl_2Cp!81g`g~?*D5-qSWi2(*2WU`K4pv=SjiIxiwu(#&`zto zd_JHi*$a6^nbw;Y`rg8NK+-0K5yg^MXWU;&W(Y<)u zaBOtMmdsbbpB0?X-bDatqx;B8!JBn(5t68emcWnA_t{b8s!O5*UM;ZZM4VtTEqzL; zkd2D&6cM?5n4p4G+c!RoUjU4WfI!?S&`x!5!FREYm zGCsaCFR%2G5CD}QXM~XVN1(C6e9f0G2KVKE8k;nSotEgVZUAkxj~~C#(v%41x#?Sp zIblU1>DM3*w8;c^_E)bC3keLqrEHk9`k|wIxZr!3J$^0$=Y)IYnu^K5Z+e^g-m>8V z+aVOhlA%FU zLS=j}ZkYG5KpkGJF9bC~Ji5Zq|6+Hz8t#6Z>bI1&5W!0G#|S;lPsPpU-9Ef??b@J1 z&`&<-{xyIrghFW|IOoB_B{0GPdQ#)GEIJjYe@yS(%kI@+W=83x+d!Q$F+5_5LGx7M z9~h*p&;0nOBYu9XlVpi=OMFfw5@~BazSZW~=BCHyCMb7AL`1YHh?19)B3_IxK2M>b2&_a2E<_NIO>b&8k6FDG8Hwa+LCHh4ob zS11pP9h(RuLLd-K9fX^W=My#RerE@mSYPceN2B8elT*&v1>>l$Ft&DfUS-JUUQ}Z1 z4b%0wnI`A{r`IKK0LUzKh1g9SaQ14y1$s}ox!xy>Qz2m@9WT$0?kx4$qr2pIs?yUf z+7m>9hc*3t_vA@s9=g9`f4AU$%AtFiMKAwP#9w~;L@wk^ILOXY9CnD1_jLm)3I z#^T}*cw1-Pzi^MS`{BEHTZyE=z{t-j!9gYI5qXZt5-x+wdP42Y;^s2k?3}`w6i{lq zU?YgJNqcPfuw`VV=I(jT?1rN(LBLDV;=c;Jy6WEt@{QOuETOP+vWa49E~vC$5*57I zQs3J+Y@`&zz`(FaYl&5(ChXhl-cHouzOkqFIFtbKr;RW|_a5dPa%ke|+}hR~=*jcG zXR1$cB6jUO6@=MXJ~EP-`5mnU`uJNxs9~m+)xDFJ0zH!5iLj5i!Wa`TKg@CfjXJ~P zM^!F+8u3cy9SO0vx_SGlV`?};ki+LC1BtmsnAOpjTll*ET=7>iy z`FEKHi(~NH;mnG`b9Wy-dXxZvvx8UENpl)3Oe$_ZI`s*(r-9S`HDA}l!osKI{j2D_ zZAXBEUfe=Qk|e-B+O3CiMa`pOlF$$%e}4j;tG^gBUsC@jn$a3VzcKwgGvWf@T+UDcb^G1v@D)Afc4H%>Li5@x02W2?@`uJA`n%tM4ps*t z`vPbla6S)7#nI87f6U_Pfo|a>-f>p*yz*y`R0ow zVVjO;8!}OUpj06_Z)#gw*58X0U^sjNKto@>c)`GFGTp%34G0{lR4Oko zFTic1yqDhh-h;7qbacETtkyaV2<@%k8Txd1qvyA-EUG+E`If#q)~ua;QNK1REKC*9 z%m5CTG4L+i9IX^~aSO8{hM`iH8!7-3GBfarhCyLt;qh^)Lx9Qwd1xi(oVxUUx& z7?_ijldbvTYgsuMeRvB(TX1wS%cbxgJRT&=znFT;Y+Awmzz1=|;+K^^OJ%mAqN4F` zFcx|_C8bFWh6cO!JKzyAhU+`8uJJB~ZBn}j6VziP>Slk5cKTU;2eUrVqp)pZWK^s%w zb9``JmWVkVj+>1w8|U>lA~?0-2=l&2_qlM5_>Tb$pS<_kGvKYi#SOf&J~8 zLr<=#2ti0oJ+sX`XV0D%uRNK7sSD_XyMs%;&O=t~ITlui7X}!Jv{l;&aB?`X+_%5o z`-9Mn7caV))l)l``k&taP zzB7xsL?Qir?bT6b=CiwiUWA*Qqwy)j)F;)yo#SPr&$^EO{<{;ke!zPDfE|*F>+0(2 zxWET;b}lxLfZ|l*2BUcuTrsGCg|6=I2j+a1ulR3V-OW*rdd0*oY@WF%QHD2na z0*Uma*?<w&B1_ckzqX854>^G6gM|nR z=9byE8x$B6-A|GLVETlT4(#{kOOhbGUAtCVRh0l$T_YZ&+xwj^g&sJ6;lfNQ3{%g- z>oQWc3djk#;6u8h)Rl7dVHRGqayu=6IrtIAD9Lh|&gSOd=c@8-c5QypZ|WPEtGhAg zz^~%BGVB4IM^hBX5dIil=<}$*vxm^z_H=UC9?;|D-0}70C$36k`*jvIj5+f8c5fU8yXyS;XWAA5x z*=7WwE$cX4gCjB?^uW|l= zgBvz@!N_0W_Iz})dZte-ufiD#o0bL_qPVpCWH2BU0pugPw9Unq79LYLGpDSsK%A|a zyMsfuRl_S5|5L7X-G~2P6WwtHkOSyS`UeEq8oRr@*MoWnyQs+*+HSc$Isxz?1n+H$ z;Mx-9-fI1t?tC$Q( zodDTeSz(DqQSulHqMxtd_s3pBiQjY&(c$vp=J`6$8EVbhEt`#s2uH{M5XZ+sd%LxFzU8a)_e< z-vk&l#ettdGrA3n-zn%6!%(gc%v|12KqGq#E9bMkG6pXJf=7as~xbq+A$@y88)u^5P>$|MTMqL6$@_tF3yn&;{Jc zp~Hs-E?&Gm$RTRdKii%8iivBHn{z4f4c*3hFysN`@N1Z=u314*QBWtn5chD=!pv+O zXykp@&&_0PBr?XEJ`o9>#g* z%wnL-AD=$jJ;KS!HR$QRZ%f@bsdO?nHeUMmq0HaOT3z$eZqB8prGa8|a=3Qd@<86U z?I&>6eudyYNf#XY`*1<3dil3_z#Q-IQGT$Wm%p_I{4ewWf9?OVNK~F-ktkYQ`;s^= zdR(E!cp&B8ihO6v$f&_o7XxyrWV3pIzh)+mfR{VLGbgfGZmhhk8tz*Z29a3T4%^bp zn*YS9qcv5^smH9uvDH(E5nDc3AY&fjojyR7qEkuveSU`wJZ&DuvwN{-fXC{zPI`si zxvyH+StcQ9E+v?If$T(oTbt8^bf&!MuTAWQ*z1;E<)fCz=;nT#lFGA77eob)XhwWh zNH%$l^U*-&N?q+HZzMbW*d4D;F|x)u&UJrC@nAs4@}LA9rSG;=WXY}_&oA+;>PJw# zS~((Fa#0}`8V==JH7EEl2{$pFhjmHPbEzo(_5r7jMvrwzRwtEPC*g*Zu9q~nwWBZH zGxq)R+9hq9E^X)Dy8y<@&|4SjsGw)r>*q&hg!aGYd z^Q8VvP2M%}t19-0!`9+=QK|pE81{@q+U!NvEP3S)m**C(Lb8-oaCC|-VwaW#p!T8N zk}23zN9!-_`K5!_>lWwVp)2E?&_{YXTjghyLo7jO?=ydXE?>r+Gj&%vJTfJcjr>=j zUAe2^?)y1RfB+~E*#GT%Lk|>8b<(F%g1~v7-2Q?Lh91q_^18gyVfXPUKmX0y7Wnr4 z(8K?NmHgk<(xHUc6_*wKa_$T$2q*0IDR0ZD~D0N(9 zz_BNY^2XWcRh3tjR({5_$>zbr`^U2n2-~#XIdhMA4(^;*7yjA&EYOGC&4jtn>!R_~ z@BH(muX7C370q-#y(#@h7;|^`?$*+O3tmW6s9w_WPP#sdq4T8P(kD7qh*z<8*n503 zN=};Iq-lvm{#s-e`oA>Dsn@z!w3IgymfNUB4os667ZbkQi>&4~)FVE2w_Inu8Pu|W zZ5q}dr6|1pPwI*1y{ImDVRS4c?vO2ZE!b5%|WVHULtEjw; z+y?)VEdYoG4&@izWiA!N1Ix@kfMoc9w70J<2*1t99jQZ&GD5EOzWESkE$bEh!b(a= z>csJV$3(Q-UP71l_lYm5dl&Pf)3+u>=XA8*x<@sgv|vp0R-7YhjF!mNe(uBd|4>`u zrMLNgkCn~J*|M2hS^1ii!r*s%q4o{asPE9NT=o&^n%O?_oH{C>rR&j#-dNG zzusZdRG{jzfVEfHm8F@3R z3YD3EBiA+$YX51ao~6axz9KE#OXbcMUup31?!hsJT4KmLL&Xp;n)eFraoGyBsNqY$ ztn}Q1Z>jy`Hu>@O|HIy!$3xkMf5U@HrMSCWWUpH#DasmSP>Q5TLiV!nWH1|m$5G~n568CeP`@5mNE8WhMD&wy6^k*17UsQuky9^%WK*{9=t6;+WSxaHPyZfo)zm9%YFAQ zKYiK|xsM==5f@C=AmW&l-Y&?@c2tX1Uukb(a#0Q*R2*ijbbX0`{MXaq2?o)TGO{zxkA}xM(=kbzzDT zK5oxz7`?(Daqd;yfkuf5YS#Heg#!fHuTCEBo|;KpksJ+lz4OG{tWoC6K2N?W`~Oa= z!XLJIimFwf9l@AkKitsT&%@{vXZH1oRId!!<-IgHoa&Alg$Nlz9B?XZg5!7GdvModRs(8` zddQJtrsaCP@B;|>?9{==31+T-?R$MqmP)=RvLA;qMG=Gd;%@e|xLL5Jc78iC>MH3? z(Xj*%EY_D;2pn44vep^d3XgI-FBn!MSzH4P)PuPYn}!c}GHT})wzk>4nnkF}rI;0l3=0j4E$B&8WOgw$9$-%67Udrlid|+}b z*sNfP0U1?R-D%?6?KIkH%xR9{IC)zxNBDk2RYtklJF$g*2btF;oH?_H&9%FU=?FiaR?1WG<**U`_ z>FGnJj8Ep@#}dAEp}j2jU7Sx1y2EAG5DUUdJ|4ao8v89YTBi}LdjYKG{XJ&vYyRMH zjA&HRJ8+REMklW#)H+;j?#ci<3ZqlMQD1Nb5398#tSLyG)FU2W$Zu>tPPDVM@YziG zP~9|ig8R}`c%9GasYb+2!3fQ*WR1&UFxVVerqXgG&+X|btmJsLOhzj=<`|NpV^;Ky_OGKGzz4=?p`El}^1`tF_d9 z{p>qjNq=2VAxqRZEvkhYn*3#$0ucfiuH<~U81+TQ+i`3P-(~b#)3qR@_W-e|HdUDt z&~9DysP*ZTvai}uu&-*Er>c+hJxAT4hu`*zdaQZfN%l{dQ=smzS4W%Q)*{E@7fS5m z54Qvxgsb_4i`cUhHkZVZ)lD#HDkNDGXsRXv$0&B;|6;PBg6h5l(E)Uo${7&K`7rB% z=_R~)-6rt9R;*U87<+R>O8DS4)JkNIoC5m?W1lr>+LOMDk_KBO`Z)t1&p*6)oV%3~ zf3(h}!)4(#^CTBAV<59sQ{UTHtx`)n^jY?S&k>qL`_4Wqf$H;EcP=ZmZ9v#LET_w# z7_i)GG4lm%+L>d{pY~r>5b$<T)o)xrfLtSfyveEw5Wc@$d=6m}zJ*O|z7s+wNRxnf z)=XhlXJi}S%|=WMMmC5P=HnhW%>7l0d{M1BBx3yS1b5lyq|ktz^$mmj05#_PO=0UX3K?wp_?uvtc5M74Y-PXC0ASS!6QT_Ci&(&#xyG`iy8)CCfhh`WH zU#o^avc}%2LD&y`zo4nwW#g-cJa|(x3o~BuSKZT6lhf~_vnX#p`o6eLJwdINAUz#j zUwg>sAFztRcmbg-72~Ca;X8J`8}ITT!bX?pL&r-lZeQn4Uvq&!aqfELCScLclW|yv zlhNh8afBnMhyp8s+)(>6vo?J1)gxlEhL3KMxAl*Y4;Ti7=$aSiN>H2M z)8%hRAp|ao#Af?!c)SH2wfg&@&)swfNV<0hoOB@Z+;brZIk6|5X;j_ zA4uwGMlsoU&Fy_^?VmknP{mxw(t(Fkt>@J; zMow_N>mZp$#(NDMk-EhKZc6G%bN76@#9Qfl2UDayjK_VIN8N^&UW^-;Q;fdp>%S!qm1t&~laR(okAdFxOfwIGOr|7MU~p zeUdIB9}E~|;NL_;&=n;h@u9DUn{>5FsUF$|Y$;JHG4=sOBG(s7DgJ67H5&5l-MWy= z+CadP`TCu`in#DK>K*>#idA3%1b-b#skX|P$mtm?Cm zkc4^n#%W!TFwP8>`FA9-{$zDs(?r{co}U3@2{5=-mZhn9aU!h%ukpH3j`Xr&A|vYt z;yOdwh#}{sDb&r4Fk&^(UXyRq-ZXX0=f*Js$JC)BB${&htb%}QyuhtNV|jq}|KqXJ zFW(S@2i0GddNBh+j$X3@-mCeS;Zz^nxp)58B#-+fajNI^Vl7H%4HTa>_9w7RU73;A z91*^M!3XB`&{9q3{D2}mG+_i-i@4!Afg5=jM;=XB{L8YPZ(QqhNU&c65zlH!7YP^s zMf6bz4@6mqZDf3uy>@#h;15$P`whX_%k_eDm(fx%U_wZ~FYQ$`RRAEeaw-LnmRXpW z{$`~B*dP3xivz#i{EZvHFTM|c=hwh*XHNVM4*%!hwuj~Xhb5t5hbw;6x#E~B<@?B& zbW+gSIvgcePM?`{s8Qg4C#2_9?=%wdoZ&}J^2sMk?_TCv3D`F>9Qk7(x;_#3@34XQrC`$%rWM`_+rrz!Rf1G& z#PxOknz-$9D{zO=6`%EJeX9sW<`NZ-xlbEMYz(U!J5*4nv9!_VNS~O^&txRz(D?Xj zCSuuo&y*vVVlc?wk;WU zpX@VUqkol@^<1R;EY(TEAU6ike&~F>AWJKs!Pa+qMCUU6vKkeW<2B#fjG-3Db5yt8 zuZ!Cns;gGnUNWFytV!yKuUPC>#mos?-LEV<=@8v)GD1YY3^_%;U_`m~@hqxWYDVH% zf`B6&=A^SGdmBNLqm9huA!r0PZ%nO;__*u1@*UsThk%pQpfm44%`UT9&uD{*z;voi zW9l3qUBy_X$>9`IB7hySVg~J6PA%!id9LAn=>CV8Swqb06xkE_`qmcjaWKfNxNy<~ z#*>X{K6HF24N-p#euH%@cWGF){t>0e~ z;A5q`9d6qswylRyzk}I)B5v;^yg^>^Y zflMyty?W?qD{7Pd&xDQ(@RjbgwWS$3eR_hNy)7QsNMg(Dy&g1nq#M#F0LTcY8-qf&}A zP%=^e{t368W-Q>_DLR?nUh^SLDwc~w-)73=uD3ttBTwjH)+Xg0*rT++Q3gN1M|A0y z8f>jt(wC-GF-JLkujZ<4bm%*lug-}S#8D)!4kjWES-mE?=QiFm!N<~%b6*xC zu*5L$34i+JEK(u~QY&4!y1nmG^i3m6dsm@Ja`?PE$2HixUd6_oNZ1z9_vAvwXVX*d z{%HY!CM@T4wJv-N?!n2gIr42it<_dwQ!3H^Fx2oKd5uLXo>q{=vA&kNDe!SUzU&x@ zcAfNOS!9~FV%jpa95h&Ez`s@K&v{;f3@N#KNdZ4x^#RAFE3e}hPaMQ`(t9PHP>1K+ zST`$QEbh76O2gy*rA0E1>qq0^D`U8#Q`cdymDzk`CZ0PAcHDuclGn029e5sE%-E1N zrsx}_z})o+$4yg;RY*8QK(H-Cz%q3;KaO2rXFP;yl&m*=XBF_6^&+*~$-m=ON8=60~dbt^=ji@p3;D2&w5PwpPvpb4rR| zd$7phd3CC0AE6xlc!7N)tUNw*4q@I-fkeSjONbbIlE5i9pzgMV(J9@v$jNxRdsam@ z@a|co;F(lD#8S-K=?+>%BYmZ@#Q+#W5Gtc#sRMqPm9mPm%m)6472KWGOgunXyA_m6 z2m`+u4;xK<$6M9L5#1)QL-8wzNQK=G1^!I_Tws+MKTOGm>DhkZx#OIUi-{0{=F}7` zJDC|}2KUrLUL;;sARFbW0pbnnzd`gpnR1##oMV>z8q&1<#JO9**HmNAn!zP-Ea zH2E$4Wn-v+O>~v=lT~lh!uV0@Uylfi2gB5=HWU%Tje}75h$}hIP=$K!wKv<@d#sy3 zrD%)23m7dr;LHm??bHu7>wQJU8L6)}VEOu2UXHWx?2$V9Rj%{k40*tzr8;P@d??+U zwp|{D{UtP2^0UZkp|KdYvvV!nZ28R~$c*}s+x)ioJ@swr|Lu7VEUh=#N&=7!NN;8q zAIG^7#e>uwtt!Z2>RX=a8wt5$yPQC*t36J!m)9n?@@g&>Tgc3J(>-DREy8eGl@*F9 zvCOwmolfHEeG)!>s(ngmKU|HkSLQA6sf{sFAeR=~q*t9df3yl}oH zR=P);lyz&XU=tw+AXJ4QmrUs^2~;uratFR~j`SrGl4WTmmv5sx47LAtyw7G86#-pE;8gogxQayEX0x=U zIqrAqB}=wYl8uXT&=IJAWrvZNz6(+;IK$m`t%#G7ZtFwZiOH)!a^@XiLJI6OyNS(C zd;EOx&f3I69LcPw-qEc^{`@1MHjlAvVcV1E;xk*c$|!9WQ?B#$0Ua+?K1rij9eJ|# z-iKWQH?HhZ2iQdV~$pnw;04e_j~MytYm`d!!Zh!C){% zQ^_ej2SR-%AacRqhr%@rj8WQSDC;No5x%oIh$xVAZmD^z6Xyq{9PNhFU52|(M?Nc) zzVXF%pWr*}h2+IzBOBhEf4V*5bI|4tMM=q3Ed6+n@~iANQlO2z363|KN0Kx$hbla# zm9YM*$zip?0Q`{v&T2)6!kn7cAhF&#{ZJV)BqV=YfeddvGqN$(zs-YKON6b0xromh;%&JKN9bz=l7`;S$l2 zvCX$F!`Is4svG4pz9+>Ynmk}n7ea5b6Jj?94Hjfqo`;uAowoz=D(xnq9P#xB2-y~( z`>%&PD1@q1D*GR72xmC|by4G{>ltz5GM-Oxm4${Ya#?=kJ51z4AFBT^U>xr6 zhv?u*7=T`5jg$3R$*VJn5!zC0W&#Q}=>^j5a`~%c0t}Jh@qi^AdsyU4yfFbNrXsG5 z2nS@P$&(#bq8NB`5Bd7<=&=A=Q)5}iJ9mg{Ny)HURT1CG!Ry!Pe3Az>pazFUnKvN(J0!ZbxRasCD$sWv} z;2#X_1R*{0Z!m+SK!)OAe!6hLWw4;~0V`F&Xtsq<+j;Y19}|P;?ENA%-DNBl-Pc(40!$*+{r3|MeHCQmMnQLd-=Bg1D=m?iU9^{$7a_2||i&W$=Zi<|NpX z(_JBAY}NZ?nr9D~IN+n;e)lED)11}QdGg_Lgh=N;XTF=CT$P@)oxRN3s%ZJhsp%~2 z>4g6u7E+UIiU-*s(ADN{&4bOp2Y#0oYAj0_T^eSqJA^O!adpT?OZxG{;nAbmbIlja zMV(Hz2WOmFO(6kq$>?krd|#$noZ?-G_Zv-?x592&>N~NQIljBn+NXYY?gD|Kj|t4G z3yeb8=}_$~ydI;A=?zkUa!c5}47SwvC~x+oOB-z8GAkQ z^zxW|s}j!$H-dN9i0L3YqSmf}OMy1}8y6$v1OMLvw=ecLu=Rj-{yI(5HZ8K?_IT@Jz69bucHdQVDItJ11pN}l~s^hb2vEiJ&;om-(E+SIyWL62|SlZH$ z!5Zc`h|@@e>BryWgPVT({G>$8HgYZ7${WdkbUh;W>^#F0v%SwfEuO0MXsK+5*U52N zEb=u?doAmhL-BYM>a33SRs(U0*IBsp9&jhU2lnoBpM{ytt<@%>t{f2&-hrO=>Mi&r zUN}OkEbpsp5F71lyO$!$)53MxSrq0lxv)%q2OHAWhm?eON;xyG1OOj(8o3+tER1V9 z-%u#1B^&sY+xd^8jjcSR+T|=hYo!6b)$icRc*hkxy=Vk6U4xg<0~Y3= zO+W6M(8 zzf*Cx;bYqVL|kzZy%41$urHNZUNDdrW|Qrk?RJVkHO_PyJ?0iC|FnAVqk=%qS*kId zZ4N(@UlmOPb8~@*Y@TG!5g-02US_|%Mcj`OV2zg#6(6wezx5ut-~Oq-yX{8ogK?d* zu$h%H7ApQgqob|XQu~;#dUJ5@g!FXI0EB9tGMdyD9ah7|%iT1(Of4}Qi~`xy4uEzn zR>jw%TO!7h-ub3ebin)Be3zQ7*}RPO8iJAYpF4mX4#| zs!9ILRx2VoabQ=IMX&LrLw@m?Hod-~>$FlH)>c8CKS8`QyLJ-wtimr8obPWZe!;p4 zqjfsLwoA-*vN57knyb0w{42#v-8q9s!vwEfao7xDY-6k9ZRr^WSSJaWDapsx`)&xG z2SEB=#&3$iEZCjItpL@JOue>lGUYT87o2o}kd*gMdYUIOZ?$*~gmmH6_}Z1D9K|qH zC~@4>VN)zYGv^#g)@2WGJK9r~I>ne}q>>`L9ej=4@suScx@EPp(+b)+bJ(gSxW#BX zHq-JV6mH;3BCm04E$|jF6>e~WTF>pmy>53?mEh-6F%^&b!ReoPGTTZYAWgW8eC$Q6 zTR2Q8ec}H{cSG&4igu+W!VYIZ3VCTZMlF#vzCUG5@Ub>MQa3f}Q10-PVCG|QzWCVo zPTkDZq}jrtK9hp;1-RLMLYB}W5ZliA2mnu-asgR4s$FKmL@4*vJ_6nr^+PsI-<2AF zythpz0G=Ly^e`G#)HRK6_Eemi3pr;_P@cI)c9}Vr;sN?*w?}K{E`7S8fkEVK4mQsy z2`Gw0OzC`N4?cN-P(vA8iYl_fDjvjtyjw37>~JN8H+E@rf|fb{x+iDpx3--(Z=giO@UKbHl%wufZHHQgE$-L)BU~O z*G*BHI|10kZvvBfFR)h-fG@k9@;5+014JcEQon|RTDP?Y+nM?QLgf74gUA10`qa4> z{R6gyq@5a*p7n|cC-%LF&wqFHlx~e>6N3@gXb*L*?2ssmM@7m4(ci5 z3XxcO8gZhzDt~Yui#6D4o^95`PTJxTOUojaG)nzkFz6fao-aRRIojG>BFW`)>xD3D z>p+`KrJw1+)*Cq42nNayRamT0#2R=nuhOPDd*Zed1w`bat8A#T!5p4cKChXf!e&tJ z&g&kwOBI98j4maek~P3vwk&T5jMl^6F|8B_+1zDv5jvOZHqo6D0L(G2RYZ)|zklrv z%EkX)oh3$>hiJ50y0m*DHfSHg*Q22bcq?0Zo=0lChfcbS)1nLXf>I6V)HlU}VGUQ@ zN8W@OW^a^tGcWhzVn-wM+N%9MNMf9y?PW2(^TC$lQ&a8u@DjG7DYwdx2@Jg*d(h`l z%HXN*s8$^5+3^DVxgpD{09|#W|IoM}k#Sxh0H0r$IZV7Pr-htnXqREp`GW-ZleF}|r zCbgtoRwz-n+jnZRQ;aj}WGkq3uQ~QCCJ1E6;dveB7wLGRq9at3;(&KD3Wzbw3rw6D zkXdgg>cHb}USI$GU5s<%?91CMkpK%HIlGr5JmW(6s(Do8Ar6q4{9G$7P=~x6CYq-*AwTxS^r*Jp6MS3Tc!vkwPR8x zHOdEDJ2JaM!oGeOWbN^fE2U)nvoYq@?pgMxo~FMd&QNB3<=v)ia|1qpOJ!-R$Mlrw zFCV>c8_)2GVK-3xqZRshi3A|k|My+f|HP%e$9G6{ar=g*_2?GqikF;=5GdDlcYPJh zs3i`FRZobno;y9=`b{ZtTlaQOoo`3sB#RIC+b`Mw$!S^3olYtvWd;s@t zdw&Ro2Bhyh@lMQ|nQ>*kuzf9k`cNxbQXXneAW_@LNO94QTR01F%OIz7)2xnz6d6#< z{=Ewq4z+6F9|L@Jb++++?V1D|$!Mcgbu!T5a&|;8N|OHHuxUoM;)-HV2f=hl095C^ z_X4!aZH6*!xdQDit%o=(?EN@>Jw10~dUxyFFCGmZ@%9y;cLP82b~W4ZRk|KDNV(zR z*vFO^0IPA3C*Oc!>-``(UiPDpjqyB<2ZIs`~PDkTUlhdj@w_bXgjr??Q zaWKTsvof;^(hERWWp*vTDJcO|QIsL&opnp8shMtP>$=cxf{P~jeCEGy)5T&NV=1IU z2iKlVfDgd1i;l#r*5#vBRorqI#7oDwtgXax!7Eu;O1gc4C$JZm;$`X69Ur8KFf_|c zHqyF@LbS`EfW72TOi)w-7HUp^{5BT^S?KFN^QL{XG?As2j7?tad&AKxSS_r?+Ul)Z zutTFOf75857MvAI&_R5#bdi~mAUI4EGL9ZdTQS0xV`=knme2l2K-PPR5cY-1<<`s< z${ZzPppgq1sviw@by?h`g?GmA{wCRi-00&8XgDxK z3D-Wg{lT^G|NX%iI1>228fRAa4}?%_&s!cKOwCLu!MtkKvVDW{RuwR%hnjs^H{Utf z&JQgg^k@E^-HL_jl@=gUpz!N84*Lk%)S{WdDQ?a^8t=p9Zqlj% zTS5rB6*Q7IAupL*fQ{HF(e{s5AcXjV0`{717MfyHYr+sD*;L*p%`KzBNq z9myv>A^GSr_mzs2ZX5Yt);KqVNWeX`_AxIleJyo}FHyr7li%m@Wn{3u{idl5wCXTn zmx3#$`mA}Ay7MApYCjf|y-Yq=%#<#A7U9pngsLV_#3(a=TukB7B6P2?xc)aZ{XW^z zUJh2#?^V5%*86{ywnX`|9&DA)Or0f@BI41yJY}EKHRJTpqS19SvjvHC1qOwkxOZ;b zasHP9@P7iU|9^UEpFKeQ5bL7?F%frXgOl6GEPv*Mu5aYgzq5bMHd(B zl73rJUa_ZMjeF;?5!!{QCb)1fUsz8^{XxsYRtRqM30yRpq0Ec6=qTV=3AcEf#mC^g zxEBl7R|-2vlMLWgA{!svBsawErH|-!fo-Dkic}dXyWWY;iH}|30PPT+XF%qYT9W*cRj#5v%tYTqvM8fi?&JxB z7{?)-a$paPJ;(LTW&T_#W?U(5d9uUcgF8bSffV3-7<-ta{8pfAE9hSA9%r(2y5^`J z*nFt<*nZD53Ic+CC2nM5j8t|JFQWHT+p}`SLDye|G~zBSNEzU1>kY@556caF%E{AJ zDdU?R_>}ir+DR9t=F1wp6nh*H-6%oFr;u@~&j9XE4-ZD$W;zb02ZYw@Z)`+mB2H)T zCN%VCq+vLzqQ{%qs-9B`pPFdJ1FeD!d%eHoA?yk0{glZFfhDpicLJ4akI1thptKJ* zmvR9w7rtlf+k)Y=R)(yfM3Q$}1hEG2wcxn&>+2?Wty>0|LBN@yUuDgEw;X&O{9F7) zFy*nB$jy_j#1TE2jg{$cze8Yt8NHYRi6WPU=?-PKIo0^vNNV43A768-z#6jUy0X&* zTi+cVr?XO^Z3s1??wF1OzIfci*P-bZjaL6^^Jg;(rnm3tH?uv?m}OIBW^8ee*!VWxHkVkSm!KWf(%zosQZ336PT!O zZtgC${>e94gI<{uz%G5<+aduqe`s}*a_SEiMg;O)GF8WI2rKFd97?I*azE?j%0J9i(aZ~bp?b&b35 zI2^(Sl_?%><;5Orb)d>P+5WLS!hb*vv*|E;FeuiglFaDR#&L8w6wN2ee2aAFMKL3% zukP=}lvpn%`a0Xy5zi+2~VzH9MY zU=+|f0vq}43l{JGN}u-hi=h@<0#l9@q}&$P`jc&u%v1^9qEE$Z*NL(3SR9G-Ktn-{ z$v^(|ry>bzfS&%Ph`aNq2bB#NkOM)A1=xc0X;r2e zTxl9@2jI(Y-&LIPfx1k&7|iM3s?LZ@p3`J?e`2SFZLk4=Ip)9jb1 z+mp*!+PMwd>@}9CMm!(gZ7HP)xb2;35dYiy1plZ@U7Z-7%8Tg|0bZ%&gP0ST{YU?R z&BHQzIrU+ka?QETPXe$4iqq_!q^%j zg#!6-(8l*zl5M#sy_<-aOLKHd!3kfvk_F^9y_HGsmmE-D7AQ()61A_CIo_L?zR_x@ zlWF9hN?D%q3+_SZTtPlIkQc@E>CrZny!of+y=X;4>*V!S7N9rb;F8@7WJab}L$i%b zE6O#DWuCcj)fvnPD|NHY1A2}t5ak#19{&VNyzVtF{{|YYbD^-lamPXEU+(U;dZu7rx82Pq*RelBgOuvv4 zuQ7EEKbZIhgoH8sF}d_>B*!`Cuf~IrbF;DDk6s}ZHOaC&EuLyE?*-OV zn~;Vr@F&lv`c?#tgZA%R>dd;-oZTb*`d8OO25hCFMMCa0ZIU>>X*a~(@p?z;Oym4$?`A6;&iC}saWV;pz1|o$4*!8eLHOYvBvF z)y!dTFQw^*XQ{#ygSc*!(J{X9tbtJ&t1R~(y9;A9c>wgGSASt^5)e z+S>hyL0&paIf5^NT~4q0v?UQC6fE<*%^)+Lw#4LO z&n1t&q3_4$Y6Wqx(b&I_Fc!aA9$yxV&Lx77lnNjGH^uF9J=@qUCRlOL)wK0HSn;-n zjY(^FTX%+3w5ACYSvCWCy6PHbGq7nk*7@@npakop)K?n|3w}*R`~_Hsi3|__9%S?$9yrY1}NZwzqz-?M;&h`MSq$GvlbVFNdSRVp37Y`YLGcv#{K)>s9l4ue@Cw ztll>_A|E_jz6a-eWDf)u)Osm9e~{KR-)9`;vo?{4dko ze~qxACnR>1vrd>OI?zRloW5}_t?0V=BwqpZj~oVm{~;&h`t>vB751SN>@qa|HTxO7 z3>!xJoPr~d{S?O}57a>&Td{pd$XvJ`kJ6e(@_Z?^1wOFu!8#CqmMnwk(YoR5<6}JI zI$seQ(vyKN*q~RKEy%na=KnVUo$%vi+b0ySo4F?Yhn+)uxYsi9uAIiTcP(pNA5U>E z>(_qe%&VleOxYAwwoN;z0suFkF|nADgS(Vtl;ifD;Fo!g+&uYn*ssZefk*7|%9*j`;H8aTcOhp0sjT z`3X#ho%eM5aiE$vt*ZzDY@E=21X$VSw8Km;h~A$eFqw9mEWY^^H8H*s$V;S!>l z9ul|vo81U=px7L~ELAgZw9z|M8t0?uSX|mFksBt8RE|g`$OL1Pvb%=S%HK}^zT6ZI zTz=O3-S_U9PHWjIYemT?Uv_ZM`cHy{3YVrdc zPV^a#7_ba`MaGmYY(NU|&!UT{EPIL7r!;s>eCZ>ItEV=jIm*kfs64N59i2KwZi=h5 zshJl6?EvDR2~WRR2t647B~2K=j$9;qlv~Ww7(eW+hKld&x6$beeX*e$QO4B8u{_{g zuEnHNSrq(siQlI*-NWHijz?mWfj@@r{?X#G_g2HyjFNZaR&8l=`=C@Ldpu66+||L_ zdbB8YiYd-P2eZ%sbj&M?s(*)k%xU~hvH`})e0fgEl1;UKGBEwq!nb7*bVm5_WDJm4G)@T`37}-z2h`rZDNxYNp-MB$Re=QeDUrHb|;6Qvs3k<_&Twi_Jf+D4@qr)ZXKB#g}5s)89wBcYFV#1?44)x~F3b&h$4rt8>dC&RHwfD@j9q zL>#e1lA)d#rpTgrH~59IhBpg!JkExDF234=>b@<0vfpJhJm53@kuj#Ibg*2`8>}+0 z{jEuR-+Cb#6*Y7?JYC2pW-`w`WKKK5j+mP&djYR~Dy%3Lg2mN=Gu|3ztqS!-mhh=0 zswa7{hdyVCTQg~h8!`r6*dBzlgTm{S?DfZr%t3bJ|F zWAn0&L-2d{aBIXpTxUsq;m#@ouTtM(_!glG91hBiE|l|EXm>h8CpOuEPyQ{*w|Hpl zO8lfOzS7&l&*}DLU+qOp4HB#NJYwQW-M?<3ApN9P2`_VGXHSluuw!Q;@59Ko-il2H zj91WN~X&kl4x7DJb5;H(@Bff_uj;-g#RK_Ro4NpS>rbya_| zYql$JjSpzlLvaR10eWCr)?XTyNTH!45ci2Fp#-?a`C5ei7Oi3lDwWBFv_b>Im}z6V z*iuU}yRXV#LKIM@Bj*OoPCe2cQ*_Pq-o95#F_^reohSSqo;4}=-hPfi*$vb!OBEOG z{QF)pCLlu#yTTfNu^CBO`p%*}1(OMtTM*ar8kXEsHj=E@2qi7|B&HFuo0Ft}Q`iFTL=He&FWEhS(Te=DcO87DtL+>bX>6H#v$Diz z6o9F~7T%Acja*>Kh`-2s5?TLD8vX|W)VjTmb8>q&mZe?9?Vi`6PK}r7$zT0Zx{12N zzpr5?3TUOM4Ydz@(8wtWFJ(sa`Jx&5^(OpM;MMc|M6a+?sE~g=PN#f(-{1Z=8=D{z ztIPb5iuLcb(&w*x9U`|CO0Q}>w^dWyDkQM+lp}G@v=cyW{x+j__}Ib*zlzvh$&A@W zID>Lg;ku74FhJO66ggli<@VPD;QT=Li<7O3nxY4Cpr#TlQ_joWRJYKw?JqsFXKZ$Q z7-w&3vEk(GH2d!A8t2XpE)RXQw6p&6{4RBPgQ>HF`8D15vKc(l$712A7q|KD&FsGi zzh;jGwmR&0S`#kM`bFTxnw4ZTGhY-!$k7(&59YlH(9}SH1s)3L4`{h_&BgnBwh|?! zax0102iUL4Z!)*90a>QKn0jh8C#(yehcI{58p$hEr4f8b7@w?6**Q2=+QMs{#V=@(;5 zHLNcGw@+%PI{%^h)t7{!tXrJo;!*)&i7>GWJieTlyN-Ujf(mej=zGY>B8#AO_V-KcQ{SJn#A$+ zm0dyEDV{FW(#-0N64_-JcVM#ZMGZ2EDRCaPi^lrDRYm2(fU1ZR3Bu29FCTfgcmPl! zKs*&TB=&bRC6|XEi~BSZ$MD2ucY&VU*Tsg0$hCdVbT3>iz5oY(`?|ZpfFu5Qj>`T& zbqAt6R#$~$GPza*Yv}R%deO!k{azl#wZ6NS@L!!@ADy6y??T5nhKD+3Yt6V*Kkgu$ z;qD=Z=)P{;z8JuHeU|<1KX<e}qi1MuKMD# z)ZrX0%1+$eJHc9D&Gmfg`7g*QW8#ZO9Pv&uXfRz2O_GPH8E?~7VRt zSaY6-K-+75gX?L}CC6rg3+%vRFZAOLFE!gg`d)k24C_UJKPzK2x0QG{K?pdz zAIrqOp*Oi>?tA8E@zI`i))o1b~aX-|-ZMeY1@y*R;wxIyLoz*8m}%zM1X?-P@BTe=81o6n>|ALu5aStkW9rptL){PP z9>&Qn{Su64ge;&N`=+#kXV^( z@m>!q4XihlWlGA|H!EA<*>-V5gmO#4((*i2sDN{hR`rfJU^V%;e@}2zGU;i!AjdA3 z?2g>qS(crkHow=CXtL32e9jKuDx~W|ujs4CHsbn4Zzg2LZB$K7c3vSOQ!!83{{v-^ z5rE>gS>-V~?%N)Fd{6bn(Z%i1`q<2KC*5E=nl~h@%3|Bd61ZAiH1n#cxgf%=vI*DU zSDW@cUt0M~MH2bP=(2LC#S!~QJ>%qP9D18FNI2|Lh8n($&>StDZEz6e@arkfFu2dJYPQ(eatLa7_#|kG#7qw8iog`Y&W<8W8Q@46L8$04eSH zW^Ygk-tnFj_HQZAH%T+K`aAKkK`q&Jcl|I3=!wBDF#p#Qj(>Dc{*U_j?-ghcPwSfZ zabK=h2byr>>d8Ml8rA1wR<1FCj_jocNnP`m-pe&b;E1XoRRLoo50iFgW>D*%SU>C$ z98P?g3W;QmGw_3dVYPV@Kca7O5hLu+GTo^tL^i!08!*w9L$Q^^tW@ud|1=M)1u`dkUUwt_qi&)LE&VmDWmaq?p2 za%DTG5qb4?88Antn$LVvyPHpQQ==bAG}_8TA9M=%R&I>~fpe{S_oXl8me^L5_7b_6HwdMc(Ld zu0i=5{A8COT1`Y}P+~RlkF?Z#I?Ig_=kDp~bfsrNQ&Q#SR@3o`ORNu?7jBdYhCR;uWPM^dewbE zHQ6xttWvMY@6+q=cVJ0tV}u#P3f94VMGYPYOkOzajq!3YkUwrH2&k_BeU$`-qpVaG zs1H{}1Nl*&dsO1i&N^PU6KOoQYPSV%O7!>9h;C;~o!@3+U_)l|U}-`{$t8qWLpu>d z9GLcucU4^e?vy+#V@N4}=I^UNTwUTHVY!~rxn1eKX9@cD{n-VR2GV}uFGJGg<$5|V z#hv+*e4A&?$34T~n3bH4?+O*C;wKZsaCTMA0Y`VyU8=yvtHAo!r9S(86)i2hW%3k| zZl?u1aFT~vUlD>71j3cQY;vQwulY#kq|AFjpq5Mwk=vgoOcW>f{3}0JWjW?8y&j)m z%n7LVn+XA#h@Gk=ztcFgzc~>P$QbJpK(l~AMWhlY=tCDDgbEfw^+&~%oSB3sXwc#w zRN@5JU)f2vl6QQD;yYQOO6netW3`YdRB(KPeHZlA{{|4Zfk2uB8Ju|&cXqWl?j&rL zTbx4|dHnlk9t6F~BXx)BoRfZcmp?mywqnD>@AnL6Ra{{R9Ypc~Se52Jw6KSNuvXte z7;6*E$J*pkbNV3YqTG+w6bD$u2lA)5V)?VmIDA%9M))|Ej#Dkv4IzI|0-wg`c80e@ zC10>D@>};{TV}WiwAFyQlmi(n-r!I!YLb*kDwOCvN>u+f35a?9--cXHFpbTq=k?Dy z_WpN!Z5D<6_wO!_>W+wQsJy&aU#RNhdA2lzUhk(#9Ye57a6NJCM;4C{qpi8QxhFbE z=~J+ZyCRzIz*gJP$h;Iv%_4|-KfBKNwcN3}e&8X0r6`R^X?Go`wuP%}J!k@RCrH%p zDA^&juu1YZ>cw2)o31Z2CbI>16(PWTI$pl#?n_3*?Wn@c|EL_yb17MwHU`Q2IY z68qbzE*Fr?xA2U%<3Nih=l<&zpkvrOJv6d+%>wi-K;}{iINV-Oz9~gjxU0WxA2V=0 zfEfr9rR$kbiFnV=TR{V4D))9$k{<=9J-JOQ;nT7gx`%HxI~@opz=yx%lO!tCe87(# zs5RwjqSd_C8{UWbv51>p?boU{vt__XmS}@;&|%nra&QOq_1op_UmU)qcKIs6mv7`) z7khvizy00v6X}2Ycp+?x|8H+2A5L7>@LA-3dk^Jk zdnSplKRe?*ob6J`_Q zGhu57_p~bzI-JIyudP|g9o4COu^e>db3Kf7oE#b6OrC?&yK=m>Qo==dC=uB2Rsb=KKXoXXmYu7K7;{ZYrF(r zV;Eo5+m)D;WAHybCP+1bs>@sVyF7v4x|@q(QwyU%+Wx<{>MZ%ix{5V-MXm2D+}dmr zJN4Vrxok%Qt9g+a1H2fC<8_vYlYNXaklbC~6={Ps@=Ciz0Dx}rjdu$z8`Ne#&; zt|3RQJ9pT_Mr}^ab+Mfbq4qXC9X7MUXS39dk>S_hMG_=hu8oN|nRP>NX_PrI-;GvA ziwg?Dzg(XZsw;ntd^RXg&~2Ev+FwznM7CG+%*U$h&eeHiHxs4w4^}(2ejR1UVS5Yh zRO_P!t${HtJ<$iUS<@r+Rg{4z#c{}|LUrexOP@Y25vgeSyjt^!^jmQN={x`|!fzXu zosmLXunO;MTC~5Ft-G=$O+W#TNGzo$%-7SH+C?t=4Jvt)NX6LKRl2Q>1b1dsJcg1^ ztM)_s{i}B#=Lcn6&4@kI5xOO07q%R8%%>3Zn%^t(YKED`phK(^h|Pw=1e)WsrUt?8 zyml$QxbyE+;oZx^ETh5|1gUcQl44A5)y*cay?YcNyY`3$ZFA+m>HhIWeDBsWLpO?|xQEdG5kt&gVM$_&mie6e@g*+!xpNb&HoYv;zm|pQ? z3whDuR2Wh&_Z#d)@Q15x>|o0eiRD{X#E{3!j9eEhZ+zVQBNnTYU&ZT*2&J(7ReFo) zG7jpK;VDqL)IWM9^HlCTHABY>C3&~mud2^ty$Etrit|5=2^CvcN_{a_OO=qfrKTb$ zLxv~T#9Ht4V2I@DI9}TNDg~a^*?8DTEVEMN%6_)2ppsBvnCQTP+0zKAqJ-4z8dw@N z?OWy)x%P9|erE9Sfk^(244r~r%GaO${^qO6^wuZlk_U|k0zoT3P1UQ_#+m&HG>#UX z+LVq1gwfolj=01@$C=b_r9-=m=v(rwO6xcBCsIWG_ZLHa!tmrDNd+R}<6l=BJJa7e zNrNTI4XgtD^8MAaW76(KKc;}1^Zqv0&RSCWQRYBWYyYmkrZ_ne8{$2abm`E+;63}DGzawSk&?-Kfn$)X9K=-L;T4hBS{&7Jz z6R~OGIcHpI_9Ebs1|5!9Y4Y&F;uuKx2X$0^ZxTqCD|Z+n$gc+(&-cFP3sD3WPu%@) zN*z6k5^L&@tVyZOJDLg<)@tt!uocB$8+mR93e0gvgM}l%+KAHFdAk8+ z1a>~NTAgSK{(!*N!(`8OlVt}c$#z)*JK8GP&UX12C_+YXVRU}L5}*pS<0Nx`mIx=k zuvTwQ$B(hpc?|_gCl?Q6YRlyDk~=30i$oF+FKsaSCn^K!N(c3L_VAH6dqeGLIB^_v zE!l(Y#;=N_1qq}pnRJGXw`Ar%2`+oxiax5AoS>^zY307Z;dYEEBF->5Hq}qA>dM{M z??T)|eWHAY@0yeeSR8S0`k{Rx(2c*(8Md_>dUjTv_%7WrR^}Z`WYM*s*{&pEAp zq5GO7(z&GG7359)>MX)i+?;y~8pMSg0-A`KQr?#oCjk{ovBjapnY!zO9=X+9&;7b1 zvkI{1%l4lcnC5bNHS&RLQD|NGo57WV7UL_0DOhZYwl+`?s|zto011_-SR?N7S5?C& zw({T2>G$%{M=C{*QgI@y-1MvbxG^iO6b=zzb2UDkb$0#C7{wyEG$hzAONw^zfHKNoBczKmb&8gFq}euy2zgsJe}nB*goGZWFqo zTCv0qzQrmHp);zJoeh1gqsu@Hul!-DCt{?26fB3#XZW?Kik%ac{JjlJ)wo-p08iAS zZYfsBF8!y)-n+>v<_;5ak3}NJE0;b9c$o2J7;zCTCOrJd^j(BmxtIL`zW6i!&$oqt zw^2l=)1+G~R$&^{i{m=btfTbGfJclcQCEiKIs0k)2y-`CJDk0%YDL5!oYZpiCuyBt z_(vSA#>SmEN|$11 z{Edh+>#V{URXz}x=swilxfMBTsLQpqC?J|}?K!9k_PA+gF(SS3$g$PAO-#ioyjn04 zt8%)IODJaBh9@0T_;|$)*!1C_sbZ{5_(ebZ;>JR7kk(|Xv|gI0vt#VKuHV&+h6(*m zkgiks!j?mz{E4wRb1{CX0eDj7B$=5x(V4Bkf|um)u4BJK%gl2#v9 z|Lr}q{IctJvZvMBCciLdRg^TC!C%g$uMrX5xW0FKaLsb4|8Xp-E7oprFxB+v>3YYm zT-T$$`iSQP3khsCdO5ULr$G}}cZKr{D|@Fs`Rzb#fmQm~r?* z``p&@Kx@mc3;oik$s^ia4cn!DGwHQe7HhH(R~S z7=8^mhIcN-1vy{g&*m&@v2Rl@Pq0EGtT)B;0>MvK;E_p`f$dlR%JbPaU&o%i0r1EN zs;-i>!|!nQ5}5r*^s~K=_2>Y_BE1Z^WukJzLMOaFDp`|J0Y_f*>YY11iOt5_ZH)St z18@DB`W)-@1g*OAq)cU4sQtS0q#yoZrV4MKi{A<`ke=;&#i&CtQ zbW*QouCZ<|eLXa2?;{kYZ%4D1>fZEDxr?>yJ1veW5#bd2;$@n?@F2)tB|R+qK-(fY zOGu>FB?ovfe)?Of9n3@nr455s^Fl#A<6jTz%@fQ1i!SRh%+&XO=gfC4hTew0pA(KBg3_}r#( ztw)y8%G>rJS?P+UhTQzO6S$r7AmZ(S_Ivxf)RlJ+t&ZxCT_~VD3wL{4rH-oO2gQZCpOjcMKsRz1XLo-jvZwaw;;)nG|D&x zuyuzP4%rGXRJK59I90#O39V>18&&Vl$kZ1LOeJp;1ggQc%K{hKdo1nh59{Sn-l2mP+WkcP-5|sESX8V7F8sAI`{F~ov zpnEdfXf3 zSovVMZkEA8Y?2hf2l$(>-8ELg5l&irRz13}(m^6v1PnvzR4AkjrQ)rTuf zuZKS+B$pX|_>b0cM-nE*MaAF=)@L61y2We08NN;QaBB+*1?%5lr~Q+bTTO+%#cwdU z+7~D7mLb9?RBIgqb*yfl)jn(UcG;8hc?$#sbKT|8%KfZSW{=tVRJ7=xGWHJ%xkDDs z!axjowgA*GWS6#V>uy@R-Pz4$Cghz_W^%q8$8>NvR;J+flzOGG(tpR3p!&L&@X{I| z+loc?c65=apYuqDxQ9&W&b!~CVQ}0tj|Wy2^)(78+7KPM$t&mc=>et(0~Be@eUD9y zxc2j*Sf+oNhzpW0iztteoxkCQBH!9)?(c+wLAD0)IBBcZv0{5;hTgtY*7D}%hM^O6 zJ+bU@2YmuJnJIHqX?NVW1Rf0MqTM^`wKoIU{p~3Tu5Z;q=$}GvA)`tvdy`N!loG4$ z0RWB!;J(qs!583}?=G##>+S8@3!KPJ;`#?YejvkRD=ocS8X_TctFz}Bi$YR(-_Rt_ z1%61((zEYH|#iyYv-I;4eIt1}(?xve~gNHns2e0O>7HU`{7+iUO*OK4?HRKLx5*>I@-F zu2`OFtJ<~v0-)WzNjl)9-7l4$@$s_0xCP#f#Qg4;v87;D)CXyXPfi$wP7aIzRZ|Vg zIIOn;5BP(K7-YrxvF|cEP!~)VzyDHyKz04sPsuO8wzvp|xXZz@07bVQ0Br~CeC<&9 zeUp=lt{Y4fMa%1)Se0PbFV&E%0(j^ zt1rmQ!Di{JIkoI7pnBeos%i&%^|w+K60#>1Eq}o0NF*-&)=WPjAz<@EJCN!7znuV} zS!`1BY-O$#UwgYeu-Q7?B=GgjTwHmDye&aas%8;MW>Q}-05g9QwYnJ-X1K7%fOJuU zy^JNz+zpyIJ;Ih25(s=)H(wrM##{4$Ubbb{F7k}$KO)b!pPPuMQa1%O(r(*-Xf_l( zOWp2KNk3i8d|KvlTzvSgk4-0|C*if!mui=ay?6xN%49$Jeoz+9YRLF)5Qw*5?%7jy z*@be(mZ*Z80jDbp^(h)4wwZ|MNOJ>+4Rq7W`m>IJlPod+IEU~uj>o^}`7erKq(=sJ zHd;ggnzvU|vR~LTq5w~9Cmsy04pF^5XQ%V2x`f)7QJ?c0g&O{T!tI8NMr%37*A>?@ z&2>qHuEJT~i_H{GPi_GF7I7~e6mI`m%2hEt~I!QHCI8%F>nJkjTm z{v;`eToxSaZO5M~wQ})=o4iQ79h1s(rcF@E4dcr;;NEZO0RN}&&DzeY|F}uKQGCBk z$<$Q5p!NQEoHWB^NGjRHUcoe26ijqWjPWQg9~vdN45y4f%6q7*npMHrR_U5t=pfKg z&CX_b&l6hGJ7KEkQvw8N^U`BjspgitZDW+vW&ORR677Fw{_BW-9{?lCjAIMn@_CXa zl=W5INt=;duT*Cz6DQgq?JaQmb$_%xDZwz1lx zbBe>^>sl3i)E(A(r*;wQZOy-~S=uGf=8oWX7$52{cS!23)&l&>DLj}3#k!He-8Dw? z;q00>wLj@)0HI1S?3qgP*F%e~-g11B3`d9`*=j(3g!}bTd=&h*i*aB(5;QCio)rq! z{&rP;cF8*v1!5t0PEuIz`&>He3{rxO9TgqIr-m$b#WnG6)#%~cP41;PgPlsTvY$z~ ze@6ON7Z~lDq`Tnm{`G7CuK54X_xh9fDV7Sogub%$JaImr2MmL4x%yk@#uG^%a(*!-187Uq7+ zBsKz+b7Ea{fW(Wx%$8}8>QbF4mg@zvOPsOT=p8t~s0L7098Up=^5}9R$cN@It=Vej zxT%{te`pbObD@wb4HdP1)ei{bf>oUeQzM2@m|1LZQ`6ic=H>8 zwykPiGP)JqTJB=1*KMDUug)MQ?=tOCuJ(rWPn2o|<1=W*Rf$$N*-yL}X`*azwqEO> zUAotK=kFLXu`>hiH*IjFOfMBy{M*q!yn1HJU_g*FRqC4Wi2dlwlJCbo;`6)GQ`wEA zAuJD;t}JO1{vw5(D2s>K=MV82l!n<=xC+#E`RIdEyBK4D;es@kU;%U}*JZ#c6P0g% z>ScwLFnc|mN;i=pA|^WF9TZRYSa4doO6YbPopq&I%>I{sL=_MDSX)1X-SUpq3Q<2~ z81c)h#^EQQ`#s@0Gx@Pze`Q0$mbK%)5f4R0hr}&CIPZq%(BZC_`0?;T{TQEcqOFzb z`maYl3WJLJ<0jm9%vJ#HCw%=kn8%d$(2D{$I3BBxTf1rWA4c_BHS0L|e$e1X&FM=QD^u`8EZ1fM zEmgnpYl4|}7vOUB5?p@20GC^?t())F?UZRG@~F)?0h;-OIvu;@pt3t%AE@hR&H=87 z7N4wX^Mnlfu5`*lu~rV0ik*l9D-Tb2sc&R~Dj~QP0qgUxCdr7kQznxLtISsP0DS#_ z(H2DyD$EBF-WXfc3&i+>Uwe@M#f1{GS3D#Ec4PQpT@rwP5LEwzFU`lV zt#d*zaCCHC5I)_K%3^0B5&zoTKtI_nID4ZkUsmTQ&>M@9|KP4I4IRmTA#pcwyjQ5 z%O3BQv+8P{DW{_9HXl4)tIy2)Zx^zv7o;OpcuzMA)u|baX{fJRKv0u%8^rK#!DNR#nhPKktlN`5iG0(XW{DMxgL@3cjA$P+jhNZlYE**B_)F34$2L|xLFW%qAL&QJLY z_7ftOm95!TL`5lUjX0k!%vy(BNPDe;ZL4PGx*A{KK$-= z)s260mKq*~@b0nHSPg{~+WPNNU1tokd3UqOO#j7yAkQ=bDbEf>)gNp2UN9b0Nz1Hv z@05s?m*0DT*G+GvY8>GJ0Mi}f@co6~*+$}tqG4b{c5gWZ_Kw80tpZ7cVk0s=S$taE znHsP2-CB>v-oRqlz6zhlEabxG;N0SP>X`O~ko&5XLV!}Qb+w5}2WFW~4f8^)tvTQF z`3hf^knieTceE>++{T#}9<08wRJ?z{X0Gv7MrFMVZk3(p0ZZ4(qfvFyTl5FCG^sal z8aQRv0||*k8}cc01Fe*)i;(ky*jNWbTv{}!qseACrIzL@0i1Oq}THxMR zR=e^$3b0{H9`*arRx*wY*O1OpQ zo@P5K-tN;r*upE7OahhwDz}{SXD1&w0dxFc@hs0|5l(P`l%W@l-T#vtslv*xF&Pa(9?Qx$fs9 z<6qJ}nqEvQEQ(CfqN(!cUN8Zj!uZU@r2RW6D=D5EfNaqzF-+AF#G!<3YwG+oFZJJE z1NxA9xYAnlFqt>;{)BScJE~FtxLs`^r}jIYy6~eN2X)Fvah)V{I-nuRd`aZ?((h5i;A1}3SF4l;K3u2EDt9C>< ziE28fQN07$SC?&&uJ|o=y(hvkAN*RzMkCJ1O-L;-)j7NK52!UG=aqR&U~#KYU;0L) zPP5OgImh|p)+(kOiK!OkuDX@XHzlpAiyT~R31Xk5ta}l}&WOn7=~>edCd_#vim)xm zWfTDtH-;ve*w|7Yp>5%iK0#`5AQ5&HS%<1>|pYhQNyhNUG zkYt4W*dDxO_{}lfSCmxCdF>W4+=B96As{8a{nYeM+M@9e zo;*BJMpK1qht^*+?KbtWNV&=m>33K7m!=(<*SoYXIRDc6Zw9)|q2<74qDc5&%}N=N z?dk%^R#u#eJAcx*AN&$g$1 zv1B^2r>zq;S>lGhFdt=uAA2+PxM;8^LhlP{z#Ln=3wWArM6-)m3o>$#y3bf+ugT-bDl5X?OCQ*Qu~8Xy=K5f?$s)B=z>yV~bJQY~0*gj)jsuTWXUNC|*w zAI|ofktX65p_|&UOM@U`ubRkX5^a6+EVjevynk4;NoVD8py5{VZ&JIlnpvLmM&(f zTz2<=$@czlfyw`W8&KBxf0;MWx|YFVP(Qp;4J7<`$MI=>VH@=1BNpN(<6!;=3Jvb- z6JK9RLG^(Derz(rY{#G3UwItIrZ=)d{~1n{an!DH4fn)-G(3U`wAAn&GNG%JK-&vB zKY&1Awc<6WJxC|o#MOw*#0Pn)9!4e$R!E4AUcVAS2+h}F4 zmIU)F4@>u_3v8{hlr|0>_pg>T%4;tWxi2*GI%pwE65PE@ ziB%aMRti2gI`5e;Ti%{2J?nu^?Vq&K>#dcMiEH!k?{puYA7bqG6&7n#`!S8%8PW3@=jCubkVI~%+i+pXCSMMrwU>}!% z^X73!o`?Ri!6c%j{-`_|TDQ~4amX17)AhEeV+Pc{wno8_ zHrNI`^en5wcuO`p{&e3V71yY4GZCBeIPGcrVaqx1{>}*;h}o>b6HIDf9XdzOc22LZ z@`Yt)+BiTBPA3wv{g7^>ypY51rRh_r-PAtE5NRyX&dU}t!wP9o>W{ba;%TQ1OFtG1 z?G0UfwJ812^!)bCyBHVRbg^~TTJwQ|-gvY4r#?o!BfcB+#dG$e!yP;NU;XdLl+H6$ zf4J8Ko;C1z?=j($5r3Uz%B_QXLu9LBb>D7Y?+WNP+AZ#7LeF5r9SaGxy!2Oehv$qIy|;Z{P~*A9>lirOJRGU zqvUAe4R3$yc~66PL;B;PbR+G9M$gR%n<>BjaSxiw{csL~tyL|4@sqxfJA*8v(SUld z(VZA8?OPq~mvqpe+<%3SKv1>jJ1Q9GR!Xw9<8^}rQC9GFw5@?gAx~k#^R0u=J2erm zUFE?po(C^wuy$8z&(|XqR@%Zahft&HHR}i9ovoFd%-uN^D{>Cl#vK>Z39?%bk&c;=;79rzj zvpPZVabQ++0{&uKfo`Sx2fwHv-sY>3T=t-8oQ=>*^E;qAI(c{%)G2yGGEx&M=6(Xy zznzWy=?c+)osM4MV>3y)Uhc3*y}*Af}TIi_V{7JCW&oK~Xd`y_AO)r_4nW=bsA z1mK+adwz=%`%wH!$z>O+QYd)wg2H|uzZR22jZDIaMOThub{2jYLiN^%@O26{B}$d74yx9E14cP^JdO+C8aBjO^r?@xz_9IlDv6TeqO?K#^{)kfu@ zJ>OwS(6~^il{z;T7UnQ{TF};L>OqAREPq;fbDiV9--C!vBd}oX(|v@1hzrvY4MzB8K~*X-Ieh;7r?>^?QV zu3~r67Ejiv92SLS>jEf-kMiaH;Ksog#4lLKs9YqP2%Bsfud^+rc!O^eqsnO;*S8x==hlNqu#OV{z z_kiufBl#dBg@;AtiiH%9jie^yCkR~&Q5#WxxVrA=t(kYJ7gZWJPb*}>D4pgtOs3tG z$B3&1f~O-A>IeuTqIsiqh1J0Q{A^~?5clIkToVN%8Pl?0(Zt5je`0K5kgeI|{8{s= zdyyGQty}*XbUesW z<9DjkVme-0yoGT&NBns&I1g6k(?sZj^4i&WUn_p@sfR|P%{#~vo_n!3S#ZCy+pXdw zRJ%iQQ}2pis7RSx4eLa*J=%4aq{dq>t~b@)wR(oDp=8jKk7lnyM{uSG5hEq33P{Ht2}4Tsr_ zCDtNdN78!}VbGHni{^Y}^RCVNWMUt}%A)78CuiltLWqH?U3ZnU!M-@N24cmYk!pG9 zVgj|^vK-#o{y@!?n8z31xAK#ovq|D-Lp~+6$1?^-KfxH68GAXPxT8}wltj(!w(SnM z5NEgWka!-D>CiW10>^20)RpWA0*IF~c3# zb=Y_X)Vqu~P_an64BVRpH>!777L8q76t_5jMsF?woc|IcrgY^-v1$3&P#%$L`Ha}D ziWVP5L=lUWSvjO?4%lw+^oS2W6|f`VuPF|8+!|&7)a*AMYSY%HC4N>4ar3Igyj!)Q zy=FUPZ*qBQo*BijfaXs@HwbTOm8)rA97F zu4MUpi#^Nc^O$--TSFMj(eSzPN7d z8&=dVJ<@X@xqTW!2DQgbHS~-5eCFbL9C5D>-GbkAXMdx4do4;g=Vd|NLPtzbe%62&CuV2FGI-0OJk^bQI1D7Tuu<~7jO(0mq$w;z4Ij4B zL1O5(lf^ORGrm}Ii_-A?aCgcBKIMo!4Jln_a3rX>c`tP1HoCyZy=M`D*E}YG5Gb1u z*~8CW%X*;%qMq1Bu95`t7csj}OV`0S)-jpFE=NsdKIz(1-n;1sBm10wtJVD-m0aZo zlsKy+;Vdl=03MC+(G(v{U%l{=c#r}1jit*`wmPPH)fLwp^) z9q#S!sx#tTQV_9cn7B=HW`9g~8w>i#z-qp&ZPYzi%*gj(drBO$d=+`ewH&0YMP=8}*zvN4e4@+jM-2MP+cfGW|w`ZhE{y=klE4NT4b;-tM3G4X)M@FiTOK`+< z^dP*%hE*=z7A|^Yy;Elysb%OTJN$!MN2K#6NY!x}!^H0dS_glxrz>f;q>)Ho@Bd}6 zOv9T(9~gH=NA4k>f_A7*dkhmL$SBou?S<&Owr13BuSl#}t)rq%iu&m5?LLFt*xqVs^df z500tpU3|)1AkMooChPU>H*@-nLzxwTs&OyGc!fpV@L;%L@gyL{A!4xdJ{Sh>1qPCY__-kSr;D8y7 zM`=mQp?nKYAnGqz)QagGVh76*xF+NlirLCWLbylzpcNZ?8hy0GkVazOGJU(20n1gt zaDmJJRujvQ0d7L!&#eCLX$p^NCdrayFLHlRqK>g$OKc>PmGt?nH0qgPOk7KEZ%E)< zOW+SJUgd!J>gt{8cou#x#6sqtL`;jhb8O!Ju4*?Uf(M%jgg3Q{61PM@O7)-wXtO_0 z2u@)27c2AV8F2CNV>#582i)kBIM3q>>sQfrU3|Q3Kj~>b*4t`(&BvXAr|qW)4(4gP ziavc!gAbe8o$~*%b);??a=46_NlB zz&~G*B*TobQb}n(h&w|GVOw^@Ln8O}^q%@${{W6R5XsDB_okn%PYIpx#a>PKF4!A> zI(^Fzvsx&299w(1@OrNRdOoao?)(iAkW=S*|XLGX#6P?(^|4r8D)ipq>TBlRw8?0yVAvgU$Vdu_HgU_~wAWAmQ3 zzv(#M!>>$Zf29lo_4?MB6+7@_K5f+Bo$f?J<&^aMw{+#GMR^MjKM)%Vf`$NS?R1nk z%pT*unjiR`?bvs7@aUjzqtEDNY5mfILA)QkJAOOXF0ge2p59R^!3gB~e8Ye&IlY&V z;S5Ok&}*}28vpUJQJs*=10Hc|G`*A!-jv-Ysia2X?&3I*=X@8>(ovP?`QF|)J+!q)S?6@x^Lw(s5U z>{&FFrcqpi98$d$pBpU=qAvPAP^?=yY%} z>e}cRRk31i%bOB~nz8(>_nxrmQE;=#dUpcDn%0OTyJM^QaOcYfBUU!(>*~$vobW32 zo_AaTiy1M=iRSpvdd==9{>r-^TBR!v?-j2s8B;{$0!Vjv-lyrd?(qWTurz+MYhXHH zz`CHkv%K_v)Z1;1!j_IBH#XiP=mR|+wMnU?oO~a*<)ZYyg8EHOr-F%%I2Fc~w1i@j z-q0OZ$H!z63VDx`^XevS$FJ73&W%?W^_r^)R3?=bn{HWs zVSGPwRzA~zGdsu1^ri$p!&7`#Ot&*c)gdF(#RKGK$7lCqk9O* zouK0@r?uR(kd8F79yG1@CY2GCEde2<0lp~Z4UfpgPrbusf3&E(82y$;>I+FmYA>Ev z)A@8~T44X34T@3~4E@9By<`PpJVD#Dg z@M$*N-jtG%4i2nE4u+*=Fhmr8{`@_}2D1Ut-DTkCg*3WO&nv`07Jr5`|E3cRtjgW8 zK@)z*Y3Gek&#eN1u2-n34R(-vb7ze5KxI4&fqp7(mnUM;)kh~^Br86B&&Uqj`MWyFBVEl$a*%*JB;HIC3~n52j&cMj?R{fH(G0) zo{0^%P#D$Sz++prUSaQI^n`xWK;G0XiWyAa2PXXaRyAI)IQpZm|EcS?t>PBLxrDtGNJ^2p&S5dHSh z;izio-LjKrulq6M{b_Zb8H>Pz4AVQ6^6Y~aPeBGaf+}Q#5v)3d*T)+Gt-3GMC(iL& zdgXb4q7;>Vorg!5p_h zcqG_o)Q==A-IVvB&Mtz;>1U=bwq?A?yXKW7X(P;jR=M5Z7?c}r z4o7SpdU8wXK;$a+;!L*iY6nkw5qk}BAtc%!SpIBE<3V{p5G@A^7wK6)uoij%x=-SK z@>CE)vGJ&x5{u_ayfYQclOoW42ImvGvL_V3cA`MuEnSNT*53DlOSg}hbU?T#84UjI zzVZFqZ#Z#5f>HgEA-ML<5c%pWOSET8vS;>qT$_8Pkftf6r8-JO&&(+$5Qx<^{dhR< z7#Vc$Xx#yV*r4BSp*h#ebWJFnpr3Vd! zE~W!2kmDh6&BdCwi;t>Am{>xT#X9!9uZRuRpWi?q9k|_&QUfjo>G#K9{ZAU=;*03h z-v#*>e=ZRMjsf_5OA)A?j3)$e~cWkK*O)c7wP6w`vwn{IugPJX8=lwXg=tEDaFC)Q=j`wu#-2hSj z>4$$@+M);!43~EiUst&D6|x$crz|M`8^A4e@FUfnlAU|1x$_$7(BFFj8c1!R1a%hi zsn^Bi=LNOK=DCWQjC%-nGi8JTpW_Xp}!Pw$2ks z%Nh523v%|1um9USH`Mlm{Q*vc#Ls#|C?TgvjFm10)G5#{74M!S*h*L57a2!kF$>iI zG!z&K<4hayqS4CSJ)o9L7^R;alSYQhevGojciwJfhgG}#XgEACMh1Pyhq+Wv1w>|J za9{@K&$(pJt!LDqhen{j9mYhU6~%aVPhwLoAy#YkgN3GpOFYF~0&}%)*i7Z{T$Ab| zfqxCi*Nh|XubM@q?k*WcHzX)~CihbA^CPvlezu6B8ap+)4ap-LTsE_;3~l(#SZ20# z7xQdWtzxStGV?~7YLBZvOrVt>`7I=JM~X2MWN?o=v~)y01t9~~YvC_Q-c#iLxa%>5 z>Cf{v5QElbyFo4cx9zT@+z#-Z9XwnCezUr1^5`JznzBC_iW&BB=!inDj8ZVwTPA6? z85ytFgNHXxxf&g;a$b9bO=^HXfBJPHD*il^RNBzS#i|p-dNX8p>dCv&_t<@tS+KMG zmgF!geuTU|B*Hh$<)EU$KtDsn^S142B-|{G@5ajt(eym=cBq|0(e^2& zYzBrWtpM-0_xb?ccU{-0iNrOO?wLc?$h}g^r$S|UHRzVU>H3iH25v}ClyDHRWmS;| z2aNz3>o%-g(g-o9GNndaie{xKS={~DA}$_8mh?>l+?eB#FU-a%w*W`M{fgD12hIpYrHPM;R^;gzy;?8ML{ zowiV5ev8*bN1!qH9B*1OKn!<&Zp+eApl;-xC?#wjrp7SW_q%Xl*z#?Qu&B{qwq-QsA({Z+M?5*{W^qNz2kj( zvTg%9O_PmJghno7rXx*R-6UD6LtP3M*E>v8>e_mobBvVFeJeK#-w>=m4n&3!*?QCL zr=XUTu#ipavE)SAPx{48M)Hk*HCn_cwdot3X}@2N;nXr}(*A)9v)WJgyq6=W#ar=+ z=scjCo)T>W^4naCuVJ&JgB3%bSYgf=j9Bd$f|ar?y8nv0mdckZRO`rh$t- zm{@?7K3XA_#Z zeq+^j=iRf(-r2qb={#+d-NNEsALqF?m@lt%(hbT-?)FI=5obXIBR|6!mLjyuQ(=9N zeFkJd-a61NoU(RqEGSgnO^XqQmRHQ^>eu z>rtiT*H~_cKTC>C(}LDM_n<(BIK(o$a|)n>uv}kwEALxZNpT##4N_Xk*hSlek3Mxa z~6n*T#ew@b=~!%bKx!wU-akVm$u4HCCSwM z98+mZ6z8vsa}S!eE18}7FnY1SYq>x_UFi*V`~8)v0L^)0{3f^y_sZxs^gwk2mYr(I zBleHQUPgx5BqZ0`<+f+n%|O(n1+G|?Ep^PM{mY!CpCrFHKGXA{DAb~n@ZC*ULkqAcFYCeCut$N>WZ7}I* zJpT$S*KvToF7`yxl7*rikwHERy?rZlws;I5mP;ql*IvbJKzKcNWY6KJ==Y{>66;T?pcy&a@sZ>~$M7ncLa!5(9=Fe(O(97i?<@R!O z6%)5P7hX6U^slcZah!f4(A*-<6~Nd{r{;On3Db1No1e4WhRq2!)~U8cTPokSclwN1 zdF;7<#S$`7-z7z00^swkVsXP_DZnZ;xm>V0U_sTuN$58`ELUM>``FmMv=_@CW+~fd z8vj)#A zk4uv*ZBL(+PqA#TEM3?1%eiLd=J(HS!Zvx{IHJH_PB~)w>P0^OUd}qx$_ym&+^Ro3+`nWocR! z*+kbK_3O&^EW6LfcFXFs@qh9VLI3~&0LVgYj3~m-b?UC99C_-~iWMuCui4|w%yf(R zo;h_&@mM}dnO}oC&4Cv7C`Rm5D~TSFv*Qix4g?-@)m$ppY<6a3>5o?*BsrT6uIf%u zSDfeW6RB=heC(n?)%VGm zs~=sg=zIQCE`v+c>^IpsN`J0YMED{hzO#K5~7pnA$l2QQgmUWcSF<=1VQu>-6+B6Eg}-#sG}3T zi(bZz_ekz@@ALdV@BDM7oU`{{{kzs)d){hkDw7d25aZ$Dk*TUY*1^Lg48+5`dWGmO z;2Q+U{wW^b#f9o)c|FgG&FO2tHq|Fy@8_i~T$h2IfG;0%LTwvOdQrSfmsM{_}c-#$!;qetqV%f0>}Ua3}}9`7gb z-EBpS7%{Lc<1Q?g@Hw*>kN(tyKgwZXEAsavc*ss+n@FBuex!T3dB#u^LX>^L+~H|8 z7;K%pgmiFTlrzRvQ~#jY?&u$T=8!B$O14nCI#dJc&+JVR6B{MC@@Jg+fuNe1hno@d z%{BTXBZy`bv6Ud$TY>drQW$JAxuqF%v^*_|FS9cux2E4f_Oi`w8qE0ktg}y3R;*@?9pAa%cGmSscQ#Ez$LZut9{xBZ^$_*Ot0nES!_~p9 z0nB&D$%Y2SAuH+(ABoZS|ExnZ9x39LI@`0{`(wr(JwW{fa<ck zaqlL0_fh4!&}vUMvp}uQ=aTO;xw_preCMH|_&D9-gr(|53wulB-Y^%jgd2v}L`73c znhQ3KOs#oXQZ9OuJ*KhQ8XAMy>NUm`8VTlQljm*JF6RE5IH!60-4I{oab{+d!_Ia9 z1$)E-VZSNTW+cgF<|2O{&Wt%$Gv30AU09ubY28bHa@PH>Z>z6iCvVa>Q)TIcdCTdy z%DQof;pNxW#Rto>(KPB~E$9oCOs0oU=NUipR3^I&Zxsq&n4g}Ofv{g|uC$})75t#> z$u}uJl&uaOC)&eKzYGnve|42C3;M1%Pc+}s+aezQ&%+3INXbX(!`%yP+sAs|Cvx*lv3TJ3)~LQ0 z*8O=cuSV+pIy)>> zL>&gd9gm6;a)ptF8_&Z0-Bpc~4-A+Nb`mnxH*gb#I}v3;LndC=+6kDs#krelIU60u zUfaH%kI3YI$m4&H+^lh3-8NLmnXgwj1tq4EB;NL6aZ#9^UH3vlolS$*&|<`6qf%J7 zoq%Ao*0T?uTcMh%GRaq={zrx6+Nu{5T4aA69DE(B((q5UwrJcvd6$Y4Kgy;vzdzaa zz_)qI*q8YaQ#uKHy* zLu&f?dOz&rht%o3&$YF`Tw{#_c+L)*wkvo&}KNdZr)R>ipG!jEReGba^3E2X_D7AhfB=O$Mo z)nmVZm>}Yb7V!7{RG?xi3bEs2@0(X>FJa}E77rp1*YJButacwE(49D=mTs$JUz9H2 z-DYoF#KswoG3c$iUFbRganNLTWxhvXd*)F&MTB9#be-iff4RzwaoSQN+(;;tz$2eY zhm_CpOAVdCdzlY(Po~t~@U-+D5X|bJ?`%A{xb22z-2p$InA>xF@=ZUn%Rt9~oB5?q zo6D)@E;Ih1d%V(+I72RdeIL0;w=3kzw>zg3_K~UDOn0%2xNFyb^EaUWr~1*25#y7| zTA|fNN3*|>(hAzu`AF(`Radp_UX?5fXT%sY7^>AwNow{i15bGPo!9O(odkGjcNk{<~U zE3a+UYi|gv`e|a@pLdrXc67)v z&CxbbbqB}OD?eqb{FEtahj~_sXqDzMacu6(9<*(hZ~n=sc5}s*u(b1nc&mF$(|elb zxnAEFum7!hp?7D5R_`6RJMm^)Pi_>yEzG`kZv3OM=j)q_x~C;PQm&(R<#+EI#g$w$ zXnj#-qQk_Mo7+BX#aop|EnXI2y{h`WK!E)NXUX2XLG+Y9gDhOXY;Ja`JWW9JP})S` znXKw*p;GKsXd_QE%7&1S;72oh@U9O9^Ltqpt=G!+Y%r&i`4fSreF~@d!wleC(zDX@ z9MkToE04&kgA$#MqJXy${FC~x?~kwCDOvlXex|ygG!vmNHc0O(M`~tlHj--=7M1~9 zemua%_9ItnHmP6j+|;g*cgxkQnd!5WZy7#Af;yp+oadH_>6d|fnOXC`r0Eua(@uOy zdKReNQooyU;gio#LVaj`T_PfVI)t@XXwuwEqXFSRvh+lIsRHI8AO!}SX}{ztD^C~} z?@lxDQK*04ymK(hmp+cFP}BvBAq}Rjfshf2hlcenLJvJeAJ+_ht>(QiNe8y zgjeT46A=rM_Q>^y!xf8~ShackK*RtGvN4I&tE~5p4v5**c@}Jc+|HV*H9-YP^7xQ& zD>cT**^6S}`{YGeX2ZSG&4GAMtKL-m*TF+WZr!u52}(4_ zoEaY-7O_HEn17|ot)=2Y5H3;8;yI@lRUK1}K0h9oRJJQlIbq4t`y8y#TLb2~nYhK* zH|ifx+-@H2n(s+{(D`0KqE@;=DkzbhPkyvrSq{Q97;%*)YOjP(R%k5}|BpIQIn8R+ zKwwMy*REY_e#%7tV}69k95V-TGbW8}-&;P&zc|~TY&CWPAPuY*KoFUpcMp=gg;!IC zqBYz7`t4_%7F`RQ>hs(t-yNlctulv@`tI>XaVgRWOu7 zb~~fYK74MMz~f-eL^4XKn{La8XD3177tArkH?>1H$v_w7!;v)?{ki>NB*8BS{zAd# z@d)+VYL6OU-_xEEAseoMMDH0&<&E(wlc9rmVzlRwFD^t?r`{pQ((zh2S2eDnBe!&_ z^H-`~AifaXo0>2(2rIq}sSE@Db=d6PJ?ra#BN(!P_7?y+)=sXJ3Zi|eNzAMX8Gg{< z0#;MoU*$%6R5vI3{;iWa%??Oir_PQEzT3C&SR3uUZYY? zw0$&o74_$CJUsk2|6qQ+JHez3e}7NOXYrp~0&G}={)6)$NAd*W_PPaLn!WSp5ET_2 zRg_!MH#VlY-DX+D1EKzgfuaGZUGktrSX z`}}D&;NZdi{k@!0Y^qyV)X$?p{-}TFFTkdUE09^ibOsPyiaRC=VMo=Lnguci(>1;=*6g&-x+(m#l{!Bsz0+f+gPANAWdg`bYDjnZq?r58AZ^s zN5DAmK!OU*W6cG*3&Bw2VrsXG)p%TXb#-P8i;%tlv1&f#OmS@g^zeL}rKm^Q$HpvT z_)O`|?oElks!!)M@wXZ^wzf+QG9_oQlf_DYj5XM7!`aC+zm0e?bIOgld)kdgzn81X z8swOBxB@Z>q(Tt#h*?t*H+aL%dc!l-RB}eeuD?So-GN~Y8gauF*4&zFQKNQR2z$<) zs$z@-wb=a1=+n3JzeP_3xgliZK~oPmlo}5Gl*=!)x-KR}E<-bR{_xbwD zw=N26Ie7#-4TJ}!uUcxk)$SjxESQ{o;|hKuh$i;m4(rTY`?0ZF(YxZNAV-xwdI8RvuqYZyVQI>%j<(Z(QiJ>F3lwrW`qukC3z%U z3P13m2!dfc;V;2bZ1-Jr5RZ8{mOLH%Zg}mCEgpM$G@1x*aO;x1&G(^E{b|VJ_bcS| z`(u#dUH1(}-=21Zfvuk32YtOuU9~!xh|Wp zk!dO~?tIjQ>Gx((qp&-i3l;&!%#`FP^KmXAxh&C4Au4b}`|eB_FSuU|w1rDH zl%LD*qKSZWBOCUfznUm;q1g^Tiuq=m{c0;~U$Vo-8l_6GHKgvhW122A87Db0-J8bT zxwk@jraVHw-@o{=P%&PfQNUVCKj4jGwb~*Ke`Q^Gx1K*;!p*s9?RM2|9j1Xz4b$@} zQLm7(t5Kw27h^osZTc>_#&95`Ew+x;@L31ImB#vhIFAgYzg^8vI$~($pvQ$8m?$3H zmHB9uMc>13amxNI+33mn)P1k5RN=)>g|jLA*Xfa@mo6x*+#U6zeJ_Z*Ik7)vvgK^9 zNq{(*DTIIHhECcROVimrO6n-w7Gvs3}+Ax7#G(;F= zbTqGh|9A|ePau^bA58+B^PN5;Nt-sex$j_@V+Y{6(&T?wE^!*&h0dP){QUL6%e{Qd z1X7N%Pkjx~>%blj%Up0p9d=L=*4$-KjPwOD6K<#j>N`OB0*2bQ3ssOFQVFMy?~2Q} z<6V8gTF9)O&A|N2<4(owC(avYvq+U&{63Q7_tJ-_hA@@fUe8LDitg2#A8t(^PeMbQ zzt(JfRHy|Uq;enUE6i$V2cPcS^U#)Zw|<4@s!j!2hmQn7PVDe8GITsdBr9n09m#dj zQ-@Zw5lUIgMtn^4*{`ak#`yX$Z`$SbN|@-&*_DNz)TQJ~@k!OHAqMV|xRA-}k!aRv z;f1!P;|m2JKeAUmy?oNRCH@6F^)>$s9U|5ScT(o@Gc7IIh?!A&30bJyeP;?z$yR4) z;%^Q5S-0mJT`!J2H;+~hR!n|YrAo6Tn_!# z7a=n2_6Vu}z_<+I*J5Yz%3&G8d$^=Vz2b@fCc0wcXGXJDR(3RcW~09mST%jCZg%$O z*IePbILrBuP9@XV7M^wh#s`ljDv`CRl6bvPEGvd2ewY7L;OPoillQe$G4!@>lv=pY zXYVED%9NjV?D4Xk=FEfp$ehSnnG(d=qiplWEUb*9gv6>Xbok)1qZf;q; zoQ({VZjwdB5sum&KvhK?TXTM5WMHSw#uYwU&3@KT_NIt!XYScfS*RYn6EAus0E*Oj z|6TvzG32$->Rd#yBh3W!LSxOimhL0;Lc-G%*l-)8XtJ&e_4OyiSpA_&&$m#zNf*4fS^S#7H-sHC7-hvIcsE znjOM6Pt)a|!v~Rm)~`(YyWtvSBj&|WaJr7IfHAZcJgF9M{XJV|YPAU8OYI&{rIXu7 zc^=uWl}?X~qXvY;V%bMb7s(Ki)X%PTzIh7EZy?>}zMUa2TZgH2oql;(``PVyl+Hqx zGew7iSCRtT*AM?0pK zRAR1;9nEC)Cs3*$7vW}=NMPBrQzD8SDKr?_w(Vu#;1kDj11$H(aO}*F=j&Ex#izJ+ zRcÐ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� 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

UEDa#T;si*Qc2@I8%Gr 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 Date: Sun, 30 Mar 2025 14:52:40 -0700 Subject: [PATCH 205/334] feat(ui): Turn off treemacs' follow mode --- modules/ui/treemacs/config.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/ui/treemacs/config.el b/modules/ui/treemacs/config.el index 9d76e359..ffb8d626 100644 --- a/modules/ui/treemacs/config.el +++ b/modules/ui/treemacs/config.el @@ -10,7 +10,8 @@ (recentf-excl-add-commands '(treemacs--persist)) :config - (treemacs-follow-mode t) + ;; Don't follow the cursor (it's more disruptive/jarring than helpful as a default) + (treemacs-follow-mode -1) (treemacs-filewatch-mode t) (require 'treemacs-nerd-icons) From 95ef80be7a5b22bd8d8dfd36b19af99292bd7240 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 30 Mar 2025 15:11:08 -0700 Subject: [PATCH 206/334] feat(ui): configure treemacs font size --- modules/ui/treemacs/config.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/ui/treemacs/config.el b/modules/ui/treemacs/config.el index ffb8d626..3baa16b1 100644 --- a/modules/ui/treemacs/config.el +++ b/modules/ui/treemacs/config.el @@ -29,7 +29,9 @@ (jcs-add-hook 'treemacs-mode-hook (setq buffer-wrap--relative-max-line 0) - (buffer-wrap-mode 1))) + (buffer-wrap-mode 1) + + (jcs-buffer-face-setup 'treemacs))) (use-package treemacs-nerd-icons :config From 6dfcdb287f8d579b6df4392890ce9630227b0036 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 30 Mar 2025 15:11:25 -0700 Subject: [PATCH 207/334] refactor(util): Use buffer face setup function --- lisp/lib/jcs-util.el | 12 ++++++++++++ modules/emacs/compile/config.el | 12 +----------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/lisp/lib/jcs-util.el b/lisp/lib/jcs-util.el index a0530f9f..b5f3e7e6 100644 --- a/lisp/lib/jcs-util.el +++ b/lisp/lib/jcs-util.el @@ -501,6 +501,18 @@ TYPE is the return type; can be 'object or 'string." (cl-position in-face faces :test 'equal))) (t (equal in-face faces))))) +(defun jcs-buffer-face-height (&optional symbol) + "Return the buffer face height by SYMBOL." + (- (face-attribute 'default :height) + (pcase symbol + (`treemacs 30) + (_ 40)))) + +(defun jcs-buffer-face-setup (symbol) + "Setup for `buffer-face-mode' by SYMBOL." + (setq buffer-face-mode-face `(:height ,(jcs-buffer-face-height symbol))) + (buffer-face-mode)) + ;; ;; (@* "Font" ) ;; diff --git a/modules/emacs/compile/config.el b/modules/emacs/compile/config.el index d0dbc3b3..59301bb0 100644 --- a/modules/emacs/compile/config.el +++ b/modules/emacs/compile/config.el @@ -19,14 +19,6 @@ comint-scroll-to-bottom-on-input t comint-move-point-for-output t)) -;; -;; (@* "Functions" ) -;; - -(defun jcs-comint-buffer-face-height () - "Return the compilation's buffer face height value." - (- (face-attribute 'default :height) 40)) - ;; ;; (@* "Hook" ) ;; @@ -37,9 +29,7 @@ (buffer-disable-undo) (goto-address-mode 1) - ;; NOTE: Set smaller font size. - (setq buffer-face-mode-face `(:height ,(jcs-comint-buffer-face-height))) - (buffer-face-mode) + (jcs-buffer-face-setup 'comint) (jcs-key-local `(((kbd "C-S-") . compilation-previous-error) From a0435393afb58b49402b24eb44aa4bae233eef90 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 5 Apr 2025 16:46:38 -0700 Subject: [PATCH 208/334] chore: Ignore savefold --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 9223e7a7..f47ea3d3 100755 --- a/.gitignore +++ b/.gitignore @@ -43,6 +43,7 @@ README.html /projectile.cache /projects /recentf +/savefold /scratch /smex-items /tramp From ec8762387dc9091a1c98d64a7fd2555cff284f56 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 5 Apr 2025 16:46:57 -0700 Subject: [PATCH 209/334] feat: Change org fold to showeverything for proper savefold support --- modules/lang/org/config.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/lang/org/config.el b/modules/lang/org/config.el index 8951c648..112afc67 100644 --- a/modules/lang/org/config.el +++ b/modules/lang/org/config.el @@ -88,7 +88,7 @@ (use-package org :init - (setq org-startup-folded nil + (setq org-startup-folded 'showeverything org-todo-keywords '((sequence "TODO" "WAITING" "DONE")) org-todo-keyword-faces '(("TODO" :foreground "red") ("WAITING" :foreground "yellow") From 043233dfffbb2f21eae40a42535491d0d1c2df76 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 5 Apr 2025 16:47:12 -0700 Subject: [PATCH 210/334] feat: Add savefold pacakge --- lisp/jcs-package.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index c966f65d..e159c562 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -412,6 +412,7 @@ responsive-window restart-emacs robots-txt-mode + savefold scad-mode scrollable-quick-peek scss-mode From 98d0f498ccb2d16326f8814c7d4d36a4e2279d51 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 5 Apr 2025 16:47:21 -0700 Subject: [PATCH 211/334] feat: configure savefold --- modules/editor/fold/config.el | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/editor/fold/config.el b/modules/editor/fold/config.el index 5199d4bd..84b80245 100644 --- a/modules/editor/fold/config.el +++ b/modules/editor/fold/config.el @@ -1,6 +1,7 @@ ;;; editor/fold/config.el -*- lexical-binding: t; -*- (use-package ts-fold + :hook (tree-sitter-after-on . ts-fold-mode) :hook (tree-sitter-after-on . ts-fold-line-comment-mode) :hook (tree-sitter-after-on . ts-fold-indicators-mode) :init @@ -15,3 +16,9 @@ (lambda (&rest _) (null (ts-fold--overlays-in 'ts-fold-indicators-window (selected-window) (line-beginning-position) (line-end-position)))))) + +(use-package savefold + :hook (outline-minor-mode . savefold-outline-mode) + :hook (hs-minor-mode . savefold-hideshow-mode) + :hook (org-mode . savefold-org-mode) + :hook (ts-fold-mode . savefold-ts-fold-mode)) From d6aa74c88e5d7418c22b9dc2e2f2f1f6691ee421 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 5 Apr 2025 16:48:35 -0700 Subject: [PATCH 212/334] chore: changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e55b163c..e7f7ce54 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * perf(lsp): Add `lsp-smart-req` (fdcddb59e7558346d3dfe80639e8d91f4d7f5890) * feat(vc): Use `magit` built-in functionalities to display file icons (7d249ad694a58239d3247b673f8e15a92adc4a18) * feat(ui): Add mail tab group (e0ec5c24c7902f862d4793ffdf8fece6bb14076b) +* feat(fold): Add `savefold` for persistent folding behaviors (98d0f498ccb2d16326f8814c7d4d36a4e2279d51) ## 9.1.0 > Released Jun 19, 2024 From 5f7e434c8576e5b38e7c86df25583694ead6bbf8 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 7 Apr 2025 17:26:53 -0700 Subject: [PATCH 213/334] feat: Add try package --- lisp/jcs-package.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index e159c562..7d5afa90 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -460,6 +460,7 @@ tree-sitter-indent tree-sitter-langs treemacs-nerd-icons + try ts-docstr turbo-log typescript-mode From f467a37a339b9d62b58f60527c93ae7ab6e37e59 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 7 Apr 2025 23:30:33 -0700 Subject: [PATCH 214/334] fix: Load savefold with more flexiability --- lisp/jcs-module.el | 2 +- modules/editor/fold/config.el | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lisp/jcs-module.el b/lisp/jcs-module.el index 82618492..b393bed2 100644 --- a/lisp/jcs-module.el +++ b/lisp/jcs-module.el @@ -18,7 +18,7 @@ (company . "completion/company") (vertico . "completion/vertico") (turbo-log . "editor/debug") - (tree-sitter . ("editor/docstring" "editor/fold")) + (( tree-sitter outline hideshow org) . ("editor/docstring" "editor/fold")) (expand-region . "editor/expand-region") (file-header . "editor/file-templates") (isearch . "editor/isearch") diff --git a/modules/editor/fold/config.el b/modules/editor/fold/config.el index 84b80245..8db74010 100644 --- a/modules/editor/fold/config.el +++ b/modules/editor/fold/config.el @@ -18,7 +18,8 @@ (line-beginning-position) (line-end-position)))))) (use-package savefold - :hook (outline-minor-mode . savefold-outline-mode) - :hook (hs-minor-mode . savefold-hideshow-mode) - :hook (org-mode . savefold-org-mode) - :hook (ts-fold-mode . savefold-ts-fold-mode)) + :init + (jcs-with-eval-after-load 'outline (savefold-outline-mode 1)) + (jcs-with-eval-after-load 'hideshow (savefold-hideshow-mode 1)) + (jcs-with-eval-after-load 'org (savefold-org-mode 1)) + (jcs-with-eval-after-load 'ts-fold (savefold-ts-fold-mode 1))) From 5d1a80b88f33af28cd169d885f4a64f018f423fc Mon Sep 17 00:00:00 2001 From: JenChieh Date: Tue, 8 Apr 2025 00:05:19 -0700 Subject: [PATCH 215/334] feat: Make savefold as sdep --- lisp/jcs-package.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 7d5afa90..589cc5e1 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -412,7 +412,6 @@ responsive-window restart-emacs robots-txt-mode - savefold scad-mode scrollable-quick-peek scss-mode From 82339f121dce7fade68a127dd034a73d1cdb943e Mon Sep 17 00:00:00 2001 From: JenChieh Date: Tue, 8 Apr 2025 00:05:32 -0700 Subject: [PATCH 216/334] feat: use vs-edit's indent region --- lisp/jcs-key.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/jcs-key.el b/lisp/jcs-key.el index 1d19d217..58d28a7d 100755 --- a/lisp/jcs-key.el +++ b/lisp/jcs-key.el @@ -137,7 +137,7 @@ ((kbd "C-k f") . menu-set-font) ;;; Format file - ((kbd "C-k C-f") . indent-region) + ((kbd "C-k C-f") . vs-edit-indent-region) ((kbd "C-k C-d") . vs-edit-format-document) ((kbd "C-k a") . jcs-align-region-or-document) From 67464c175edf154f901a6e1ee669810f8cf1b2e8 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 9 Apr 2025 01:41:18 -0700 Subject: [PATCH 217/334] feat: new kill buffer key --- lisp/jcs-key.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/jcs-key.el b/lisp/jcs-key.el index 58d28a7d..67224bd9 100755 --- a/lisp/jcs-key.el +++ b/lisp/jcs-key.el @@ -119,7 +119,7 @@ ;;; File editing ((kbd "M-k") . jcs-maybe-kill-this-buffer) ((kbd "M-K") . jcs-reopen-this-buffer) - ((kbd "C-M-k") . kill-this-buffer) + ((kbd "C-M-k") . kill-current-buffer) ;;; File Files ((kbd "M-f") . ffap) From 749f2ae8c3385e86c6a5fc6b5d58668c6ca192f4 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 9 Apr 2025 01:41:34 -0700 Subject: [PATCH 218/334] fix(ui): sql tab to lsp --- modules/ui/tabs/config.el | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index a072253b..ef8b5762 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -90,6 +90,7 @@ "[*]lua-" "[*]iph[*]" "[*]rust-analyzer[*:]" + "[*]sql" "[*]zig-") 'regex) "LSP") From b029c63a35b093b8b1d5065d75bfc5c7afc8bb88 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 11 Apr 2025 17:32:47 -0700 Subject: [PATCH 219/334] docs: Correct version number in news --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 82a2562b..70e523e7 100755 --- a/README.md +++ b/README.md @@ -131,7 +131,7 @@ without having to get used to a new IDE. Here is the list of few essential and recent changes to this configuration. -* `9.0.2` - Replace package `topsy` with `breadcrumb-mode` for better UX +* `9.1.0` - Replace package `topsy` with `breadcrumb-mode` for better UX * `8.2.2` - Add `emp` as the default Music Player * `8.2.1` - Replace package `docstr` with `ts-docstr` for better parsing capability * `8.2.0` - Drop support for Emacs 27.x From 0d4ce1a9bbd6046272f1841d0239763d408c8522 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 11 Apr 2025 17:42:22 -0700 Subject: [PATCH 220/334] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 70e523e7..4e212689 100755 --- a/README.md +++ b/README.md @@ -287,6 +287,7 @@ kind of methods to support the maintainer you wish to. * *File Explorer* - powered by [treemacs](https://github.com/Alexander-Miller/treemacs). * *File Header* - powered by [file-header](https://github.com/alt-elpa/file-header). * *Folding/Unfolding* - powered by [ts-fold](https://github.com/jcs090218/ts-fold). + * *Persistence folding* - powered by [savefold.el](https://github.com/jcfk/savefold.el). * *Font* - powered by [use-ttf](https://github.com/elpa-host/use-ttf). * *Goto Declaration/Definition* - powered by [dumb-jump](https://github.com/jacktasia/dumb-jump). * *Highlight Indentation* - powered by [highlight-indent-guides](https://github.com/DarthFennec/highlight-indent-guides). From 9dc85daa66ffe5d28c12e1fb7ccdac1a1f50139c Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 11 Apr 2025 17:44:12 -0700 Subject: [PATCH 221/334] docs: Add new news --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 4e212689..b24744e7 100755 --- a/README.md +++ b/README.md @@ -132,6 +132,7 @@ without having to get used to a new IDE. Here is the list of few essential and recent changes to this configuration. * `9.1.0` - Replace package `topsy` with `breadcrumb-mode` for better UX +* `9.0.0` - Support more languages and add debugging utilities * `8.2.2` - Add `emp` as the default Music Player * `8.2.1` - Replace package `docstr` with `ts-docstr` for better parsing capability * `8.2.0` - Drop support for Emacs 27.x From 4f40b92529c7c64f0099b0bd0ba61e7149c6e78c Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 11 Apr 2025 17:44:27 -0700 Subject: [PATCH 222/334] delete one old news --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index b24744e7..3a33c874 100755 --- a/README.md +++ b/README.md @@ -141,7 +141,6 @@ Here is the list of few essential and recent changes to this configuration. * `8.0.0` - Move everything to `.emacs.d`. ([#32](https://github.com/jcs-emacs/jcs-emacs/pull/32)) * `7.1.0` - Replace `quelpa` with `github-elpa`. * `7.0.0` - Switch from [quickhelp](https://github.com/company-mode/company-quickhelp) to [box](https://github.com/sebastiencs/company-box) for company frontend. -* `6.5.0` - Add pinned archive feature to package module. ## 💾 Installation From 050df741a9aac021e59bb48688755767d6a72ebb Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 11 Apr 2025 17:46:26 -0700 Subject: [PATCH 223/334] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3a33c874..0794f5d9 100755 --- a/README.md +++ b/README.md @@ -132,6 +132,7 @@ without having to get used to a new IDE. Here is the list of few essential and recent changes to this configuration. * `9.1.0` - Replace package `topsy` with `breadcrumb-mode` for better UX +* `9.0.1` - Add AI supports and add replace a few external packages to built-in. * `9.0.0` - Support more languages and add debugging utilities * `8.2.2` - Add `emp` as the default Music Player * `8.2.1` - Replace package `docstr` with `ts-docstr` for better parsing capability From 0081287fcc78ab3decfa8f9b91422f3bf770c48c Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 11 Apr 2025 17:46:52 -0700 Subject: [PATCH 224/334] docs: Remove one old news --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 0794f5d9..0b3e21dd 100755 --- a/README.md +++ b/README.md @@ -141,7 +141,6 @@ Here is the list of few essential and recent changes to this configuration. * `8.0.1` - Switch from `ivy` to `vertico`. * `8.0.0` - Move everything to `.emacs.d`. ([#32](https://github.com/jcs-emacs/jcs-emacs/pull/32)) * `7.1.0` - Replace `quelpa` with `github-elpa`. -* `7.0.0` - Switch from [quickhelp](https://github.com/company-mode/company-quickhelp) to [box](https://github.com/sebastiencs/company-box) for company frontend. ## 💾 Installation From 3c913d3ce6bd4d64d84b0448697be95c4f9187ee Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 11 Apr 2025 17:47:18 -0700 Subject: [PATCH 225/334] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0b3e21dd..255f7d9e 100755 --- a/README.md +++ b/README.md @@ -287,7 +287,7 @@ kind of methods to support the maintainer you wish to. * *File Explorer* - powered by [treemacs](https://github.com/Alexander-Miller/treemacs). * *File Header* - powered by [file-header](https://github.com/alt-elpa/file-header). * *Folding/Unfolding* - powered by [ts-fold](https://github.com/jcs090218/ts-fold). - * *Persistence folding* - powered by [savefold.el](https://github.com/jcfk/savefold.el). + * *Persistence Folding* - powered by [savefold.el](https://github.com/jcfk/savefold.el). * *Font* - powered by [use-ttf](https://github.com/elpa-host/use-ttf). * *Goto Declaration/Definition* - powered by [dumb-jump](https://github.com/jacktasia/dumb-jump). * *Highlight Indentation* - powered by [highlight-indent-guides](https://github.com/DarthFennec/highlight-indent-guides). From bc0cc0b50ad4b053aa3d9a3f761718e30e084e3e Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 11 Apr 2025 17:47:56 -0700 Subject: [PATCH 226/334] fix grammar --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 255f7d9e..13f6a7e3 100755 --- a/README.md +++ b/README.md @@ -132,7 +132,7 @@ without having to get used to a new IDE. Here is the list of few essential and recent changes to this configuration. * `9.1.0` - Replace package `topsy` with `breadcrumb-mode` for better UX -* `9.0.1` - Add AI supports and add replace a few external packages to built-in. +* `9.0.1` - Add AI support and replace a few external packages with built-in. * `9.0.0` - Support more languages and add debugging utilities * `8.2.2` - Add `emp` as the default Music Player * `8.2.1` - Replace package `docstr` with `ts-docstr` for better parsing capability From 476949a5a97ef4708d36412e11b8c8d82a6ce186 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 12 Apr 2025 23:16:39 -0700 Subject: [PATCH 227/334] feat(emacs): Hide more lsp buffers --- modules/emacs/buffer-menu/config.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/emacs/buffer-menu/config.el b/modules/emacs/buffer-menu/config.el index 5a6ffd78..58d16caa 100644 --- a/modules/emacs/buffer-menu/config.el +++ b/modules/emacs/buffer-menu/config.el @@ -37,10 +37,12 @@ "[*]cucumber" "[*]dart" "[*]ellsp" "[*]elsa" + "[*]eslint" "[*]perlnavigator" "[*]lua-" "[*]iph[*]" "[*]rust-analyzer[*:]" + "[*]sql" "[*]zig-" "[*]Coursier log[*]" "[*]tcp-server-" From 2299416ba98cea7f0129869bd07ae28c1e477eda Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 12 Apr 2025 23:17:04 -0700 Subject: [PATCH 228/334] feat(ui): Categorize eslint buffer to LSP --- modules/ui/tabs/config.el | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index ef8b5762..b67a6c79 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -86,6 +86,7 @@ "[*]cucumber" "[*]dart" "[*]ellsp" "[*]elsa" + "[*]eslint" "[*]perlnavigator" "[*]lua-" "[*]iph[*]" From 065ee1649e8ef31a5e203e0283b1071fa97c6b4f Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 13 Apr 2025 01:52:59 -0700 Subject: [PATCH 229/334] fix debug keys --- lisp/jcs-key.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/jcs-key.el b/lisp/jcs-key.el index 67224bd9..e5a60bac 100755 --- a/lisp/jcs-key.el +++ b/lisp/jcs-key.el @@ -64,10 +64,10 @@ ;; Not sure why this can't bind directly (call-interactively #'uncomment-region))) - ((kbd "C-k -") . banner-comment) + ((kbd "C-k -") . banner-comment) ;;; Debugging - ((kbd "M-1") . turbo-log-print) + ((kbd "M-1") . turbo-log-print) ([f9] . jcs-debug-toggle-break-point) ([S-f5] . jcs-debug-stop) From feeeef4f3a71213a4ed815bf23aeb722e8e7723a Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 13 Apr 2025 01:53:11 -0700 Subject: [PATCH 230/334] Feat: ignore debug buffers --- modules/emacs/buffer-menu/config.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/emacs/buffer-menu/config.el b/modules/emacs/buffer-menu/config.el index 58d16caa..faaf91d6 100644 --- a/modules/emacs/buffer-menu/config.el +++ b/modules/emacs/buffer-menu/config.el @@ -28,9 +28,11 @@ "[*]sly" "[*]cider-" "[*]nrepl-server" "[*]timer" + ;; `Debugger' + "[*]edebug" "[*]dap-" "[*]debug-" ;; `LSP' "[*]lsp-" "[*]LSP[ ]+" "[*]eglot" - "[*][[:ascii:]]*ls[*:-]" "[*][[:ascii:]]+::stderr[*]" + "[*][[:ascii:]]*ls[*:-]" "out[*]" "stderr[*]" "[*]clang-" "[*]clangd" "[*]csharp[*]" "[*]cogru" From 1ab529248057df2ac14e7698f35db91e7bd0c003 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 13 Apr 2025 01:53:22 -0700 Subject: [PATCH 231/334] feat(ui): Add debugger tabs --- modules/ui/tabs/config.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index b67a6c79..72870170 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -74,12 +74,14 @@ ((jcs-member name '("*cider") 'prefix) "Cider") ;;; D + ((jcs-member name '("[*]edebug" "[*]dap-" "[*]debug-") 'regex) + "Debugger") ((derived-mode-p 'dired-mode) "Dired") ;;; L ((jcs-member name '("[*]lsp-" "[*]LSP[ ]+" "[*]eglot" - "[*][[:ascii:]]*ls[*:-]" "[*][[:ascii:]]+::stderr[*]" + "[*][[:ascii:]]*ls[*:-]" "out[*]" "stderr[*]" "[*]clang-" "[*]clangd" "[*]csharp[*]" "[*]cogru" From 85248b6e4333ffc28e32ec360d51d49abce8dfda Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 13 Apr 2025 01:53:36 -0700 Subject: [PATCH 232/334] fix: set break point without mode --- modules/tools/debugger/config.el | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/tools/debugger/config.el b/modules/tools/debugger/config.el index bc408dbc..5a08f0ef 100644 --- a/modules/tools/debugger/config.el +++ b/modules/tools/debugger/config.el @@ -20,14 +20,16 @@ (defun jcs-debug-toggle-break-point () "Toggle break point." (interactive) - (jcs-debugger-cond (edebug-toggle-disable-breakpoint) - (dap-breakpoint-toggle))) + (require 'edebug) + (cond ((memq major-mode '(emacs-lisp-mode)) + (edebug-toggle-disable-breakpoint)) + (t (dap-breakpoint-toggle)))) (defun jcs-debug-stop () "Stop debugging." (interactive) (jcs-debugger-cond (edebug-stop) - (dap-stop-thread))) + (dap-disconnect))) (defun jcs-debug-restart () "Restart debugger." From 2d4048562fc019da0acc6bbc55242d1767cfc90d Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 13 Apr 2025 02:23:47 -0700 Subject: [PATCH 233/334] feat: Combine dap and run functionality --- lisp/jcs-key.el | 4 +-- modules/tools/debugger/config.el | 53 ++++++++++++++++++++------------ 2 files changed, 35 insertions(+), 22 deletions(-) diff --git a/lisp/jcs-key.el b/lisp/jcs-key.el index e5a60bac..521afc57 100755 --- a/lisp/jcs-key.el +++ b/lisp/jcs-key.el @@ -69,7 +69,8 @@ ;;; Debugging ((kbd "M-1") . turbo-log-print) - ([f9] . jcs-debug-toggle-break-point) + ([f9] . jcs-debug-toggle-breakpoint) + ([f5] . jcs-debug-start) ([S-f5] . jcs-debug-stop) ([C-S-f5] . jcs-debug-restart) ([f10] . jcs-debug-step-over) @@ -241,7 +242,6 @@ ;;; Script Executing (Output) ((kbd "C-S-u") . execrun-popup) - ((kbd "") . execrun-run) ; Run ((kbd "C-S-b") . execrun-build) ; Build ((kbd "C-") . quickrun-select) ((kbd "C-") . quickrun-compile-only-select) diff --git a/modules/tools/debugger/config.el b/modules/tools/debugger/config.el index 5a08f0ef..9150b57a 100644 --- a/modules/tools/debugger/config.el +++ b/modules/tools/debugger/config.el @@ -9,48 +9,61 @@ (guess-req (s-replace "-mode" "" mode-name))) (require (intern (format "dap-%s" guess-req)) nil t))) -(defmacro jcs-debugger-cond (form1 form2) - "Debugger action FROM1 and FORM2." - `(cond ((elenv-debugging-p) ,@form1) - ((jcs-debugging-p) ,@form2) +(defmacro jcs-debugger-cond-active (form1 form2) + "Execute FROM1 or FORM2 depends on the active debugger." + `(cond ((elenv-debugging-p) ,form1) + ((jcs-debugging-p) ,form2) (t (message "[INFO] Invalid debugger action: `%s`" (propertize (elenv-2str this-command) 'face 'font-lock-type-face))))) -(defun jcs-debug-toggle-break-point () - "Toggle break point." +(defmacro jcs-debugger-cond-buffer (form1 form2 &rest form3) + "Execute FROM1 or FORM2 depends on the current buffer." + `(progn + (jcs-require '(edebug dap-mode)) + (cond ((memq major-mode '(emacs-lisp-mode)) ,form1) + (dap-mode ,form2) + (t ,@form3)))) + +(defun jcs-debug-toggle-breakpoint () + "Toggle breakpoint on/off." + (interactive) + (jcs-debugger-cond-buffer (edebug-toggle-disable-breakpoint) + (dap-breakpoint-toggle))) + +(defun jcs-debug-start () + "Start debugging." (interactive) - (require 'edebug) - (cond ((memq major-mode '(emacs-lisp-mode)) - (edebug-toggle-disable-breakpoint)) - (t (dap-breakpoint-toggle)))) + (jcs-debugger-cond-buffer (edebug-eval-top-level-form) + (call-interactively #'dap-debug) + (execrun-run))) (defun jcs-debug-stop () "Stop debugging." (interactive) - (jcs-debugger-cond (edebug-stop) - (dap-disconnect))) + (jcs-debugger-cond-active (edebug-stop) + (dap-disconnect))) (defun jcs-debug-restart () "Restart debugger." (interactive) - (jcs-debugger-cond (progn (edebug-stop) (edebug-defun)) - (dap-debug-restart))) + (jcs-debugger-cond-active (progn (edebug-stop) (edebug-defun)) + (dap-debug-restart))) (defun jcs-debug-step-over () "Step over." (interactive) - (jcs-debugger-cond (edebug-forward-sexp) - (dap-next))) + (jcs-debugger-cond-active (edebug-forward-sexp) + (dap-next))) (defun jcs-debug-step-in () "Step in." (interactive) - (jcs-debugger-cond (edebug-step-in) - (dap-step-in))) + (jcs-debugger-cond-active (edebug-step-in) + (dap-step-in))) (defun jcs-debug-step-out () "Step out." (interactive) - (jcs-debugger-cond (edebug-step-out) - (dap-step-out))) + (jcs-debugger-cond-active (edebug-step-out) + (dap-step-out))) From 04b0ae9df7543375e7e34405bb9150fd570b3712 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 13 Apr 2025 02:25:10 -0700 Subject: [PATCH 234/334] Changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e7f7ce54..928f2fdc 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * feat(vc): Use `magit` built-in functionalities to display file icons (7d249ad694a58239d3247b673f8e15a92adc4a18) * feat(ui): Add mail tab group (e0ec5c24c7902f862d4793ffdf8fece6bb14076b) * feat(fold): Add `savefold` for persistent folding behaviors (98d0f498ccb2d16326f8814c7d4d36a4e2279d51) +* feat(debugger): Combine `debugger` and `run` functionality (2d4048562fc019da0acc6bbc55242d1767cfc90d) ## 9.1.0 > Released Jun 19, 2024 From f0a1130a81225fd628e59e3da5a2795de0d663cc Mon Sep 17 00:00:00 2001 From: JenChieh Date: Tue, 15 Apr 2025 15:10:33 -0700 Subject: [PATCH 235/334] feat: Add hide-ifdef config --- lisp/jcs-module.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/jcs-module.el b/lisp/jcs-module.el index b393bed2..4c807cea 100644 --- a/lisp/jcs-module.el +++ b/lisp/jcs-module.el @@ -18,7 +18,8 @@ (company . "completion/company") (vertico . "completion/vertico") (turbo-log . "editor/debug") - (( tree-sitter outline hideshow org) . ("editor/docstring" "editor/fold")) + (( outline hideshow hideif org tree-sitter) + . ("editor/docstring" "editor/fold")) (expand-region . "editor/expand-region") (file-header . "editor/file-templates") (isearch . "editor/isearch") From 8240842ae14e0485f03dfabc79c023f8670835cb Mon Sep 17 00:00:00 2001 From: JenChieh Date: Tue, 15 Apr 2025 15:10:42 -0700 Subject: [PATCH 236/334] feat: Enable hide-ifdef savefold --- modules/editor/fold/config.el | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/editor/fold/config.el b/modules/editor/fold/config.el index 8db74010..651405e4 100644 --- a/modules/editor/fold/config.el +++ b/modules/editor/fold/config.el @@ -21,5 +21,6 @@ :init (jcs-with-eval-after-load 'outline (savefold-outline-mode 1)) (jcs-with-eval-after-load 'hideshow (savefold-hideshow-mode 1)) + (jcs-with-eval-after-load 'hideif (savefold-hide-ifdef-mode 1)) (jcs-with-eval-after-load 'org (savefold-org-mode 1)) (jcs-with-eval-after-load 'ts-fold (savefold-ts-fold-mode 1))) From 5c9b423ba95419dcb8e81477570778739c1ec851 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Tue, 15 Apr 2025 15:51:12 -0700 Subject: [PATCH 237/334] feat: Add fold-this config --- modules/editor/fold/config.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/editor/fold/config.el b/modules/editor/fold/config.el index 651405e4..5861ab56 100644 --- a/modules/editor/fold/config.el +++ b/modules/editor/fold/config.el @@ -24,3 +24,7 @@ (jcs-with-eval-after-load 'hideif (savefold-hide-ifdef-mode 1)) (jcs-with-eval-after-load 'org (savefold-org-mode 1)) (jcs-with-eval-after-load 'ts-fold (savefold-ts-fold-mode 1))) + +(use-package fold-this + :init + (setq fold-this-overlay-text (truncate-string-ellipsis))) From c0fbf51189558012a1bd3ad53bf11a0c6923c288 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Tue, 15 Apr 2025 15:51:19 -0700 Subject: [PATCH 238/334] feat: Add fold this --- lisp/jcs-package.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 589cc5e1..b2b2e273 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -234,6 +234,7 @@ flymake-ruby flymake-shell fof + fold-this font-lock-ext forge fountain-mode From 060fe5223b351bc4b488781408bfd0093431f5e7 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Tue, 15 Apr 2025 15:51:40 -0700 Subject: [PATCH 239/334] refactor: Move fold-this to dep --- lisp/jcs-package.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index b2b2e273..589cc5e1 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -234,7 +234,6 @@ flymake-ruby flymake-shell fof - fold-this font-lock-ext forge fountain-mode From 52ff7e53f921787e3c63749a1db14dd9a512c152 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Tue, 15 Apr 2025 15:52:31 -0700 Subject: [PATCH 240/334] chore: changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 928f2fdc..2fc10732 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * feat(ui): Add mail tab group (e0ec5c24c7902f862d4793ffdf8fece6bb14076b) * feat(fold): Add `savefold` for persistent folding behaviors (98d0f498ccb2d16326f8814c7d4d36a4e2279d51) * feat(debugger): Combine `debugger` and `run` functionality (2d4048562fc019da0acc6bbc55242d1767cfc90d) +* feat(fold): Add new package `fold-this` (5c9b423ba95419dcb8e81477570778739c1ec851) ## 9.1.0 > Released Jun 19, 2024 From d38c15e5b327d3b672b2bf3785b46350de712a9e Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Wed, 16 Apr 2025 22:23:22 -0700 Subject: [PATCH 241/334] docs: fix markdown style --- README.md | 266 +++++++++++++++++++++++++++--------------------------- 1 file changed, 133 insertions(+), 133 deletions(-) diff --git a/README.md b/README.md index 13f6a7e3..df417f2b 100755 --- a/README.md +++ b/README.md @@ -52,29 +52,29 @@ numerous technologies, incorporating hardware, firmware, and software. Here is the list of programming languages I know and are extended from this configuration. -* ActionScript / Ada / Agda / AppleScript / Assembly -* BASIC / Batchfile / Beancount -* C / C++ / C# / Clojure / COBOL / Coq / Crystal / CSS / CUDA / Cython -* Dart / Dockerfile -* Elixir / Elm / Emacs Lisp / Erlang -* F# / Fountain -* GLSL / Go / Godot / Groovy -* Haskell / Haxe / HLSL / HTML -* Idris / INI -* Janet / Java / JavaScript / JSON / JSX / Julia -* Kotlin -* LaTeX / LESS / Lisp / Lua -* Makefile / Markdown / Mermaid / Mint -* Nim / Nix / Noir -* Object Pascal (Delphi) / Objective-C / OCaml -* P4 / Pascal / Perl / PHP / PowerShell / Properties / Python -* R / Racket / Ruby / Rust -* Sass / Scala / SCSS / ShaderLab / Shell script / SQL / Swift -* Terraform / TOML / TSX / TypeScript -* Verilog / VHDL / Vimscript / Vue -* XML -* YAML -* Zig +- ActionScript / Ada / Agda / AppleScript / Assembly +- BASIC / Batchfile / Beancount +- C / C++ / C# / Clojure / COBOL / Coq / Crystal / CSS / CUDA / Cython +- Dart / Dockerfile +- Elixir / Elm / Emacs Lisp / Erlang +- F# / Fountain +- GLSL / Go / Godot / Groovy +- Haskell / Haxe / HLSL / HTML +- Idris / INI +- Janet / Java / JavaScript / JSON / JSX / Julia +- Kotlin +- LaTeX / LESS / Lisp / Lua +- Makefile / Markdown / Mermaid / Mint +- Nim / Nix / Noir +- Object Pascal (Delphi) / Objective-C / OCaml +- P4 / Pascal / Perl / PHP / PowerShell / Properties / Python +- R / Racket / Ruby / Rust +- Sass / Scala / SCSS / ShaderLab / Shell script / SQL / Swift +- Terraform / TOML / TSX / TypeScript +- Verilog / VHDL / Vimscript / Vue +- XML +- YAML +- Zig This configuration polished and goes toward to the modern text editor, or even better, it goes beyond modern IDE. @@ -114,12 +114,12 @@ to suit my needs. Here are a few goals that I want this config to accomplish. -* Having the same set of key bindings across different IDEs and text editors as +- Having the same set of key bindings across different IDEs and text editors as many as possible. -* Having the same font and theme across different OSs and environments. -* Automating trivial or redundant tasks. -* Improve user experiences approach to modern text editor or IDE. -* Make compatible with most features work inside the terminal as well. +- Having the same font and theme across different OSs and environments. +- Automating trivial or redundant tasks. +- Improve user experiences approach to modern text editor or IDE. +- Make compatible with most features work inside the terminal as well. Having these implementations makes my life easier, and having a genuinely portable workspace, which is great because it lets me work on different machines efficiently, @@ -131,16 +131,16 @@ without having to get used to a new IDE. Here is the list of few essential and recent changes to this configuration. -* `9.1.0` - Replace package `topsy` with `breadcrumb-mode` for better UX -* `9.0.1` - Add AI support and replace a few external packages with built-in. -* `9.0.0` - Support more languages and add debugging utilities -* `8.2.2` - Add `emp` as the default Music Player -* `8.2.1` - Replace package `docstr` with `ts-docstr` for better parsing capability -* `8.2.0` - Drop support for Emacs 27.x -* `8.1.0` - Remove config tabify/untabify save, and replace it with `whitespace-cleanup-mode`. -* `8.0.1` - Switch from `ivy` to `vertico`. -* `8.0.0` - Move everything to `.emacs.d`. ([#32](https://github.com/jcs-emacs/jcs-emacs/pull/32)) -* `7.1.0` - Replace `quelpa` with `github-elpa`. +- `9.1.0` - Replace package `topsy` with `breadcrumb-mode` for better UX +- `9.0.1` - Add AI support and replace a few external packages with built-in. +- `9.0.0` - Support more languages and add debugging utilities +- `8.2.2` - Add `emp` as the default Music Player +- `8.2.1` - Replace package `docstr` with `ts-docstr` for better parsing capability +- `8.2.0` - Drop support for Emacs 27.x +- `8.1.0` - Remove config tabify/untabify save, and replace it with `whitespace-cleanup-mode`. +- `8.0.1` - Switch from `ivy` to `vertico`. +- `8.0.0` - Move everything to `.emacs.d`. ([#32](https://github.com/jcs-emacs/jcs-emacs/pull/32)) +- `7.1.0` - Replace `quelpa` with `github-elpa`. ## 💾 Installation @@ -201,15 +201,15 @@ start within a second.* Here is the list of the major highlights of this configuration. Hope you would like my taste! -* **Out of the box** - Out of the box anywhere. -* **Cross Platform** - Work on all operating systems, including the terminal. -* **Fast Startup** - Lazy loading for all unnecessary packages on startup. -* **Old-Fashioned** - Doesn't use any beautiful GUI because it may not work in the terminal. -* **Multiple Languages** - Support multiple programming languages. -* **Consistent** - Having the same coding experience in different major modes. -* **Easy to use** - Design close to other modern text editors. It shouldn't spend you too much time. -* **Dual Windows** - Design for people who like multiple windows opened simultaneously. -* **Keyboard Focused** - You can do everything by using the keyboard and the mouse are just optional. +- **Out of the box** - Out of the box anywhere. +- **Cross Platform** - Work on all operating systems, including the terminal. +- **Fast Startup** - Lazy loading for all unnecessary packages on startup. +- **Old-Fashioned** - Doesn't use any beautiful GUI because it may not work in the terminal. +- **Multiple Languages** - Support multiple programming languages. +- **Consistent** - Having the same coding experience in different major modes. +- **Easy to use** - Design close to other modern text editors. It shouldn't spend you too much time. +- **Dual Windows** - Design for people who like multiple windows opened simultaneously. +- **Keyboard Focused** - You can do everything by using the keyboard and the mouse are just optional. ### Details @@ -217,42 +217,42 @@ This is the list of features that are built-in to this configuration. These feat are heavily based on my personal habits, and so these could be very tiny things. But I believe details make things better and make life smoother. -* [*Auto Install Package*](./docs/features/auto-install-package) - Automatically installs the package that this config relies on. -* [*Build Run*](./docs/features/build-run) - Implementation for executing script for building and running the software. -* [*Capital Word*](./docs/features/capital-word) - You can navigate/kill word by seeing capital letter. -* [*Changelog Helper*](./docs/features/changelog-helper) - Help to create changelog while creating `CHANGELOG` file using template. -* [*Consistent Key Bindings*](./docs/features/consistent-key-bindings) - Has consistent key bindings across all modes. -* [*Curly Bracket Modes*](./curly-bracket-modes) - Use curly bracket depends on different mode. -* [*Display File*](./docs/features/display-file) - Utility function to use to view a file on the other window. -* [*Charset Table*](./docs/features/display-file/charset-table) - Built-in functions that displays character sets. -* Enhanced Multiple Cursors -* [*Similar Multiple Cursors*](./docs/features/similar-multiple-cursors) - Mark with cursor by similarity. -* [*VS Multiple Cursors*](./docs/features/vs-multiple-cursors) - VSCode like methods to `mark` and `unmark` multiple cursor. -* [*Fast Incremental Search*](./docs/features/fast-incremental-search) - Fast keys for incremental search forward/backward to the cursor is currently pointing. -* [*Indent Control*](./docs/features/indent-control) - Generic control the indentation level for each mode, for more information see [indent-control](https://github.com/alt-elpa/indent-control). -* [*License Helper*](./docs/features/license-helper) - Help to create license while creating `LICENSE` file using template. -* [*Mini State*](./docs/features/mini-state) - Mini mode state use to visually see what backend is the config currently running. (Deprecated) -* [*Explicit States*](./docs/features/mini-state/explicit-states) - Automatcially switch mini state depends on certain circumstances. -* [*Modern Text Editor*](./docs/features/modern-text-editor) - Design to have the preset settings close to modern text editors but faster. -* [*Multiple Output*](./docs/features/multiple-output) - Handle multiple output/compilation buffers. -* [*Navigate Blank Line*](./docs/features/navigate-blank-line) - Use `C-` and `C-` to navigate previous and next blank line. -* [*Navigate Table*](./docs/features/navigate-table) - Navigate `org-mode`'s table easier by using arrow keys. -* [*Preview HTML*](./docs/features/preview-html) - Preview rendered HTML file on the other window. -* [*Switch Window*](./docs/features/switch-window) - Fast keys switch between windows quickly. -* [*Trim Trailing Whitespace*](./docs/features/trim-trailing-whitespace) - Remove trailing spaces and tabs automatically on save. -* [*Visualize Undo/Redo*](./docs/features/visualize-undo-redo) - Improved the user experience on undoing and redoing by showing the `undo-tree-visualizer` at the other window. -* [*VS Curly Bracket*](./docs/features/vs-curly-bracket) - Visual Studio IDE like curly bracket implementation. -* [*VS Multiple Terminal*](./docs/features/vs-multiple-terminal) - VSCode like multiple shell control. -* [*VS Navigate Word*](./docs/features/vs-navigate-word) - Visual Studio IDE like navigating between word implementation. +- [*Auto Install Package*](./docs/features/auto-install-package) - Automatically installs the package that this config relies on. +- [*Build Run*](./docs/features/build-run) - Implementation for executing script for building and running the software. +- [*Capital Word*](./docs/features/capital-word) - You can navigate/kill word by seeing capital letter. +- [*Changelog Helper*](./docs/features/changelog-helper) - Help to create changelog while creating `CHANGELOG` file using template. +- [*Consistent Key Bindings*](./docs/features/consistent-key-bindings) - Has consistent key bindings across all modes. +- [*Curly Bracket Modes*](./curly-bracket-modes) - Use curly bracket depends on different mode. +- [*Display File*](./docs/features/display-file) - Utility function to use to view a file on the other window. +- [*Charset Table*](./docs/features/display-file/charset-table) - Built-in functions that displays character sets. +- Enhanced Multiple Cursors +- [*Similar Multiple Cursors*](./docs/features/similar-multiple-cursors) - Mark with cursor by similarity. +- [*VS Multiple Cursors*](./docs/features/vs-multiple-cursors) - VSCode like methods to `mark` and `unmark` multiple cursor. +- [*Fast Incremental Search*](./docs/features/fast-incremental-search) - Fast keys for incremental search forward/backward to the cursor is currently pointing. +- [*Indent Control*](./docs/features/indent-control) - Generic control the indentation level for each mode, for more information see [indent-control](https://github.com/alt-elpa/indent-control). +- [*License Helper*](./docs/features/license-helper) - Help to create license while creating `LICENSE` file using template. +- [*Mini State*](./docs/features/mini-state) - Mini mode state use to visually see what backend is the config currently running. (Deprecated) +- [*Explicit States*](./docs/features/mini-state/explicit-states) - Automatcially switch mini state depends on certain circumstances. +- [*Modern Text Editor*](./docs/features/modern-text-editor) - Design to have the preset settings close to modern text editors but faster. +- [*Multiple Output*](./docs/features/multiple-output) - Handle multiple output/compilation buffers. +- [*Navigate Blank Line*](./docs/features/navigate-blank-line) - Use `C-` and `C-` to navigate previous and next blank line. +- [*Navigate Table*](./docs/features/navigate-table) - Navigate `org-mode`'s table easier by using arrow keys. +- [*Preview HTML*](./docs/features/preview-html) - Preview rendered HTML file on the other window. +- [*Switch Window*](./docs/features/switch-window) - Fast keys switch between windows quickly. +- [*Trim Trailing Whitespace*](./docs/features/trim-trailing-whitespace) - Remove trailing spaces and tabs automatically on save. +- [*Visualize Undo/Redo*](./docs/features/visualize-undo-redo) - Improved the user experience on undoing and redoing by showing the `undo-tree-visualizer` at the other window. +- [*VS Curly Bracket*](./docs/features/vs-curly-bracket) - Visual Studio IDE like curly bracket implementation. +- [*VS Multiple Terminal*](./docs/features/vs-multiple-terminal) - VSCode like multiple shell control. +- [*VS Navigate Word*](./docs/features/vs-navigate-word) - Visual Studio IDE like navigating between word implementation. ## 📁 Package Archives A list of package archives that this configuration uses. -* *[GNU](https://elpa.gnu.org/)* - The standard GNU ELPA -* *[NonGNU](https://elpa.nongnu.org/)* - The standard NonGNU ELPA -* *[MELPA](https://melpa.org/#/)* - Milkypostman’s ELPA -* *[JCS-ELPA](https://jcs-emacs.github.io/jcs-elpa/)* - Jen-Chieh Shen's ELPA for this confinguration +- *[GNU](https://elpa.gnu.org/)* - The standard GNU ELPA +- *[NonGNU](https://elpa.nongnu.org/)* - The standard NonGNU ELPA +- *[MELPA](https://melpa.org/#/)* - Milkypostman’s ELPA +- *[JCS-ELPA](https://jcs-emacs.github.io/jcs-elpa/)* - Jen-Chieh Shen's ELPA for this confinguration 📝 *P.S. Here is a good talk comparing all package archives from a [StackExchange](https://emacs.stackexchange.com/) question, @@ -271,60 +271,60 @@ kind of methods to support the maintainer you wish to. ### Functionalities -* *Abbreivation Definition* - powered by [project-abbrev](https://github.com/elpa-host/project-abbrev). -* *Alt-Codes* - powered by [alt-codes](https://github.com/elpa-host/alt-codes). -* *Auto Completion* - powered by [company](https://github.com/company-mode/company-mode). -* *Auto Highlight Symbol* - powered by [auto-highlight-symbol-mode](https://github.com/mhayashi1120/auto-highlight-symbol-mode). -* *Banner* - powered by [dashboard](https://github.com/emacs-dashboard/emacs-dashboard). -* *Binary/Hex Editor* - powered by [hexl-mode](https://www.emacswiki.org/emacs/HexlMode). -* *Breadcrumb* - powered by [breadcrumb](https://github.com/joaotavora/breadcrumb). -* *Collaborative Editing* - powered by [togetherly](https://github.com/zk-phi/togetherly). -* *Completion Frontend* - powered by [vertico](https://github.com/minad/vertico). -* *Context Menu* - powered by [context-menu-mode](https://www.gnu.org/software/emacs/manual/html_node/emacs/Menu-Mouse-Clicks.html). -* *Document String* - powered by [ts-docstr](https://github.com/emacs-vs/ts-docstr). -* *End of Line* - powered by [show-eol](https://github.com/elpa-host/show-eol). -* *Execute Commands* - powered by [compile](https://www.emacswiki.org/emacs/CompilationMode). -* *File Explorer* - powered by [treemacs](https://github.com/Alexander-Miller/treemacs). -* *File Header* - powered by [file-header](https://github.com/alt-elpa/file-header). -* *Folding/Unfolding* - powered by [ts-fold](https://github.com/jcs090218/ts-fold). - * *Persistence Folding* - powered by [savefold.el](https://github.com/jcfk/savefold.el). -* *Font* - powered by [use-ttf](https://github.com/elpa-host/use-ttf). -* *Goto Declaration/Definition* - powered by [dumb-jump](https://github.com/jacktasia/dumb-jump). -* *Highlight Indentation* - powered by [highlight-indent-guides](https://github.com/DarthFennec/highlight-indent-guides). -* *Highlight Matched Pairs* - powered by [show-paren-mode](https://www.emacswiki.org/emacs/ShowParenMode). -* *Highlight Same Region* - powered by [region-occurrences-highlighter](https://github.com/alvarogonzalezsotillo/region-occurrences-highlighter). -* *Indentation Management* - powered by [indent-control](https://github.com/alt-elpa/indent-control). -* *Language Server Protocol* - powered by [lsp-mode](https://github.com/emacs-lsp/lsp-mode). -* *Line Annotation* - powered by [line-reminder](https://github.com/elpa-host/line-reminder). -* *Line Numbers* - powered by [display-line-numbers](https://github.com/emacs-mirror/emacs/blob/master/lisp/display-line-numbers.el) and [linum](https://github.com/emacs-mirror/emacs/blob/master/lisp/linum.el). -* *Minimap* - powered by [minimap](http://elpa.gnu.org/packages/minimap.html). -* *Mode Line* - powered by [jcs-modeline](https://github.com/jcs-emacs/jcs-modeline). -* *Multiple Cursor* - powered by [iedit](https://github.com/victorhge/iedit) and [multiple-cursors](https://github.com/magnars/multiple-cursors.el). -* *Multiple Terminal* - powered by [multi-shell](https://github.com/jcs-elpa/multi-shell). -* *Music Player* - powered by [emp](https://github.com/jcs-elpa/emp). -* *Navigation/Searcher* - powered by [searcher](https://github.com/jcs-elpa/searcher) and [isearch-project](https://github.com/elpa-host/isearch-project). -* *Package Archive* - see [here](#file_folder-package-archives). -* *Package Management* - powered by [use-package](https://github.com/jwiegley/use-package) and [github-elpa](https://github.com/10sr/github-elpa). -* *PDF Viewer* - powered by [doc-view-mode](https://www.emacswiki.org/emacs/DocViewMode) and [ghostscript](https://www.ghostscript.com/index.html). -* *Project Management* - powered by [project](https://elpa.gnu.org/packages/project.html). -* *Recent Files* - powered by [recentf](https://www.emacswiki.org/emacs/RecentFiles). -* *Regexp* - powered by [re-builder](https://www.emacswiki.org/emacs/ReBuilder) and [visual-regexp](https://github.com/benma/visual-regexp.el). -* *Remote Access* - powered by [tramp](https://www.emacswiki.org/emacs/TrampMode). -* *Restart Emacs* - powered by [restart-emacs](https://github.com/iqbalansari/restart-emacs). -* *Scroll Bar* - powered by [auto-scroll-bar](https://github.com/jcs-elpa/auto-scroll-bar). -* *Shell* - powered by [shell](https://www.emacswiki.org/emacs/ShellMode). -* *Smooth Scrolling* - none, originally powered by ~~[sublimity](https://github.com/zk-phi/sublimity)~~. -* *Snippet* - powered by [yasnippet](https://github.com/joaotavora/yasnippet). -* *Startup Screen* - powered by [dashboard](https://github.com/emacs-dashboard/emacs-dashboard). -* *Syntax Check* - powered by [flycheck](http://www.flycheck.org/en/latest/). -* *Tab Bar* - powered by [centaur-tabs](https://github.com/ema2159/centaur-tabs). -* ~~*Tags* - powered by [gtags](https://www.gnu.org/software/global/).~~ -* *Theme* - powered by [vs-dark-theme](https://github.com/jcs-elpa/vs-dark-theme) and [vs-light-theme](https://github.com/jcs-elpa/vs-light-theme). **(For more info see [here](#themes))** -* *Todo* - powered by [hl-todo](https://github.com/tarsius/hl-todo). -* *Undo/Redo* - powered by [undo-tree](https://www.emacswiki.org/emacs/UndoTree). -* *Version Control Management* - powered by [magit](https://github.com/magit/magit). -* *Video Player* - none. -* *White Space* - powered by [whitespace](https://www.emacswiki.org/emacs/WhiteSpace). +- *Abbreivation Definition* - powered by [project-abbrev](https://github.com/elpa-host/project-abbrev). +- *Alt-Codes* - powered by [alt-codes](https://github.com/elpa-host/alt-codes). +- *Auto Completion* - powered by [company](https://github.com/company-mode/company-mode). +- *Auto Highlight Symbol* - powered by [auto-highlight-symbol-mode](https://github.com/mhayashi1120/auto-highlight-symbol-mode). +- *Banner* - powered by [dashboard](https://github.com/emacs-dashboard/emacs-dashboard). +- *Binary/Hex Editor* - powered by [hexl-mode](https://www.emacswiki.org/emacs/HexlMode). +- *Breadcrumb* - powered by [breadcrumb](https://github.com/joaotavora/breadcrumb). +- *Collaborative Editing* - powered by [togetherly](https://github.com/zk-phi/togetherly). +- *Completion Frontend* - powered by [vertico](https://github.com/minad/vertico). +- *Context Menu* - powered by [context-menu-mode](https://www.gnu.org/software/emacs/manual/html_node/emacs/Menu-Mouse-Clicks.html). +- *Document String* - powered by [ts-docstr](https://github.com/emacs-vs/ts-docstr). +- *End of Line* - powered by [show-eol](https://github.com/elpa-host/show-eol). +- *Execute Commands* - powered by [compile](https://www.emacswiki.org/emacs/CompilationMode). +- *File Explorer* - powered by [treemacs](https://github.com/Alexander-Miller/treemacs). +- *File Header* - powered by [file-header](https://github.com/alt-elpa/file-header). +- *Folding/Unfolding* - powered by [ts-fold](https://github.com/jcs090218/ts-fold). + - *Persistence Folding* - powered by [savefold.el](https://github.com/jcfk/savefold.el). +- *Font* - powered by [use-ttf](https://github.com/elpa-host/use-ttf). +- *Goto Declaration/Definition* - powered by [dumb-jump](https://github.com/jacktasia/dumb-jump). +- *Highlight Indentation* - powered by [highlight-indent-guides](https://github.com/DarthFennec/highlight-indent-guides). +- *Highlight Matched Pairs* - powered by [show-paren-mode](https://www.emacswiki.org/emacs/ShowParenMode). +- *Highlight Same Region* - powered by [region-occurrences-highlighter](https://github.com/alvarogonzalezsotillo/region-occurrences-highlighter). +- *Indentation Management* - powered by [indent-control](https://github.com/alt-elpa/indent-control). +- *Language Server Protocol* - powered by [lsp-mode](https://github.com/emacs-lsp/lsp-mode). +- *Line Annotation* - powered by [line-reminder](https://github.com/elpa-host/line-reminder). +- *Line Numbers* - powered by [display-line-numbers](https://github.com/emacs-mirror/emacs/blob/master/lisp/display-line-numbers.el) and [linum](https://github.com/emacs-mirror/emacs/blob/master/lisp/linum.el). +- *Minimap* - powered by [minimap](http://elpa.gnu.org/packages/minimap.html). +- *Mode Line* - powered by [jcs-modeline](https://github.com/jcs-emacs/jcs-modeline). +- *Multiple Cursor* - powered by [iedit](https://github.com/victorhge/iedit) and [multiple-cursors](https://github.com/magnars/multiple-cursors.el). +- *Multiple Terminal* - powered by [multi-shell](https://github.com/jcs-elpa/multi-shell). +- *Music Player* - powered by [emp](https://github.com/jcs-elpa/emp). +- *Navigation/Searcher* - powered by [searcher](https://github.com/jcs-elpa/searcher) and [isearch-project](https://github.com/elpa-host/isearch-project). +- *Package Archive* - see [here](#file_folder-package-archives). +- *Package Management* - powered by [use-package](https://github.com/jwiegley/use-package) and [github-elpa](https://github.com/10sr/github-elpa). +- *PDF Viewer* - powered by [doc-view-mode](https://www.emacswiki.org/emacs/DocViewMode) and [ghostscript](https://www.ghostscript.com/index.html). +- *Project Management* - powered by [project](https://elpa.gnu.org/packages/project.html). +- *Recent Files* - powered by [recentf](https://www.emacswiki.org/emacs/RecentFiles). +- *Regexp* - powered by [re-builder](https://www.emacswiki.org/emacs/ReBuilder) and [visual-regexp](https://github.com/benma/visual-regexp.el). +- *Remote Access* - powered by [tramp](https://www.emacswiki.org/emacs/TrampMode). +- *Restart Emacs* - powered by [restart-emacs](https://github.com/iqbalansari/restart-emacs). +- *Scroll Bar* - powered by [auto-scroll-bar](https://github.com/jcs-elpa/auto-scroll-bar). +- *Shell* - powered by [shell](https://www.emacswiki.org/emacs/ShellMode). +- *Smooth Scrolling* - none, originally powered by ~~[sublimity](https://github.com/zk-phi/sublimity)~~. +- *Snippet* - powered by [yasnippet](https://github.com/joaotavora/yasnippet). +- *Startup Screen* - powered by [dashboard](https://github.com/emacs-dashboard/emacs-dashboard). +- *Syntax Check* - powered by [flycheck](http://www.flycheck.org/en/latest/). +- *Tab Bar* - powered by [centaur-tabs](https://github.com/ema2159/centaur-tabs). +- ~~*Tags* - powered by [gtags](https://www.gnu.org/software/global/).~~ +- *Theme* - powered by [vs-dark-theme](https://github.com/jcs-elpa/vs-dark-theme) and [vs-light-theme](https://github.com/jcs-elpa/vs-light-theme). **(For more info see [here](#themes))** +- *Todo* - powered by [hl-todo](https://github.com/tarsius/hl-todo). +- *Undo/Redo* - powered by [undo-tree](https://www.emacswiki.org/emacs/UndoTree). +- *Version Control Management* - powered by [magit](https://github.com/magit/magit). +- *Video Player* - none. +- *White Space* - powered by [whitespace](https://www.emacswiki.org/emacs/WhiteSpace). ## 🧰 Write your own customization @@ -336,7 +336,7 @@ there, then other than that are the core files. Here is the list of *Frequently Asked Questions*. -* [List of FAQ](./doc/FAQ.md) +- [List of FAQ](./doc/FAQ.md) ## 🛠️ Contribute From 3ca806468f98b55e68cdae34603b0c2798ee6deb Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 21 Apr 2025 18:14:29 -0700 Subject: [PATCH 242/334] refactor: Move backtrace to debugger section --- modules/emacs/buffer-menu/config.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/emacs/buffer-menu/config.el b/modules/emacs/buffer-menu/config.el index faaf91d6..b491cda2 100644 --- a/modules/emacs/buffer-menu/config.el +++ b/modules/emacs/buffer-menu/config.el @@ -11,7 +11,7 @@ "[*]Echo Area" "[*]Minibuf-" "[*]helm" "[*]esup" "[*]quelpa-" "[*]easky" "[*]quickrun" - "[*]Apropos[*]" "[*]Backtrace[*]" "[*]Compile-Log[*]" + "[*]Apropos[*]" "[*]Compile-Log[*]" "[*]Ibuffer[*]" "[*]Bug Help[*]" "[*]Warnings[*]" @@ -29,6 +29,7 @@ "[*]cider-" "[*]nrepl-server" "[*]timer" ;; `Debugger' + "[*]Backtrace[*]" "[*]edebug" "[*]dap-" "[*]debug-" ;; `LSP' "[*]lsp-" "[*]LSP[ ]+" "[*]eglot" From 2b22ef548c9e41bb6bc8fd75f52efeacb2262b6a Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 21 Apr 2025 18:14:45 -0700 Subject: [PATCH 243/334] feat(ui): Add backtrace to debugger tabs --- modules/ui/tabs/config.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index 72870170..23ef7016 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -74,7 +74,9 @@ ((jcs-member name '("*cider") 'prefix) "Cider") ;;; D - ((jcs-member name '("[*]edebug" "[*]dap-" "[*]debug-") 'regex) + ((jcs-member name '("[*]Backtrace[*]" + "[*]edebug" "[*]dap-" "[*]debug-") + 'regex) "Debugger") ((derived-mode-p 'dired-mode) "Dired") From f27cf427a4ddaa89627f854fd0f9e8fd2df3505c Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 21 Apr 2025 19:00:54 -0700 Subject: [PATCH 244/334] feat(editor): cancel after for comment return --- modules/editor/vs/config.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/editor/vs/config.el b/modules/editor/vs/config.el index 9ff17880..19850792 100644 --- a/modules/editor/vs/config.el +++ b/modules/editor/vs/config.el @@ -20,5 +20,5 @@ (use-package vs-comment-return :init - (setq vs-comment-return-cancel-after t - vs-comment-return-inhibit-prefix nil)) + (setq vs-comment-return-inhibit-prefix nil + vs-comment-return-cancel-after nil)) From 9a1d9e7a4495ab6c350f42f3a2f0f1b3e88704bb Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Tue, 22 Apr 2025 15:40:31 -0700 Subject: [PATCH 245/334] Update Eask --- Eask | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Eask b/Eask index 585d2218..ca51204e 100755 --- a/Eask +++ b/Eask @@ -1,3 +1,5 @@ +;; -*- mode: eask; lexical-binding: t -*- + (package "jcs-emacs" "9.1.1" "Emacs configuration works across all OSs") From 6be5d4a5468be2405c16f4873eb17b87d9cdddaa Mon Sep 17 00:00:00 2001 From: JenChieh Date: Thu, 24 Apr 2025 08:01:31 -0700 Subject: [PATCH 246/334] refactor(completion): Categorize variables --- modules/completion/company/config.el | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/modules/completion/company/config.el b/modules/completion/company/config.el index 39903c8d..aed21944 100644 --- a/modules/completion/company/config.el +++ b/modules/completion/company/config.el @@ -6,16 +6,17 @@ ("TAB" . vsc-edit-tab) ("C-s" . jcs-save-buffer)) :init - (setq company-frontends '(company-pseudo-tooltip-frontend) + (setq company-minimum-prefix-length 0 + company-tooltip-limit 10 + company-idle-delay 0.07 + company-selection-wrap-around 'on company-require-match nil company-tooltip-align-annotations t + company-format-margin-function #'company-detect-icons-margin + company-frontends '(company-pseudo-tooltip-frontend) company-dabbrev-downcase nil company-dabbrev-ignore-case nil - company-eclim-auto-save nil - company-minimum-prefix-length 0 - company-idle-delay 0.07 - company-selection-wrap-around 'on - company-format-margin-function #'company-detect-icons-margin) + company-eclim-auto-save nil) (setq company-backends '( company-capf company-semantic company-keywords company-dict From c3f22a2e08dd281a7c95a1980a7a1b6fd15170a6 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 30 Apr 2025 20:37:49 -0700 Subject: [PATCH 247/334] chore: Update submodule --- templates | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates b/templates index 3c86b31e..e4612ab7 160000 --- a/templates +++ b/templates @@ -1 +1 @@ -Subproject commit 3c86b31e6f7c6929e8745444b6b856afd56fd52b +Subproject commit e4612ab748746d2eb5e9784c7a0d5c9e6d98c69b From 2d2542483e3715043a34bc20294e7a3d11aa9b33 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 30 Apr 2025 20:39:36 -0700 Subject: [PATCH 248/334] chore: Update submodule --- snippets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snippets b/snippets index 766f6682..824beb08 160000 --- a/snippets +++ b/snippets @@ -1 +1 @@ -Subproject commit 766f66820bc88057fb8891c333e06f784d74aecf +Subproject commit 824beb0818c23e606611d71205a688ad003e50d6 From 29a1c8c771c712f1a82a84aa2bb2db6a01c8c2a5 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 4 May 2025 17:15:02 -0700 Subject: [PATCH 249/334] feat: Use toggle poptip instead --- lisp/jcs-key.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/jcs-key.el b/lisp/jcs-key.el index 521afc57..f44521a1 100755 --- a/lisp/jcs-key.el +++ b/lisp/jcs-key.el @@ -258,7 +258,7 @@ ;;; Show Hover ((kbd "C-k C-i") . jcs-poptip) - ((kbd "C-q") . jcs-poptip-focus) + ((kbd "M-Q") . jcs-poptip-toggle-focus) ;;; Show Symbol ((kbd "M-i") . show-eol-mode) From 9849600d071b961332756c9685800128e2782039 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sun, 4 May 2025 18:35:17 -0700 Subject: [PATCH 250/334] Update keybindings.md --- docs/keybindings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/keybindings.md b/docs/keybindings.md index 25300390..0f149013 100755 --- a/docs/keybindings.md +++ b/docs/keybindings.md @@ -406,7 +406,7 @@ Here is the list of key bindings that are defined in this configuration. * Alt+f6 - Restart Emacs. * Ctrl+k,Ctrl+s - Describe key bindings with the current `major-mode`. * Ctrl+k,Ctrl+i - Describe the current symbol. -* Ctrl+q - Focus/Unfocus described frame. +* Alt+Shift+q - Focus/Unfocus described frame. * Ctrl+t - Toggle `tabbar-mode`. * Alt+z - Toggle `truncate-lines`. * Ctrl+r, o - Read-Only mode toggle. From 944d71e5e60a78880a2c12f9bd5bbb9ce0570d7d Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sun, 4 May 2025 18:36:13 -0700 Subject: [PATCH 251/334] Update keybindings.md --- docs/keybindings.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/keybindings.md b/docs/keybindings.md index 0f149013..be314d4a 100755 --- a/docs/keybindings.md +++ b/docs/keybindings.md @@ -401,17 +401,17 @@ Here is the list of key bindings that are defined in this configuration. #### System -* Alt+f4 - Shutdown Emacs. -* Alt+f5 - Reload Emacs. -* Alt+f6 - Restart Emacs. -* Ctrl+k,Ctrl+s - Describe key bindings with the current `major-mode`. -* Ctrl+k,Ctrl+i - Describe the current symbol. -* Alt+Shift+q - Focus/Unfocus described frame. -* Ctrl+t - Toggle `tabbar-mode`. -* Alt+z - Toggle `truncate-lines`. -* Ctrl+r, o - Read-Only mode toggle. -* Ctrl+r, f - Open recent files. -* Ctrl+k, \` - Toggle `depend`/`cross` mode. +* Alt+f4 - To shutdown Emacs. +* Alt+f5 - To reload Emacs. +* Alt+f6 - To restart Emacs. +* Ctrl+k,Ctrl+s - To describe key bindings with the current `major-mode`. +* Ctrl+k,Ctrl+i - To describe the current symbol. +* Alt+Shift+q - To focus/unfocus the described frame. +* Ctrl+t - To toggle `tabbar-mode`. +* Alt+z - To toggle `truncate-lines`. +* Ctrl+r, o - To toggle between Read-Only. +* Ctrl+r, f - To open recent files. +* Ctrl+k, \` - To toggle `depend`/`cross` mode. #### Theme From f5d2cd3acc3213e1e3d4aaec3af95527ceb4c403 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Tue, 13 May 2025 06:58:40 -0700 Subject: [PATCH 252/334] vc: Remove duplicate DS_Store --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index f47ea3d3..22f3d2ff 100755 --- a/.gitignore +++ b/.gitignore @@ -10,7 +10,6 @@ README.html *.sqlite *.tmp *bak/ -.DS_Store .cache/ .cask/ .dap-* From ebbc2b1e91e0067a2e752975cace27f2d2f901da Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Tue, 13 May 2025 06:59:00 -0700 Subject: [PATCH 253/334] vc: Add savefold --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 22f3d2ff..d18f512f 100755 --- a/.gitignore +++ b/.gitignore @@ -74,6 +74,7 @@ rcirc-log/ request/ rime/ rust-playground/ +savefold/ server/ session* thumbs/ From 3b5dd023514521dff023a55f61b7029efe4ff38b Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Tue, 13 May 2025 06:59:26 -0700 Subject: [PATCH 254/334] vc: Add persist-text-scale --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index d18f512f..57d05607 100755 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,7 @@ README.html /history /nov-places /package-quickstart.el +/persist-text-scale /places /projectile-bookmarks.eld /projectile.cache From 7015fa4cd4f91e2cc85d7e95a3fd5c38e51ae25a Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 18 May 2025 22:26:33 -0700 Subject: [PATCH 255/334] feat: Add default text-scale --- lisp/jcs-package.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 589cc5e1..d1db5515 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -149,6 +149,7 @@ cython-mode d-mode dashboard-ls + default-text-scale diff-hl diminish-buffer diredfl From 4453b907e5702989ca711c90b3244e04b8f873c6 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 18 May 2025 22:50:13 -0700 Subject: [PATCH 256/334] feat: Update key bindings --- lisp/jcs-key.el | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/lisp/jcs-key.el b/lisp/jcs-key.el index f44521a1..02483beb 100755 --- a/lisp/jcs-key.el +++ b/lisp/jcs-key.el @@ -110,8 +110,8 @@ ((kbd "C-e r") . ueval-region) ;;; Expand Region - ((kbd "C-+") . er/expand-region) - ((kbd "C-_") . er/contract-region) + ((kbd "C-M-=") . er/expand-region) + ((kbd "C-M--") . er/contract-region) ;;; File Explorer ((kbd "C-M-l") . treemacs) ; `Visual Studio' @@ -182,13 +182,11 @@ ((kbd "M-E") . emp-other-window) ;;; Mutliple Cursors - ((kbd "C-M-S-") . vsc-multiple-cursors-mark-previous-like-this-line) - ((kbd "C-M-S-") . vsc-multiple-cursors-mark-next-like-this-line) - ((kbd "C-M-_") . vsc-multiple-cursors-mark-previous-similar-this-line) - ((kbd "C-M-+") . vsc-multiple-cursors-mark-next-similar-this-line) - ((kbd "C-M-=") . vsc-multiple-cursors-inc-similarity) - ((kbd "C-M--") . vsc-multiple-cursors-dec-similarity) - ((kbd "S-M-") . mc/add-cursor-on-click) + ((kbd "C-M-S-") . vsc-multiple-cursors-mark-previous-like-this-line) + ((kbd "C-M-S-") . vsc-multiple-cursors-mark-next-like-this-line) + ((kbd "C-M-_") . vsc-multiple-cursors-mark-previous-similar-this-line) + ((kbd "C-M-+") . vsc-multiple-cursors-mark-next-similar-this-line) + ((kbd "S-M-") . mc/add-cursor-on-click) ;;; Navigation ((kbd "C-") . beginning-of-buffer) @@ -303,8 +301,6 @@ ;;; Version Control ((kbd "C-k m") . jcs-magit) - ((kbd "C-0 g") . jcs-magit) ; Visual Studio - ((kbd "C-S-g") . jcs-magit) ; VSCode ((kbd "C-k c") . magit-branch-or-checkout) ((kbd "C-k d") . magit-branch-delete) @@ -345,7 +341,15 @@ ;;; Zoom ((kbd "C-=") . text-scale-increase) ((kbd "C--") . text-scale-decrease) - ((kbd "C-") . (lambda () (interactive) (text-scale-set 0))) + ((kbd "C-0") . (lambda () (interactive) (text-scale-set 0))) + + ((kbd "C-+") . default-text-scale-increase) + ((kbd "C-_") . default-text-scale-decrease) + ((kbd "C-S-0") . default-text-scale-reset) + + ((kbd "C-") . (lambda () (interactive) + (text-scale-set 0) + (default-text-scale-reset))) ;;; Windows Menu ((kbd "M-SPC n") . suspend-frame) From cb4afdfaeec2fb6af570cc16915b88ebf4b91cde Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sun, 18 May 2025 22:51:11 -0700 Subject: [PATCH 257/334] Update keybindings.md --- docs/keybindings.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/keybindings.md b/docs/keybindings.md index be314d4a..2d2e6530 100755 --- a/docs/keybindings.md +++ b/docs/keybindings.md @@ -173,8 +173,8 @@ Here is the list of key bindings that are defined in this configuration. #### Expand Region -* Ctrl+Shift+= - Expand the region from the current point. -* Ctrl+Shift+- - Contract the region from the current point. +* Ctrl+Alt+= - Expand the region from the current point. +* Ctrl+Alt+- - Contract the region from the current point. #### Case From 0744016f2833f2330e247e9cc4bd5ec51da56f5c Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sun, 18 May 2025 22:51:51 -0700 Subject: [PATCH 258/334] docs: Remove similarity --- docs/keybindings.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docs/keybindings.md b/docs/keybindings.md index 2d2e6530..235dc5a9 100755 --- a/docs/keybindings.md +++ b/docs/keybindings.md @@ -24,7 +24,6 @@ Here is the list of key bindings that are defined in this configuration. - [Balanced Expression](#balanced-expression) - [Multiple Cursors](#multiple-cursors) - [Marking](#marking) - - [Similarity](#similarity) - [Debugging](#debugging) - [Buffer](#buffer) - [Buffer Menu](#buffer-menu) @@ -216,11 +215,6 @@ Here is the list of key bindings that are defined in this configuration. * Ctrl+Alt+Shift+- - Mark the next line similar to current line. * Alt+Shift+Left-Click - Mart at the current point. -##### Similarity - -* Ctrl+Alt+= - Increase the string distance level by `1`. -* Ctrl+Alt+- - Decrease the string distance level by `1`. - #### Debugging * f6 - Toggle `flycheck`. From d2188358674c209638e983ae548737c1b7316c34 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 18 May 2025 22:52:47 -0700 Subject: [PATCH 259/334] Rever magit --- lisp/jcs-key.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/jcs-key.el b/lisp/jcs-key.el index 02483beb..875ed26b 100755 --- a/lisp/jcs-key.el +++ b/lisp/jcs-key.el @@ -301,6 +301,8 @@ ;;; Version Control ((kbd "C-k m") . jcs-magit) + ((kbd "C-0 g") . jcs-magit) ; Visual Studio + ((kbd "C-S-g") . jcs-magit) ; VSCode ((kbd "C-k c") . magit-branch-or-checkout) ((kbd "C-k d") . magit-branch-delete) From e15b977212e6530bab061f4047965a7928be4285 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sun, 18 May 2025 22:53:34 -0700 Subject: [PATCH 260/334] feat: Remove individuals text scale reset --- lisp/jcs-key.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/lisp/jcs-key.el b/lisp/jcs-key.el index 875ed26b..b9b51096 100755 --- a/lisp/jcs-key.el +++ b/lisp/jcs-key.el @@ -343,11 +343,9 @@ ;;; Zoom ((kbd "C-=") . text-scale-increase) ((kbd "C--") . text-scale-decrease) - ((kbd "C-0") . (lambda () (interactive) (text-scale-set 0))) ((kbd "C-+") . default-text-scale-increase) ((kbd "C-_") . default-text-scale-decrease) - ((kbd "C-S-0") . default-text-scale-reset) ((kbd "C-") . (lambda () (interactive) (text-scale-set 0) From cf374c970b0e54ce9988c004719f8422318b3dda Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sun, 18 May 2025 22:55:08 -0700 Subject: [PATCH 261/334] Update keybindings.md --- docs/keybindings.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/keybindings.md b/docs/keybindings.md index 235dc5a9..63d610c0 100755 --- a/docs/keybindings.md +++ b/docs/keybindings.md @@ -339,8 +339,10 @@ Here is the list of key bindings that are defined in this configuration. ### Visualization -* Ctrl+= - Text scale increase (Zoom in). -* Ctrl+- - Text scale decrease (Zoom out). +* Ctrl+= - Text scale increase (Buffer). +* Ctrl+- - Text scale decrease (Buffer). +* Ctrl+Shift+= - Text scale increase (Frame). +* Ctrl+Shift+- - Text scale decrease (Frame). * Ctrl+0(Numpad) - Reset zoom. * Alt+= - Increase the frame's transparency. * Alt+- - Decrease the frame's transparency. From 76a9984ebed8ebf6062f227053001cff30abd10d Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sun, 18 May 2025 22:56:34 -0700 Subject: [PATCH 262/334] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2fc10732..2444246f 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * feat(fold): Add `savefold` for persistent folding behaviors (98d0f498ccb2d16326f8814c7d4d36a4e2279d51) * feat(debugger): Combine `debugger` and `run` functionality (2d4048562fc019da0acc6bbc55242d1767cfc90d) * feat(fold): Add new package `fold-this` (5c9b423ba95419dcb8e81477570778739c1ec851) +* feat(keys): Add support for `defaul-text-scale` (4453b907e5702989ca711c90b3244e04b8f873c6) ## 9.1.0 > Released Jun 19, 2024 From 4053e78ba1be824c81db0011762d33e953f18570 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 19 May 2025 00:52:16 -0700 Subject: [PATCH 263/334] feat: Add lisp unicode --- lisp/jcs-package.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index d1db5515..eb37006f 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -317,6 +317,7 @@ license-templates line-reminder list-environment + list-unicode-display literate-calc-mode llvm-mode lockfile-mode From 170447a23437c37b95961e9e801089b637bc2c52 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 19 May 2025 00:52:27 -0700 Subject: [PATCH 264/334] feat: Configure lisp unicode mode --- modules/emacs/buffer-menu/config.el | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/emacs/buffer-menu/config.el b/modules/emacs/buffer-menu/config.el index b491cda2..213cc4a8 100644 --- a/modules/emacs/buffer-menu/config.el +++ b/modules/emacs/buffer-menu/config.el @@ -87,6 +87,7 @@ "dired-mode" "help-mode" "custom-mode" "list-environment-mode" + "list-unicode-display-mode" "shell-mode" "eshell-mode" "sqlite-mode" "checkdoc-output-mode" From 8cf88a1f22cd5227d38110e07f44033402bd87d2 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 21 May 2025 00:13:54 -0700 Subject: [PATCH 265/334] fix: reload project with files --- lisp/jcs-project.el | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lisp/jcs-project.el b/lisp/jcs-project.el index 32e3ed13..04d60158 100755 --- a/lisp/jcs-project.el +++ b/lisp/jcs-project.el @@ -89,10 +89,14 @@ If optional argument DIR is nil, use variable `default-directory' instead." (files (cl-remove-if-not (lambda (filename) (string-suffix-p ".el" filename)) files))) - (progn - (mapc (lambda (file) - (ignore-errors (load-file file))) - files) + (msgu-inhibit-log + ;; XXX: Load the files length times due to the problem depending + ;; on other modules that haven't been loaded. Loading the files length + ;; times can guarantee you've loaded the project fully operational. + (dotimes (_ (length files)) + (mapc (lambda (file) + (ignore-errors (load-file file))) + files)) (message "[INFO] Reloading project %s... done!" root)) (user-error "[WARNING] Currently not under an Elisp project"))) From f67d4c639d741b78b699bc36648623aac99c5c8d Mon Sep 17 00:00:00 2001 From: JenChieh Date: Thu, 22 May 2025 19:30:47 -0700 Subject: [PATCH 266/334] fix: Remove unmark on normal command --- lisp/jcs-env.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lisp/jcs-env.el b/lisp/jcs-env.el index 36d8026b..bec311d5 100755 --- a/lisp/jcs-env.el +++ b/lisp/jcs-env.el @@ -176,8 +176,7 @@ (use-package eval-mark :init (setq eval-mark-commands-after '( eval-buffer eval-defun eval-region - eval-last-sexp - narrow-to-region))) + eval-last-sexp))) ;; ;;; Messages From b6602a030129a8ec60531caf03d450b12bbdb696 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 2 Jun 2025 03:02:16 -0700 Subject: [PATCH 267/334] feat: Add magik --- lisp/jcs-package.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index eb37006f..51ebe03b 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -341,6 +341,7 @@ lsp-sonarlint lsp-sourcekit lsp-tailwindcss + magik magit-lfs magit-todos makefile-executor From 5ab68e5a9deb1671a55c36ca81ea866217f2cfd2 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 2 Jun 2025 03:02:31 -0700 Subject: [PATCH 268/334] Add magik module --- modules/lang/magik/config.el | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 modules/lang/magik/config.el diff --git a/modules/lang/magik/config.el b/modules/lang/magik/config.el new file mode 100644 index 00000000..b3d2d594 --- /dev/null +++ b/modules/lang/magik/config.el @@ -0,0 +1,19 @@ +;;; lang/magik/config.el -*- lexical-binding: t; -*- + +;; +;; (@* "Templates" ) +;; + +(file-header-defins jcs-insert-magik-template "magik" "default.txt" + "Header for Magik header file.") + +;; +;; (@* "Hook" ) +;; + +(jcs-add-hook 'magik-mode-hook + (company-fuzzy-backend-add-before 'company-magik 'company-dabbrev) + + ;; File Header + (jcs-insert-header-if-valid '("[.]magik") + 'jcs-insert-markdown-template)) From 2eb2be502b7c5a633b1304218da0a0b55c6e97f3 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 2 Jun 2025 03:02:47 -0700 Subject: [PATCH 269/334] feat: load magik module --- lisp/jcs-module.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-module.el b/lisp/jcs-module.el index 4c807cea..35e81235 100644 --- a/lisp/jcs-module.el +++ b/lisp/jcs-module.el @@ -139,6 +139,7 @@ (tex-mode . "lang/latex") (ledger-mode . "lang/ledger") (lua-mode . "lang/lua") + (magik-mode . "lang/magik") (markdown-mode . "lang/markdown") (mermaid-mode . "lang/mermaid") (mint-mode . "lang/mint") From 87372e98337025e49ff8d30d0f4994cabf4df9f5 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 2 Jun 2025 03:02:54 -0700 Subject: [PATCH 270/334] feat: Install magik company --- lisp/jcs-package.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 51ebe03b..d86b39f9 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -341,7 +341,7 @@ lsp-sonarlint lsp-sourcekit lsp-tailwindcss - magik + magik-company magit-lfs magit-todos makefile-executor From c3aebbf57ab8d8e73d742db350b4968e766be165 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 2 Jun 2025 03:04:17 -0700 Subject: [PATCH 271/334] Update submouldes --- templates | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates b/templates index e4612ab7..62ce4973 160000 --- a/templates +++ b/templates @@ -1 +1 @@ -Subproject commit e4612ab748746d2eb5e9784c7a0d5c9e6d98c69b +Subproject commit 62ce4973d5aad2ad8ebc2eb0312e830518b484ae From 2908cb50594e102ce8426cc8f8e7ede556c4b2d1 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 2 Jun 2025 03:06:06 -0700 Subject: [PATCH 272/334] Update submouldes --- snippets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snippets b/snippets index 824beb08..bbbebfeb 160000 --- a/snippets +++ b/snippets @@ -1 +1 @@ -Subproject commit 824beb0818c23e606611d71205a688ad003e50d6 +Subproject commit bbbebfeb669c3e25e3bb30231f063c6d47c87d38 From ac7e4e48ab7bb09f6c6549a54738c8097e719f23 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 2 Jun 2025 03:06:53 -0700 Subject: [PATCH 273/334] fix: minor typo --- modules/lang/magik/config.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/lang/magik/config.el b/modules/lang/magik/config.el index b3d2d594..d8b5ca5f 100644 --- a/modules/lang/magik/config.el +++ b/modules/lang/magik/config.el @@ -16,4 +16,4 @@ ;; File Header (jcs-insert-header-if-valid '("[.]magik") - 'jcs-insert-markdown-template)) + 'jcs-insert-magik-template)) From 308667845df0bd727e8d136d037fd6731ef58d36 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 2 Jun 2025 03:21:07 -0700 Subject: [PATCH 274/334] vc: Ignore abbrev defs --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 57d05607..f57afd4d 100755 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,7 @@ README.html /.pdf-view-restore /.persistent-scratch /.rgignore +/abbrev_defs /ac-comphist.dat /amx-items /bookmarks From f25fe245bff9c8df9c8ec1b618f56c48476d5f10 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 2 Jun 2025 03:21:55 -0700 Subject: [PATCH 275/334] docs: Mention support of Magik --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index df417f2b..c3c4cbeb 100755 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ from this configuration. - Janet / Java / JavaScript / JSON / JSX / Julia - Kotlin - LaTeX / LESS / Lisp / Lua -- Makefile / Markdown / Mermaid / Mint +- Magik / Makefile / Markdown / Mermaid / Mint - Nim / Nix / Noir - Object Pascal (Delphi) / Objective-C / OCaml - P4 / Pascal / Perl / PHP / PowerShell / Properties / Python From d3f839c128489c43ab9a9fa26c5ab6e91217e7cf Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 2 Jun 2025 03:22:28 -0700 Subject: [PATCH 276/334] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2444246f..45bae14b 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * feat(debugger): Combine `debugger` and `run` functionality (2d4048562fc019da0acc6bbc55242d1767cfc90d) * feat(fold): Add new package `fold-this` (5c9b423ba95419dcb8e81477570778739c1ec851) * feat(keys): Add support for `defaul-text-scale` (4453b907e5702989ca711c90b3244e04b8f873c6) +* feat(lang): Add support for `Magik` language (5ab68e5a9deb1671a55c36ca81ea866217f2cfd2) ## 9.1.0 > Released Jun 19, 2024 From 744d934b0cb7c8acf13f75d37c103895da2eb4fe Mon Sep 17 00:00:00 2001 From: JenChieh Date: Tue, 3 Jun 2025 03:17:30 -0700 Subject: [PATCH 277/334] fix(lang): Magik company name --- modules/lang/magik/config.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/lang/magik/config.el b/modules/lang/magik/config.el index d8b5ca5f..8f74e3e2 100644 --- a/modules/lang/magik/config.el +++ b/modules/lang/magik/config.el @@ -12,7 +12,7 @@ ;; (jcs-add-hook 'magik-mode-hook - (company-fuzzy-backend-add-before 'company-magik 'company-dabbrev) + (company-fuzzy-backend-add-before 'magik-company 'company-dabbrev) ;; File Header (jcs-insert-header-if-valid '("[.]magik") From 31d7079a50f0254e27a7e794773ef457bcf6f1e5 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 11 Jun 2025 04:18:24 -0700 Subject: [PATCH 278/334] feat: Add nushell --- lisp/jcs-package.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index d86b39f9..26c29af8 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -375,6 +375,7 @@ noir-mode nov npm-mode + nushell-mode on opencl-c-mode org-fancy-priorities From 15d956211f47200a502ce31a687f3b3ddb275342 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 11 Jun 2025 04:59:20 -0700 Subject: [PATCH 279/334] feat: Add nushell support --- lisp/jcs-module.el | 3 ++- modules/lang/sh/config.el | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lisp/jcs-module.el b/lisp/jcs-module.el index 35e81235..88c9c1cf 100644 --- a/lisp/jcs-module.el +++ b/lisp/jcs-module.el @@ -168,7 +168,8 @@ (ssass-mode . "lang/sass") (scala-mode . "lang/scala") (scheme-mode . "lang/scheme") - ((sh-script fish-mode envrc) . "lang/sh") + (( sh-script fish-mode nushell-mode envrc) + . "lang/sh") (sql . "lang/sql") (swift-mode . "lang/swift") (tablegen-mode . "lang/tablegen") diff --git a/modules/lang/sh/config.el b/modules/lang/sh/config.el index 2af2d02c..a826cd72 100644 --- a/modules/lang/sh/config.el +++ b/modules/lang/sh/config.el @@ -51,7 +51,8 @@ ;; (@* "Hook" ) ;; -(jcs-add-hook '( sh-mode-hook fish-mode-hook envrc-mode-hook) +(jcs-add-hook '( sh-mode-hook fish-mode-hook nushell-mode-hook + envrc-mode-hook) (company-fuzzy-backend-add-before 'company-shell 'company-dabbrev) (add-hook 'before-save-hook #'jcs-sh--before-save nil t) @@ -59,6 +60,7 @@ ;; File Header (jcs-insert-header-if-valid '("[.]sh" "[.]fish" + "[.]nu" "[.]envrc") 'jcs-insert-sh-template)) From 3b9da082c4595b45f610345fe4f77117ff70b958 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 21 Jun 2025 21:09:34 -0700 Subject: [PATCH 280/334] feat: submodule --- snippets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snippets b/snippets index bbbebfeb..df510a06 160000 --- a/snippets +++ b/snippets @@ -1 +1 @@ -Subproject commit bbbebfeb669c3e25e3bb30231f063c6d47c87d38 +Subproject commit df510a065b12530efeff47f021af742cca7f7120 From 4b0e7dbd067b9bccbdc72137c03b335e67ac3146 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 21 Jun 2025 21:11:43 -0700 Subject: [PATCH 281/334] feat: submodule --- templates | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates b/templates index 62ce4973..fa7a98de 160000 --- a/templates +++ b/templates @@ -1 +1 @@ -Subproject commit 62ce4973d5aad2ad8ebc2eb0312e830518b484ae +Subproject commit fa7a98de62b2284c1c0d57aee37be9476ce9038e From 63e1cbf8bfbc8b9d4b43fa7614f1c46c7faec41f Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 21 Jun 2025 21:13:17 -0700 Subject: [PATCH 282/334] feat: Add odin packages --- lisp/jcs-package.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 26c29af8..7d4c9591 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -218,6 +218,7 @@ flycheck-ledger flycheck-nim flycheck-ocaml + flycheck-odin flycheck-package flycheck-relint flycheck-rust @@ -376,6 +377,7 @@ nov npm-mode nushell-mode + odin-mode on opencl-c-mode org-fancy-priorities From a69d5c11fb3707c92c47bbe29470e7a3eae8bce3 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 21 Jun 2025 21:13:26 -0700 Subject: [PATCH 283/334] feat: Configu Odin --- lisp/jcs-module.el | 1 + modules/lang/odin/config.el | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 modules/lang/odin/config.el diff --git a/lisp/jcs-module.el b/lisp/jcs-module.el index 88c9c1cf..96546b4f 100644 --- a/lisp/jcs-module.el +++ b/lisp/jcs-module.el @@ -148,6 +148,7 @@ (nix-mode . "lang/nix") (noir-mode . "lang/noir") (nxml-mode . "lang/xml") + (odin-mode . "lang/odin") (opascal . "lang/opascal") (org . "lang/org") (p4lang-mode . "lang/p4") diff --git a/modules/lang/odin/config.el b/modules/lang/odin/config.el new file mode 100644 index 00000000..7c3ad8d5 --- /dev/null +++ b/modules/lang/odin/config.el @@ -0,0 +1,23 @@ +;;; lang/odin/config.el -*- lexical-binding: t; -*- + +;; +;; (@* "Templates" ) +;; + +(file-header-defins jcs-insert-odin-template "odin" "default.txt" + "Odin file header format.") + +;; +;; (@* "Hook" ) +;; + +(jcs-add-hook 'odin-mode-hook + ;; File Header + (jcs-insert-header-if-valid '("[.]odin") + 'jcs-insert-odin-template)) + +;; +;; (@* "Extensions" ) +;; + +(use-package flycheck-odin :hook (flycheck-mode . flycheck-odin-setup)) From d70f30bc8d38fa409bdf8405e2199fbdacf26637 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 21 Jun 2025 21:14:26 -0700 Subject: [PATCH 284/334] docs: Add Odin to supported list --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c3c4cbeb..118aed37 100755 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ from this configuration. - LaTeX / LESS / Lisp / Lua - Magik / Makefile / Markdown / Mermaid / Mint - Nim / Nix / Noir -- Object Pascal (Delphi) / Objective-C / OCaml +- Object Pascal (Delphi) / Objective-C / OCaml / Odin - P4 / Pascal / Perl / PHP / PowerShell / Properties / Python - R / Racket / Ruby / Rust - Sass / Scala / SCSS / ShaderLab / Shell script / SQL / Swift From 1192d06f0e78fb917b52004a4340d429ae1be065 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 21 Jun 2025 21:19:46 -0700 Subject: [PATCH 285/334] chore: changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 45bae14b..456d5087 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * feat(fold): Add new package `fold-this` (5c9b423ba95419dcb8e81477570778739c1ec851) * feat(keys): Add support for `defaul-text-scale` (4453b907e5702989ca711c90b3244e04b8f873c6) * feat(lang): Add support for `Magik` language (5ab68e5a9deb1671a55c36ca81ea866217f2cfd2) +* feat(lang): Add `Odin` support (a69d5c11fb3707c92c47bbe29470e7a3eae8bce3) ## 9.1.0 > Released Jun 19, 2024 From b64d632e9aa1779df68db21a4b9fabe2cae76d6d Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 25 Jun 2025 07:51:44 -0700 Subject: [PATCH 286/334] feat: Add back button --- lisp/jcs-package.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 7d4c9591..d87932ee 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -57,6 +57,7 @@ auto-rename-tag auto-scroll-bar autotetris-mode + back-button balanced-windows banner-comment basic-mode From dc7d979c6f479cc1b37de3def536cddd9d9859c5 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 25 Jun 2025 07:52:00 -0700 Subject: [PATCH 287/334] Enable back-button in hook --- lisp/jcs-hook.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-hook.el b/lisp/jcs-hook.el index 97a54fca..df318b3d 100755 --- a/lisp/jcs-hook.el +++ b/lisp/jcs-hook.el @@ -58,6 +58,7 @@ (jcs-add-hook 'on-init-ui-hook (add-function :after after-focus-change-function #'jcs-hook--after-focus) (auto-scroll-bar-mode 1) + (back-button-mode 1) (centaur-tabs-mode 1) (context-menu-mode 1) (global-hl-line-mode 1) From b66e032bfa5e56d011ceff89c3d1a6387e24c381 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 25 Jun 2025 07:52:11 -0700 Subject: [PATCH 288/334] feat: configure back-button --- lisp/jcs-env.el | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lisp/jcs-env.el b/lisp/jcs-env.el index bec311d5..9fb3d604 100755 --- a/lisp/jcs-env.el +++ b/lisp/jcs-env.el @@ -102,6 +102,13 @@ auto-save-list-file-prefix nil auto-save-timeout 0) +;; +;;; Back Button + +(use-package back-button + :init + (setq back-button-no-wrap t)) + ;; ;;; Comments (use-package newcomment From 4da8f3dbcb3ade1598643e2de1ffae5c42b00a4f Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 25 Jun 2025 07:52:19 -0700 Subject: [PATCH 289/334] feat: Bind back button key --- lisp/jcs-key.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lisp/jcs-key.el b/lisp/jcs-key.el index b9b51096..5d23d5d5 100755 --- a/lisp/jcs-key.el +++ b/lisp/jcs-key.el @@ -173,6 +173,9 @@ ;;; Mouse ([mouse-2] . mouse-set-point) + ((kbd "") . back-button-global-forward) + ((kbd "") . back-button-global-backward) + ;;; Move Current Line Up or Down ([M-up] . move-text-up) ([M-down] . move-text-down) From 8d14f6e5ee7bde8bb409db79be4bb179e3c9725e Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 25 Jun 2025 07:54:05 -0700 Subject: [PATCH 290/334] docs: Update mouse keys --- docs/keybindings.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/keybindings.md b/docs/keybindings.md index 63d610c0..9bbba610 100755 --- a/docs/keybindings.md +++ b/docs/keybindings.md @@ -319,6 +319,8 @@ Here is the list of key bindings that are defined in this configuration. * Alt+g, l - Goto line number. * Alt+g, c - Goto character position. * Alt+g, p - Goto last change. +* Mouse-5 - Backward global mark ring. +* Mouse-4 - Forward global mark ring. #### Navigate Windows From d419a36c5082512a87c5be638639d2b19ee7afbc Mon Sep 17 00:00:00 2001 From: JenChieh Date: Wed, 25 Jun 2025 07:54:50 -0700 Subject: [PATCH 291/334] docs: changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 456d5087..14cfea97 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * feat(keys): Add support for `defaul-text-scale` (4453b907e5702989ca711c90b3244e04b8f873c6) * feat(lang): Add support for `Magik` language (5ab68e5a9deb1671a55c36ca81ea866217f2cfd2) * feat(lang): Add `Odin` support (a69d5c11fb3707c92c47bbe29470e7a3eae8bce3) +* feat(core): Add `back-button` (4da8f3dbcb3ade1598643e2de1ffae5c42b00a4f) ## 9.1.0 > Released Jun 19, 2024 From 0849886c1ccbb15b28f53c704dd194f0e5394f8f Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 30 Jun 2025 07:12:03 -0700 Subject: [PATCH 292/334] chore: ignore org buffer menu --- modules/emacs/buffer-menu/config.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/emacs/buffer-menu/config.el b/modules/emacs/buffer-menu/config.el index 213cc4a8..1c5760e0 100644 --- a/modules/emacs/buffer-menu/config.el +++ b/modules/emacs/buffer-menu/config.el @@ -74,7 +74,7 @@ "[*]wclock[*]" "[*]Clippy[*]" "[*]CMake Temporary[*]" - "[*]org-src-fontification" + "[*]org" "[*]ASCII[*]" "[*]e2ansi" "[*]npm:" "[*]hexo" From 43117d25570081bcfc671446160bf211d5cf9751 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 30 Jun 2025 07:12:16 -0700 Subject: [PATCH 293/334] chore(ui): Rename org tab --- modules/ui/tabs/config.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index 23ef7016..ce89e3f9 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -110,8 +110,9 @@ ;;; O ((jcs-member name '("*execrun" "*quickrun") 'regex) "Output") - ((memq major-mode '( org-mode org-agenda-mode diary-mode)) - "OrgMode") + ((or (memq major-mode '( org-mode org-agenda-mode diary-mode)) + (jcs-member name '("[*]org") 'regex)) + "Org") ;;; P ((jcs-member name '("[*]CPU-Profiler-Report" "[*]Memory-Profiler-Report" From c6cb80a2cbe90339d46386fc44e9df708548a522 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 5 Jul 2025 18:19:51 -0700 Subject: [PATCH 294/334] feat: Add flycheck-jest --- lisp/jcs-package.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index d87932ee..7590d5b9 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -214,6 +214,7 @@ flycheck-haskell flycheck-hl-todo flycheck-janet + flycheck-jest flycheck-kotlin flycheck-languagetool flycheck-ledger From d80f0e605b06e8cc5e42daf0fe4f75a0a5ff0004 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 5 Jul 2025 18:20:02 -0700 Subject: [PATCH 295/334] feat: Configure flycheck-jest --- modules/lang/js/config.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/lang/js/config.el b/modules/lang/js/config.el index 2e7ffa66..92057b9b 100644 --- a/modules/lang/js/config.el +++ b/modules/lang/js/config.el @@ -37,3 +37,5 @@ ;; (use-package flycheck-deno :hook (flycheck-mode . flycheck-deno-setup)) + +(use-package flycheck-jest :hook (flycheck-mode . flycheck-jest-setup)) From 22ec2a430296dd168257029dc16df36e0d394e4a Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 5 Jul 2025 18:28:26 -0700 Subject: [PATCH 296/334] feat: Add flymake yamllint --- lisp/jcs-package.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 7590d5b9..9e8102d9 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -237,6 +237,7 @@ flymake-racket flymake-ruby flymake-shell + flymake-yamllint fof font-lock-ext forge From f52dbf0efeee7e93c7fced810658db8856020b1d Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 5 Jul 2025 18:28:33 -0700 Subject: [PATCH 297/334] feat: configure flymake yamllint --- modules/lang/yaml/config.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/lang/yaml/config.el b/modules/lang/yaml/config.el index 89d9f1c2..9d35ca06 100644 --- a/modules/lang/yaml/config.el +++ b/modules/lang/yaml/config.el @@ -34,3 +34,6 @@ (use-package gitlab-ci-mode-flycheck :hook (flycheck-mode . gitlab-ci-mode-flycheck-enable)) + +(use-package flymake-yamllint + :hook (flymake-mode . flymake-yamllint-setup)) From 8c80e304d51e740d6fc683a82f80d6fb58f115ff Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 5 Jul 2025 18:33:14 -0700 Subject: [PATCH 298/334] feat: Add markdown lint --- lisp/jcs-package.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 9e8102d9..8de22cf0 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -232,6 +232,7 @@ flymake-haml flymake-less flymake-lua + flymake-markdownlint flymake-nasm flymake-php flymake-racket From 72131a9868c293c11fc6d0a5109e7c15236c4b12 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Sat, 5 Jul 2025 18:33:22 -0700 Subject: [PATCH 299/334] feat: configure markdown lint --- modules/lang/markdown/config.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/lang/markdown/config.el b/modules/lang/markdown/config.el index e56f8b4d..17ed4d6b 100644 --- a/modules/lang/markdown/config.el +++ b/modules/lang/markdown/config.el @@ -63,3 +63,6 @@ (use-package impatient-showdown :init (setq impatient-showdown-flavor 'github)) + +(use-package flymake-markdownlint + :hook (flymake-mode . flymake-markdownlint-setup)) From a5388bdf23342246605894b6636486e22758ce3f Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 7 Jul 2025 04:20:33 -0700 Subject: [PATCH 300/334] feat: configure grep --- modules/ui/tabs/config.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index ce89e3f9..37afc88f 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -135,6 +135,9 @@ "tree-sitter-tree:") 'regex) "Tree-sitter") +;;; U + ((memq major-mode '( grep-mode)) + "Utilities") ;;; V ((jcs-member name '("[*]vc" "[*]VC-history[*]" From 3de28a59205fe2d7abeed7394310c77c347a8133 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 7 Jul 2025 04:20:48 -0700 Subject: [PATCH 301/334] feat: avoid grep being shown in the buffer list --- modules/emacs/buffer-menu/config.el | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/emacs/buffer-menu/config.el b/modules/emacs/buffer-menu/config.el index 1c5760e0..ca44e7f0 100644 --- a/modules/emacs/buffer-menu/config.el +++ b/modules/emacs/buffer-menu/config.el @@ -85,6 +85,7 @@ "completion-list-mode" "compilation-mode" "comint-mode" "dired-mode" + "grep-mode" "help-mode" "custom-mode" "list-environment-mode" "list-unicode-display-mode" From 33c4c0f1aed9ca066cdb69f2616c7701926e3c90 Mon Sep 17 00:00:00 2001 From: JenChieh Date: Mon, 7 Jul 2025 12:01:16 -0700 Subject: [PATCH 302/334] feat(ui): Enable async diff-hl --- modules/ui/vc-gutter/config.el | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/ui/vc-gutter/config.el b/modules/ui/vc-gutter/config.el index 96259d22..2d07e299 100644 --- a/modules/ui/vc-gutter/config.el +++ b/modules/ui/vc-gutter/config.el @@ -9,7 +9,10 @@ :init (setq diff-hl-side 'right diff-hl-draw-borders nil - diff-hl-flydiff-delay 0.5 + ;; PERF: Slightly more conservative delay before updating the diff + diff-hl-flydiff-delay 0.5 ; default: 0.3 + ;; PERF: don't block Emacs when updating vc gutter + diff-hl-update-async t ;; UX: get realtime feedback in diffs after staging/unstaging hunks diff-hl-show-staged-changes nil)) From 264ecb426e2509ddbfe800e9b6ab4cb3e37247ea Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 11 Jul 2025 03:22:13 -0700 Subject: [PATCH 303/334] Update CHANGELOG.md --- CHANGELOG.md | 79 +++++++++++++++++++++++++++++++++++----------------- 1 file changed, 53 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 14cfea97..b7c00ab7 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,32 +8,59 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how ## 9.1.1 (Unreleased) > Released N/A -* feat: Replace must kill buffer list with derived mode (c407b9859489c5b31697c9f61871b9e8254baaf7) -* feat: Add new package `responsive-window` (0af7dfcc565b3813ac8776c6f75bf15fc5c74ea5) -* fix: Record the window starting point instead first visible line (62039e725e816ad381b6a8d126bb28be22d65101) -* fix: Force load project elisp files (b663d26669d35c69d0c99dc3a8353946fd2cb7cf) -* fix: Load theme before `on` prevent potential UI package's errors (0c995aa207eb820d7b0d0778aa23da2c96b12e5f) -* feat: Add `Coq` support (c8382d9103f98bc4d1015c48bddca0b004018a92) -* feat: Add `GDShader` support (fdb485a4adb0d29284ca93de9647e47b1bf7f94b) -* feat: Add `Janet` support (2738bdc83f2b2d00411e9f5bb489087d1ae27c42) -* feat(lang): Add `geiser` for better `Scheme` support (b981c72a0942ca13a4f9fc0da7edcfd4653482fd) -* feat: Configure `eldoc-diffstats` (cb2afb004e92d88b54db1506da54d2f43bc9a87f) -* feat: Add `magit` entry functions (8f9686563559f7b209c289fe24e5d2a6ea9f7c15) -* fix: Annoying `when-let` deprecation (1e4ca284a4e28d9f333fb3b6337dfdcbb1008a60) -* fix: Annoying `if-let` deprecation (4a002dfb13987d967123e1a9c5ba8ed9c80d2fce) -* feat(dired): Make list directories first in `dired` (a502ee445dcfa9d83eff262f9381897044e9c9fd) -* feat(ui) Enable `sideline` by default (ebf0537358f3de9f8204f4421b4fef96e487c6d5) -* feat(vc): Add more `magit` plugins (e47a8d0e873001d769eb39c3e85de9fb0a591897) -* perf(lsp): Add `lsp-smart-req` (fdcddb59e7558346d3dfe80639e8d91f4d7f5890) -* feat(vc): Use `magit` built-in functionalities to display file icons (7d249ad694a58239d3247b673f8e15a92adc4a18) -* feat(ui): Add mail tab group (e0ec5c24c7902f862d4793ffdf8fece6bb14076b) -* feat(fold): Add `savefold` for persistent folding behaviors (98d0f498ccb2d16326f8814c7d4d36a4e2279d51) -* feat(debugger): Combine `debugger` and `run` functionality (2d4048562fc019da0acc6bbc55242d1767cfc90d) -* feat(fold): Add new package `fold-this` (5c9b423ba95419dcb8e81477570778739c1ec851) -* feat(keys): Add support for `defaul-text-scale` (4453b907e5702989ca711c90b3244e04b8f873c6) -* feat(lang): Add support for `Magik` language (5ab68e5a9deb1671a55c36ca81ea866217f2cfd2) -* feat(lang): Add `Odin` support (a69d5c11fb3707c92c47bbe29470e7a3eae8bce3) -* feat(core): Add `back-button` (4da8f3dbcb3ade1598643e2de1ffae5c42b00a4f) +* feat: Replace must kill buffer list with derived mode ([c407b98][]) +* feat: Add new package `responsive-window` ([0af7dfc][]) +* fix: Record the window starting point instead first visible line ([62039e7][]) +* fix: Force load project elisp files ([b663d26][]) +* fix: Load theme before `on` prevent potential UI package's errors ([0c995aa][]) +* feat: Add `Coq` support ([c8382d9][]) +* feat: Add `GDShader` support ([fdb485a][]) +* feat: Add `Janet` support ([2738bdc][]) +* feat(lang): Add `geiser` for better `Scheme` support ([b981c72][]) +* feat: Configure `eldoc-diffstats` ([cb2afb0][]) +* feat: Add `magit` entry functions ([8f96865][]) +* fix: Annoying `when-let` deprecation ([1e4ca28][]) +* fix: Annoying `if-let` deprecation ([4a002df][]) +* feat(dired): Make list directories first in `dired` ([a502ee4][]) +* feat(ui) Enable `sideline` by default ([ebf0537][]) +* feat(vc): Add more `magit` plugins ([e47a8d0][]) +* perf(lsp): Add `lsp-smart-req` ([fdcddb5][]) +* feat(vc): Use `magit` built-in functionalities to display file icons ([7d249ad][]) +* feat(ui): Add mail tab group ([e0ec5c2][]) +* feat(fold): Add `savefold` for persistent folding behaviors ([98d0f49][]) +* feat(debugger): Combine `debugger` and `run` functionality ([2d40485][]) +* feat(fold): Add new package `fold-this` ([5c9b423][]) +* feat(keys): Add support for `defaul-text-scale` ([4453b90][]) +* feat(lang): Add support for `Magik` language ([5ab68e5][]) +* feat(lang): Add `Odin` support ([a69d5c1][]) +* feat(core): Add `back-button` ([4da8f3d][]) + +[c407b98]: ../../commit/c407b9859489c5b31697c9f61871b9e8254baaf7 +[0af7dfc]: ../../commit/0af7dfcc565b3813ac8776c6f75bf15fc5c74ea5 +[62039e7]: ../../commit/62039e725e816ad381b6a8d126bb28be22d65101 +[b663d26]: ../../commit/b663d26669d35c69d0c99dc3a8353946fd2cb7cf +[0c995aa]: ../../commit/0c995aa207eb820d7b0d0778aa23da2c96b12e5f +[c8382d9]: ../../commit/c8382d9103f98bc4d1015c48bddca0b004018a92 +[fdb485a]: ../../commit/fdb485a4adb0d29284ca93de9647e47b1bf7f94b +[2738bdc]: ../../commit/2738bdc83f2b2d00411e9f5bb489087d1ae27c42 +[b981c72]: ../../commit/b981c72a0942ca13a4f9fc0da7edcfd4653482fd +[cb2afb0]: ../../commit/cb2afb004e92d88b54db1506da54d2f43bc9a87f +[8f96865]: ../../commit/8f9686563559f7b209c289fe24e5d2a6ea9f7c15 +[1e4ca28]: ../../commit/1e4ca284a4e28d9f333fb3b6337dfdcbb1008a60 +[4a002df]: ../../commit/4a002dfb13987d967123e1a9c5ba8ed9c80d2fce +[a502ee4]: ../../commit/a502ee445dcfa9d83eff262f9381897044e9c9fd +[ebf0537]: ../../commit/ebf0537358f3de9f8204f4421b4fef96e487c6d5 +[e47a8d0]: ../../commit/e47a8d0e873001d769eb39c3e85de9fb0a591897 +[fdcddb5]: ../../commit/fdcddb59e7558346d3dfe80639e8d91f4d7f5890 +[7d249ad]: ../../commit/7d249ad694a58239d3247b673f8e15a92adc4a18 +[e0ec5c2]: ../../commit/e0ec5c24c7902f862d4793ffdf8fece6bb14076b +[98d0f49]: ../../commit/98d0f498ccb2d16326f8814c7d4d36a4e2279d51 +[2d40485]: ../../commit/2d4048562fc019da0acc6bbc55242d1767cfc90d +[5c9b423]: ../../commit/5c9b423ba95419dcb8e81477570778739c1ec851 +[4453b90]: ../../commit/4453b907e5702989ca711c90b3244e04b8f873c6 +[5ab68e5]: ../../commit/5ab68e5a9deb1671a55c36ca81ea866217f2cfd2 +[a69d5c1]: ../../commit/a69d5c11fb3707c92c47bbe29470e7a3eae8bce3 +[4da8f3d]: ../../commit/4da8f3dbcb3ade1598643e2de1ffae5c42b00a4f ## 9.1.0 > Released Jun 19, 2024 From 5deac80eac0953781c45d8987a3d678d17dc1397 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 11 Jul 2025 03:24:01 -0700 Subject: [PATCH 304/334] Update CHANGELOG.md --- CHANGELOG.md | 87 ++++++++++++++++++++++++++++++++++------------------ 1 file changed, 58 insertions(+), 29 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b7c00ab7..13fc3edf 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -65,35 +65,64 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how ## 9.1.0 > Released Jun 19, 2024 -* Add FASM support (e049b015df8a52d10271e3a41aeeca631296a7d5) -* Remove package `topsy` (77c506758eaca4621cf1a92e9107e5d279721827) -* fix: Apply workaround for `highlight-indent-guides` (e153bd8fd60ec3f6ed11cd8494e94feb7d1cb7c3) -* feat: Add Tramp support (8535af30d96e173df46515f03e91d50e472dca5e) -* Add PO file support (59fa6ba7d8f30be3f16fe849f41fd3c21a44a852) -* Remove built-in log module, use `ic` instead (70ee1d002ff97cb765b3043e7451f2aeb831e51c) -* Extract template module to external package (74a2cb84a0fd322d6b4cb73c7a1c0c68cb135f42) -* Add `.envrc` support (3ff057fc9cfa0c931129e6f5496a2eae4211a34e) -* Update debugging key bindings (f2ecb5dcb94d8abd373d8a3e3c39049029a65a62) -* Add QSS support (71a175c4adcfd913131030fb1deb5d2e5f9cc4f0) -* feat: Add and configure Tex completion packages (31deaa9a9850ae904b9325af2b39dc5a57d0d82b) -* refactor: Move message clean settings to its modules (727bc53d323580215b7ad3a5cb8b5b84c1b14e3f) -* feat: Support TailwindCSS completion (a3b065dba11f27566fce2e24492157138d775646) -* feat: Support Bootstrap completion (a3b065dba11f27566fce2e24492157138d775646) -* feat: Add Svelte support (e586d9e52d06a054faa1829ba0cf69c128481c34) -* feat: Add ziglint (9856bbf5530177613e46127b67054d3925f99a91) -* feat: Add module util (12f7d294e66df3eddc6bbec721ef4196144dcf8f) -* feat: Support `daemon` (cdb7187af574c6aec3ff09010d59fe2a8814f43b) -* chore(sideline): Add display mode config (32324992b47b2126241a9ab84410ba7cfdac3752) -* chore(dashboard): Default to cycle dashboard sections (1956896dd3f85e1fafb980c8aff5dbf01b1a2507) -* fix(buffer-menu): Ensure `buffer-menu` is clean (548ce7ef47490fa8d0b82b838cc4f8a1e739494b) -* chore(sideline): Configure `sideline-eglot` (def906559bf90920ff7f2f2df4b8f36dd523230a) -* chore(checker): Mute display diagnostic (675b982533c978624ff5e745d1621edcb7a0d994) -* chore: Add `guard-lf` package (d8616223fb07503dffb3ec4ca75361b203ab5b76) -* feat: Notify the user when `indent-tabs-mode` got activated (7b4eb11cf30fae0309445fa86ac8749a1f276ed8) -* feat: feat: Replace package `doxygen-asterisk` with `auto-close-block` (2d56f447ac48f89654fbd93872a32b83f8e40b3c) -* fix(vc-gutter): Ensure `diff-hl` is updated in all valid buffers (53802208c3251cf0f7bd2a0043f34c133a21ee1a) -* feat(rgb): Replace `rainbow-mode` with `colorful-mode` (695358cbb6475c54aba711615d6f7db61fc9c3fc) -* feat(tools): Configure `sqlite-mode` (73dc3b0adea778ba5c933cb0c203ec3e82bd6979) +* feat: Add FASM support ([e049b01][]) +* chore: Remove package `topsy` ([77c5067][]) +* fix: Apply workaround for `highlight-indent-guides` ([e153bd8][]) +* feat: Add Tramp support ([8535af3][]) +* feat: Add PO file support ([59fa6ba][]) +* refactor: Remove built-in log module, use `ic` instead ([70ee1d0][]) +* refactor: Extract template module to external package ([74a2cb8][]) +* feat: Add `.envrc` support ([3ff057f][]) +* chore: Update debugging key bindings ([f2ecb5d][]) +* feat: Add QSS support ([71a175c][]) +* feat: Add and configure Tex completion packages ([31deaa9][]) +* refactor: Move message clean settings to its modules ([727bc53][]) +* feat: Support TailwindCSS completion ([a3b065d][]) +* feat: Support Bootstrap completion ([a3b065d][]) +* feat: Add Svelte support ([e586d9e][]) +* feat: Add ziglint ([9856bbf][]) +* feat: Add module util ([12f7d29][]) +* feat: Support `daemon` ([cdb7187][]) +* chore(sideline): Add display mode config ([3232499][]) +* chore(dashboard): Default to cycle dashboard sections ([1956896][]) +* fix(buffer-menu): Ensure `buffer-menu` is clean ([548ce7e][]) +* chore(sideline): Configure `sideline-eglot` ([def9065][]) +* chore(checker): Mute display diagnostic ([675b982][]) +* chore: Add `guard-lf` package ([d861622][]) +* feat: Notify the user when `indent-tabs-mode` got activated ([7b4eb11][]) +* feat: Replace package `doxygen-asterisk` with `auto-close-block` ([2d56f44][]) +* fix(vc-gutter): Ensure `diff-hl` is updated in all valid buffers ([5380220][]) +* feat(rgb): Replace `rainbow-mode` with `colorful-mode` ([695358c][]) +* feat(tools): Configure `sqlite-mode` ([73dc3b0][]) + +[e049b01]: ../../commit/e049b015df8a52d10271e3a41aeeca631296a7d5 +[77c5067]: ../../commit/77c506758eaca4621cf1a92e9107e5d279721827 +[e153bd8]: ../../commit/e153bd8fd60ec3f6ed11cd8494e94feb7d1cb7c3 +[8535af3]: ../../commit/8535af30d96e173df46515f03e91d50e472dca5e +[59fa6ba]: ../../commit/59fa6ba7d8f30be3f16fe849f41fd3c21a44a852 +[70ee1d0]: ../../commit/70ee1d002ff97cb765b3043e7451f2aeb831e51c +[74a2cb8]: ../../commit/74a2cb84a0fd322d6b4cb73c7a1c0c68cb135f42 +[3ff057f]: ../../commit/3ff057fc9cfa0c931129e6f5496a2eae4211a34e +[f2ecb5d]: ../../commit/f2ecb5dcb94d8abd373d8a3e3c39049029a65a62 +[71a175c]: ../../commit/71a175c4adcfd913131030fb1deb5d2e5f9cc4f0 +[31deaa9]: ../../commit/31deaa9a9850ae904b9325af2b39dc5a57d0d82b +[727bc53]: ../../commit/727bc53d323580215b7ad3a5cb8b5b84c1b14e3f +[a3b065d]: ../../commit/a3b065dba11f27566fce2e24492157138d775646 +[e586d9e]: ../../commit/e586d9e52d06a054faa1829ba0cf69c128481c34 +[9856bbf]: ../../commit/9856bbf5530177613e46127b67054d3925f99a91 +[12f7d29]: ../../commit/12f7d294e66df3eddc6bbec721ef4196144dcf8f +[cdb7187]: ../../commit/cdb7187af574c6aec3ff09010d59fe2a8814f43b +[3232499]: ../../commit/32324992b47b2126241a9ab84410ba7cfdac3752 +[1956896]: ../../commit/1956896dd3f85e1fafb980c8aff5dbf01b1a2507 +[548ce7e]: ../../commit/548ce7ef47490fa8d0b82b838cc4f8a1e739494b +[def9065]: ../../commit/def906559bf90920ff7f2f2df4b8f36dd523230a +[675b982]: ../../commit/675b982533c978624ff5e745d1621edcb7a0d994 +[d861622]: ../../commit/d8616223fb07503dffb3ec4ca75361b203ab5b76 +[7b4eb11]: ../../commit/7b4eb11cf30fae0309445fa86ac8749a1f276ed8 +[2d56f44]: ../../commit/2d56f447ac48f89654fbd93872a32b83f8e40b3c +[5380220]: ../../commit/53802208c3251cf0f7bd2a0043f34c133a21ee1a +[695358c]: ../../commit/695358cbb6475c54aba711615d6f7db61fc9c3fc +[73dc3b0]: ../../commit/73dc3b0adea778ba5c933cb0c203ec3e82bd6979 ## 9.0.1 > Released Sep 20, 2023 From 47ed8aab3f00570b1fbc5a5ddaeb128148298a15 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 11 Jul 2025 03:26:30 -0700 Subject: [PATCH 305/334] Update CHANGELOG.md --- CHANGELOG.md | 107 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 71 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 13fc3edf..6826d6cc 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -127,42 +127,77 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how ## 9.0.1 > Released Sep 20, 2023 -* Add new package `makefile-executor` (e301333ef7585189614bb1fed163caab2e4a0973) -* Add new package `codegpt` (443b2e1312368201a8a15d64355e7c9aaf5b8958) -* Add and config new package `goto-last-change` (71d0c3dfa0636fc55cc1c023e6383d5946b19e3c) -* Add new package `flycheck-clang-analyzer` (0ea36feb652c0ebe59ab5b80d5739cb23cb4b52b) -* Add new package `codemetrics` (51032ef78f5b9827ee76c5c48832974c9bd9cf73) -* Bind Shift+return to insert `newline` in minibuffer (41c159ba7d5630fb8e7e235fc8968001f04cbb15) -* Ask CMake file-header template to differentiate `default`, `root`, and `subdirectory` (71c9bc604b57cb2379606a0b6bc12c42bb79ded7) -* Update auth-source logic for more general use (8681fb6800d4b4090c7a84dfd9d927035e2bb66a) -* Add `company-dict` (1b24a4ddd58943fb37010b7700dac32c8d54bea1) -* Add nerd-icons support (3ae70b96937dedae3b1fe8fc9edf52ad340795d6) -* Enable comment empty lines by default (2040d77e956cc3c1fb55ec0dae7dfe6c36c2381b) -* Fix cannot re-connect to language server issue (362a96418032da4244c05c810031ed74bc7b25c4) -* Add dashboard's navigator (d81fce7fb699f1866839c0bd409475ab758721d4) -* Fix `indent-guides` is not obvious in 29.x (8456bd051b096af816cd9c0840b6980c21d94c5e) -* Add `sly` to support common lisp development (fa0afd2d79b8b464f4f2413fcd93978ef168402f) -* Add support for OpenCL (d5723c34ac53c7983cdfb686884478bcacc4d4a6) -* Add support for CUDA (d5723c34ac53c7983cdfb686884478bcacc4d4a6) -* Use `context-menu-mode` instead of `right-click-context` (a7e563ea23121dd6ba340eb8fd8b9daed394f019) -* Add more support for Clojure language (b84287bde0315c021f73009fcd67e2a0d348d64f) -* Add breadcrumb mode (a81fcc65af7357eeb4babb58b97b567c5a453b01) -* Use prog mode settings for `haskell-cabal-mode` (fd8dfb5108882e5fc5a1ad74b129e35c3e1ae762) -* Add support for P4 (3b16789978d380b6be75f465fa2a3d3dbd9610b1) -* Add company support for PHP (30c8b00169eefb866df062095c1bf33b6d0729ec) -* Add company support for Perl (98d4e1494364ca49bf3cd370a659957674eda100) -* Configure for beancount (40ee14e541453e684d1f836dcc2fa47abda9ece9) -* Add support for F* (1dc616adae9bdcbf1810058b3d078f831be5cd34) -* Add support for Hylang (df2337bfb3ef64a3c2e9cbd5422df7eb66b9e698) -* Add support for Scheme (6fe51f46592cd3e6ceee1ae274b086b046dc93b0) -* Add support for ledger (5cc7ba8abad0864f9d435519bb35bf45b32d2dcb) -* Add support for SML (031289bf682aa956cd322e1e1078408f0d79e8ce) -* Use built-in on first project hook (84a7695b668debed6fb59bbd5313ff9be897d6b7) -* Add LaTex support (7fbb631c54b82aa43a80c4ad7733143c89773ff1) -* Add Noir support (7fbb631c54b82aa43a80c4ad7733143c89773ff1) -* Enable jump to button in Tree-Sitter debug mode (02f5172c7d061732bb0f154ded5898c1baaf16b9) -* Add Windows Menu's key bindings (0cc2bb8d938f6a549cc3ae9a15ba4776010c6fa8) -* Add package `chatgpt-sideline` (65409fc4c68254b18ce209e64fcf74b016e2413e) +* feat: Add new package `makefile-executor` ([e301333][]) +* feat: Add new package `codegpt` ([443b2e1][]) +* feat: Add and config new package `goto-last-change` ([71d0c3d][]) +* feat: Add new package `flycheck-clang-analyzer` ([0ea36fe][]) +* feat: Add new package `codemetrics` ([51032ef][]) +* feat(minibuffer): Bind Shift+Return to insert newline ([41c159b][]) +* feat(cmake): Differentiate file-header template types ([71c9bc6][]) +* feat(auth): Update `auth-source` logic for general use ([8681fb6][]) +* feat: Add `company-dict` ([1b24a4d][]) +* feat(ui): Add nerd-icons support ([3ae70b9][]) +* feat: Enable comment empty lines by default ([2040d77][]) +* fix(lsp): Cannot reconnect to language server ([362a964][]) +* feat(dashboard): Add dashboard navigator ([d81fce7][]) +* fix(ui): `indent-guides` visibility in Emacs 29 ([8456bd0][]) +* feat: Add `sly` for Common Lisp development ([fa0afd2][]) +* feat(lang): Add OpenCL support ([d5723c3][]) +* feat(lang): Add CUDA support ([d5723c3][]) +* feat(ui): Use `context-menu-mode` over `right-click-context` ([a7e563e][]) +* feat(lang): Improve Clojure support ([b84287b][]) +* feat(ui): Add breadcrumb mode ([a81fcc6][]) +* feat(lang): Use `prog-mode` settings in `haskell-cabal-mode` ([fd8dfb5][]) +* feat(lang): Add support for P4 ([3b16789][]) +* feat(lang): Add `company` support for PHP ([30c8b00][]) +* feat(lang): Add `company` support for Perl ([98d4e14][]) +* feat(finance): Configure for beancount ([40ee14e][]) +* feat(lang): Add support for F* ([1dc616a][]) +* feat(lang): Add support for Hylang ([df2337b][]) +* feat(lang): Add support for Scheme ([6fe51f4][]) +* feat(finance): Add support for ledger ([5cc7ba8][]) +* feat(lang): Add support for SML ([031289b][]) +* feat(core): Use built-in first project hook ([84a7695][]) +* feat(lang): Add LaTeX support ([7fbb631][]) +* feat(ui): Add Noir support ([7fbb631][]) +* feat(ui): Enable jump to button in Tree-Sitter debug mode ([02f5172][]) +* feat(keys): Add Windows Menu key bindings ([0cc2bb8][]) +* feat: Add package `chatgpt-sideline` ([65409fc][]) + +[e301333]: ../../commit/e301333ef7585189614bb1fed163caab2e4a0973 +[443b2e1]: ../../commit/443b2e1312368201a8a15d64355e7c9aaf5b8958 +[71d0c3d]: ../../commit/71d0c3dfa0636fc55cc1c023e6383d5946b19e3c +[0ea36fe]: ../../commit/0ea36feb652c0ebe59ab5b80d5739cb23cb4b52b +[51032ef]: ../../commit/51032ef78f5b9827ee76c5c48832974c9bd9cf73 +[41c159b]: ../../commit/41c159ba7d5630fb8e7e235fc8968001f04cbb15 +[71c9bc6]: ../../commit/71c9bc604b57cb2379606a0b6bc12c42bb79ded7 +[8681fb6]: ../../commit/8681fb6800d4b4090c7a84dfd9d927035e2bb66a +[1b24a4d]: ../../commit/1b24a4ddd58943fb37010b7700dac32c8d54bea1 +[3ae70b9]: ../../commit/3ae70b96937dedae3b1fe8fc9edf52ad340795d6 +[2040d77]: ../../commit/2040d77e956cc3c1fb55ec0dae7dfe6c36c2381b +[362a964]: ../../commit/362a96418032da4244c05c810031ed74bc7b25c4 +[d81fce7]: ../../commit/d81fce7fb699f1866839c0bd409475ab758721d4 +[8456bd0]: ../../commit/8456bd051b096af816cd9c0840b6980c21d94c5e +[fa0afd2]: ../../commit/fa0afd2d79b8b464f4f2413fcd93978ef168402f +[d5723c3]: ../../commit/d5723c34ac53c7983cdfb686884478bcacc4d4a6 +[a7e563e]: ../../commit/a7e563ea23121dd6ba340eb8fd8b9daed394f019 +[b84287b]: ../../commit/b84287bde0315c021f73009fcd67e2a0d348d64f +[a81fcc6]: ../../commit/a81fcc65af7357eeb4babb58b97b567c5a453b01 +[fd8dfb5]: ../../commit/fd8dfb5108882e5fc5a1ad74b129e35c3e1ae762 +[3b16789]: ../../commit/3b16789978d380b6be75f465fa2a3d3dbd9610b1 +[30c8b00]: ../../commit/30c8b00169eefb866df062095c1bf33b6d0729ec +[98d4e14]: ../../commit/98d4e1494364ca49bf3cd370a659957674eda100 +[40ee14e]: ../../commit/40ee14e541453e684d1f836dcc2fa47abda9ece9 +[1dc616a]: ../../commit/1dc616adae9bdcbf1810058b3d078f831be5cd34 +[df2337b]: ../../commit/df2337bfb3ef64a3c2e9cbd5422df7eb66b9e698 +[6fe51f4]: ../../commit/6fe51f46592cd3e6ceee1ae274b086b046dc93b0 +[5cc7ba8]: ../../commit/5cc7ba8abad0864f9d435519bb35bf45b32d2dcb +[031289b]: ../../commit/031289bf682aa956cd322e1e1078408f0d79e8ce +[84a7695]: ../../commit/84a7695b668debed6fb59bbd5313ff9be897d6b7 +[7fbb631]: ../../commit/7fbb631c54b82aa43a80c4ad7733143c89773ff1 +[02f5172]: ../../commit/02f5172c7d061732bb0f154ded5898c1baaf16b9 +[0cc2bb8]: ../../commit/0cc2bb8d938f6a549cc3ae9a15ba4776010c6fa8 +[65409fc]: ../../commit/65409fc4c68254b18ce209e64fcf74b016e2413e ## 9.0.0 > Released Jan 01, 2023 From a107bceb63d2d9c82e6905beef6082c43cadc432 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 11 Jul 2025 03:34:30 -0700 Subject: [PATCH 306/334] Update CHANGELOG.md --- CHANGELOG.md | 288 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 192 insertions(+), 96 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6826d6cc..75f462da 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -202,102 +202,198 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how ## 9.0.0 > Released Jan 01, 2023 -* Add new package `company-kaomoji` (1cc6b70e9ab4ae3fc893482c1d38986da6b32e87) -* Refactor `ts-fold-indicators` face function and get queries function (27e614884c1cb84d8f832280d253d387cdde99b4) -* Add OCaml support (ddaaf11b98c88c709fecd5db8b8214a63e1bb00f) -* Add support for `elfeed` (7a3c3ad99bea5088da2c7d681552f55914b37934) -* Cancel `echo-bar` right padding by default (75416a77c6bb0eef90b71a2ee09ab42202bc7bb5) -* Add new packages `org-superstar` and `org-fancy-priorities` (695f5f46e611de1529c6bbd57cd251386616d2f7) -* Add new package `hammy` (8ea21aa67e98efd9a8eb846e6b908fb500afab52) -* Enable `display-fill-column-indicator-mode` in `text-mode` by default (5283fd976574ecd322e77556bcd0b6790eed7403) -* Enhance experience with `org-superstars` (5c240a626fe60685f2768eb17a6dbfcc61452134) -* Add new package `sideline-color` (6c472aa4c92069551a0707760e3d41c12dcd7411) -* Add support for `haml-mode` (b50bbb26cfddab3e16d849f65e33894ec5a70177) -* Use package-menu to upgrade packages instead of the prompt (5903e431921a10f023247ba59ee78eaaa59fc961) -* Extract message utility functions to separate module, `msgu` (d3957bec1ffd3668a5f8861644f6ec2953cd3781) -* Fix does upgradable menu after package list is refreshed (09d78404f7e8f0bec64d4df78ae9f90e7c6069d9) -* Add clear filter key for `package-menu` mode (bf36721805a48b6319bd5eb1b9064129af293560) -* Load `eask-api` when in valid Eask related project (5644b5128cb1f132b9b552cc745377be8528b435) -* Add new package `editorconfig-generate` (afd3fa07135fd9154b551fffb20822316cf4e3d7) -* Bind key `C-M-k` to `kill-this-buffer` (758c464dfe76bad0053ce82f4064f382a1ae4ac3) -* Remove `buffer-menu` feature on display project name (74feaa938d4be1667bab1c1f68308f8c6a250208) -* Use macro to define `file-header` insertion functions (e5e200684f25325c70906a53a84f526328bc6fbf) -* Re-define file header source with utility macro (ca4d8e49ba80f78bd34ff610a442c8a8bf7bc097) -* Turn `completion-ignore-case` on by default (b94542cb51736f26a3842753bbc268116fa4ba06) -* Add new package `minimap` (ae9ef5a0d93bf8f924c8572d00f026dace2079a3) -* Replace package `docstr` with `ts-docstr` for better parsing capability (ee85ba4b01401707461ec695038f2ee4cc175f74) -* Add new package `highlight-doxygen` (ee85ba4b01401707461ec695038f2ee4cc175f74) -* Enable `minibuffer-depth-indicate-mode` by default (83ecd6c2b256d2fa0dd3b6fa64236ad5aab2843f) -* Fix typescript insertion with `ts-docstr` (ec8a5592e8f4e6ba707d36218461e2f0a9329822) -* Add new package `toggle-profiler` (eecf0323d3af8fdcc2b3c2c8e8e62dd78774a3b7) -* Bind new key to command `keyboard-escape-quit` (3ce9d3ff4ae965a31f1855bf6f9b11c31e2576be) -* Bind new key to command `toggle-profiler` (f49dfeb07c1e0d3d879cb3acdfb4a5ab892326f2) -* Bind new key to command `ts-docstr-ask` (9836e3d76afeadcb75c0d7378d38b209dda50e82) -* Add new packages `gitlab-ci-mode` and `gitlab-ci-mode-flycheck` (984fc836ecb832e047409a1efa03c806205a7c9e) -* Remove unnecessary config to `auto-mode-alist` (0dad6227b3372d530f55032726693ab41541e8a7) -* Add new package `sln-mode` to handle `*.sln` file (673a2635efccd1e5258a157e738f8ebdb35f567a) -* Add new font `Symbola.ttf` for Windows' unicode display (98a74550b9edfcbe30d403418263b6594582652c) -* Extract undo/redo module to external package `undo-tree-vf` (391bb1e4b1416c1c7f54a19f07c6b83ccd3e4524) -* Use built-in `bolp` and `eolp` functions instead (0504aa597efd52e9efbefe3e2338349cc5d458fc) -* Extract parent directory not found when file creation module to external package `ff-guard` (008592968fea55e925c0bbe8e5412b93a4dde7c3) -* Add new package `prettier` (a2af4f74eea9e6b7861db8babb1de2a4909247a2) -* Add new package `vs-electric-spacing` (a04369b5ebfa1db7a47bcf156f80614959685190) -* Add new package `terminal-here` (56ad79fdf537fc1d7380ff4adc71dea5051e00ac) -* Add new package `quickrun` (e13899b04affe5157a0cacff52b24c1925c293f4) -* Extract select file in project/pwd to external `ffap` (e9b7c045a2cbd2dfdfc4f519e24a973a0807410b) -* Extract [@cmuratori](https://github.com/cmuratori)'s run/make script feature to external `execrun` (83d90d53e5324e22e5fbf3c174487ddd22fd7117) -* Extract find corresponding file module to external package `fof` (b7d018be296f55ca5cd8859b53c68efe326a2399) -* Extract VSCode editing experience to external package `vsc-edit-mode` (744eb525d3c90055528f650e3991614eb172684a) -* Removed complex line number configuration, keep it simple (f78fd0b8b96b8fb113f6156d346689622967fa15) -* Remove dashboard's previous/next blank-lines navigation keys (bfef0c196ac7fdc307552b6d5f663279d540cba4) -* Extract package module to external package `pkg-dm` (9051c25ce5c07542ea0a52bfb4192d74ac8d1453) -* Use `elenv` for emacs-lisp environment (92c9db4dbbe49072874fd18d2c27b44a5384bfd4) -* Remove previouse/next key type option (a4a605f44e18ae2161a8e87598e636bf9f1f51a9) -* Extract previous/next blank line keys to external package `block-travel` (9f624c1bbb7259da65fd9b468812358d53ee36ca) -* Add packages for feature sticky header, `topsy` and `org-sticky-header` (a9f01c9ce319e27e04e1a8fac3b56ed14f3d65ab) -* Add support for Terraform (d241fc77d5c13b3e01e1d0dfd78147b3a7c9a59d) -* Add support for Zig (2911e870dce6238ab6d960a287cd25c64576bb33) -* Add support for Racket (f2f314f1eb670b7508c661cf68e0033292fe256c) -* Add support for Idris (99013713d649e59f07fae5a2bf9e7fe5f96f0800) -* Add support for VHDL (185046a34e06bc8c4a6abf57c4f6d843a66da722) -* Add support for Mint (9d50d8a05767f32c373f13240f3eaeb9440f6582) -* Improve EWW UX (b954b8f5f1782a500eb4a7fda688a8fab0aebd27) -* Improve `image-mode` UX (80127d5060bbf6ae871d87502dfff27a73c123fe) -* Add `emp` as default music player (2861743073ecd2e6d7608dac8021fc400104c4bb) -* Bind keys for `emp` (f5183bee81fea5b0e832ed39282ad76ee9ed70e8) -* Bind keys for `eww` (500696b4403a50f83951532f0e31ab4b1cd5a2bb) -* Add support for fish shell-script (44ed9764a7f2dc3e3632c6b0136390a97bce74e4) -* Add support for ansible (cb91beeff65b63539a2893f67aaa888d9d53dc7b) -* Remove `rjsx-mode` and `js2-mode`, use default `js-mode` and `js-jsx-mode` (d3b76f615c5030a54ec3d74517a43c734700be50) -* Add `company` and `flycheck` support for multiple languages (4f71184b0eab6b65bc7f57d615494f9d88afb020) -* Split moduels to each individual `config.el` file (d97ef5c27090d65e3ba555c41443f5d877764493) -* Allow `lsp-mode` being active in file without the `project-root` being defined (b737a6515e51b23dfb42c11ab2e49a54f48b9ca4) -* Add support for elisp keywords completion (19f87363c77d15602f09dd358ce9237fe47ccca1) -* Extract modeline display to external package `jcs-modeline` (3cb0a6304d4b95fca9a35b4efbf6434eae4494ed) -* Replace `toggle-quotes` with new package `cycle-quotes` (53c69a8532142b4ede97df717e07c29fff9e66a5) -* Remove unused command to toggle forward/backward sexp (4703c7fc81152f8818f5c4cba907d64980ae4c0c) -* Bind keys for `cycle-quote` and `cycle-slash` (8e5dec85c47c4c9ff35e48df6bcbf317b687cc93) -* Replace `bool-flip` with new package `cycle-at-point` (e3399712e28730fa8b474032e6e17664f153ac68) -* Add new package `cycle-case-style` (6cad7031a6b0ef58bbf74e74e020b272d53e4b19) -* Add eldoc support for CSS (9b9b4cd493ef35d31a78300c94cae9ad9e778c84) -* Add eldoc support for TOML (a0eb8ed975a9a7367ff94789d48f80ebb207dbf3) -* Use `literate-calc-mode` instead of self-defined calc command (691186d362f79838291779bac6bf50e76eebc015) -* Move back to use `use-package` (9d2ead748c345b8edcf17fb9ee0e58b1b7464f09) -* Make echo all `re-mode` commands (26a37fa3b4b6e8f9125a4c8c133e8df03681a496) -* All major-mode for all .ignore files (a14a111e8c59c08718f620a455a1c14e26f8779e) -* Add another file paths completion package, `company-paths` (a73cafcaf2f36192de06eeb3096a856f05e01113) -* Integrate `magit` (54953d780fc9962d5d373cabb9a3c3a2f2c7629e) -* Add new package `vc-refrest` for better UX (91625bc0ff66f773c8c040b3d56b2e64de8ba497) -* Add support for `epub` reader (04a1bd1eba474f6949e96f2ec23befc96847de56) -* Add new package `free-keys` (9925b4ce6dd513843b07b1edae07565366bc8857) -* Add new package `npm-mode` (78ad3a6cae3cc273c7c10695b1b5a5e5941ec686) -* Add new package `k8s-mode` for kubernetes configuration file (0db8edb596c264a9256ebf20ea74dd9b9e422a04) -* Add new module for languages `PureScript` (8ffb007bda2281a53b29782b898c2339033846ab) -* Add support for `PKGBUILD` file (b14cf80ecac042047e89dbb870ff79e75769bb8c) -* Add company support for Eask-file, `company-eask` (21655da7edbad6f85aed6cce67994948d831bfe0) -* Add eldoc support for Eask-file, `eldoc-eask` (fcd62477d4caa5d8c442568e37fd37d3309f0655) -* Remove `nhexl-mode`, and use `hexl-mode` instead (487e8ec100b915d82205216013c59dd4669e8902) -* Add annotation for `file-header` templates (5d32dbe973a74cb918a32cd7489773eab247561c) +* feat: Add new package `company-kaomoji` ([1cc6b70][]) +* refactor: Refactor `ts-fold-indicators` face function and get queries function ([27e6148][]) +* feat: Add OCaml support ([ddaaf11][]) +* feat: Add support for `elfeed` ([7a3c3ad][]) +* fix: Cancel `echo-bar` right padding by default ([75416a7][]) +* feat: Add new packages `org-superstar` and `org-fancy-priorities` ([695f5f4][]) +* feat: Add new package `hammy` ([8ea21aa][]) +* feat: Enable `display-fill-column-indicator-mode` in `text-mode` by default ([5283fd9][]) +* feat: Enhance experience with `org-superstars` ([5c240a6][]) +* feat: Add new package `sideline-color` ([6c472aa][]) +* feat: Add support for `haml-mode` ([b50bbb2][]) +* chore: Use package-menu to upgrade packages instead of the prompt ([5903e43][]) +* refactor: Extract message utility functions to separate module, `msgu` ([d3957be][]) +* fix: Fix does upgradable menu after package list is refreshed ([09d7840][]) +* feat: Add clear filter key for `package-menu` mode ([bf36721][]) +* feat: Load `eask-api` when in valid Eask related project ([5644b51][]) +* feat: Add new package `editorconfig-generate` ([afd3fa0][]) +* keybind: Bind key `C-M-k` to `kill-this-buffer` ([758c464][]) +* chore: Remove `buffer-menu` feature on display project name ([74feaa9][]) +* refactor: Use macro to define `file-header` insertion functions ([e5e2006][]) +* refactor: Re-define file header source with utility macro ([ca4d8e4][]) +* feat: Turn `completion-ignore-case` on by default ([b94542c][]) +* feat: Add new package `minimap` ([ae9ef5a][]) +* chore: Replace package `docstr` with `ts-docstr` for better parsing capability ([ee85ba4][]) +* feat: Add new package `highlight-doxygen` ([ee85ba4][]) +* feat: Enable `minibuffer-depth-indicate-mode` by default ([83ecd6c][]) +* fix: Fix typescript insertion with `ts-docstr` ([ec8a559][]) +* feat: Add new package `toggle-profiler` ([eecf032][]) +* keybind: Bind new key to command `keyboard-escape-quit` ([3ce9d3f][]) +* keybind: Bind new key to command `toggle-profiler` ([f49dfeb][]) +* keybind: Bind new key to command `ts-docstr-ask` ([9836e3d][]) +* feat: Add new packages `gitlab-ci-mode` and `gitlab-ci-mode-flycheck` ([984fc83][]) +* chore: Remove unnecessary config to `auto-mode-alist` ([0dad622][]) +* feat: Add new package `sln-mode` to handle `*.sln` file ([673a263][]) +* feat: Add new font `Symbola.ttf` for Windows' unicode display ([98a7455][]) +* refactor: Extract undo/redo module to external package `undo-tree-vf` ([391bb1e][]) +* refactor: Use built-in `bolp` and `eolp` functions instead ([0504aa5][]) +* refactor: Extract parent directory not found when file creation module to external package `ff-guard` ([0085929][]) +* feat: Add new package `prettier` ([a2af4f7][]) +* feat: Add new package `vs-electric-spacing` ([a04369b][]) +* feat: Add new package `terminal-here` ([56ad79f][]) +* feat: Add new package `quickrun` ([e13899b][]) +* refactor: Extract select file in project/pwd to external `ffap` ([e9b7c04][]) +* refactor: Extract [@cmuratori](https://github.com/cmuratori)'s run/make script feature to external `execrun` ([83d90d5][]) +* refactor: Extract find corresponding file module to external package `fof` ([b7d018b][]) +* refactor: Extract VSCode editing experience to external package `vsc-edit-mode` ([744eb52][]) +* chore: Removed complex line number configuration, keep it simple ([f78fd0b][]) +* chore: Remove dashboard's previous/next blank-lines navigation keys ([bfef0c1][]) +* refactor: Extract package module to external package `pkg-dm` ([9051c25][]) +* refactor: Use `elenv` for emacs-lisp environment ([92c9db4][]) +* chore: Remove previouse/next key type option ([a4a605f][]) +* refactor: Extract previous/next blank line keys to external package `block-travel` ([9f624c1][]) +* feat: Add packages for feature sticky header, `topsy` and `org-sticky-header` ([a9f01c9][]) +* feat: Add support for Terraform ([d241fc7][]) +* feat: Add support for Zig ([2911e87][]) +* feat: Add support for Racket ([f2f314f][]) +* feat: Add support for Idris ([9901371][]) +* feat: Add support for VHDL ([185046a][]) +* feat: Add support for Mint ([9d50d8a][]) +* perf: Improve EWW UX ([b954b8f][]) +* perf: Improve `image-mode` UX ([80127d5][]) +* feat: Add `emp` as default music player ([2861743][]) +* keybind: Bind keys for `emp` ([f5183be][]) +* keybind: Bind keys for `eww` ([500696b][]) +* feat: Add support for fish shell-script ([44ed976][]) +* feat: Add support for ansible ([cb91bee][]) +* chore: Remove `rjsx-mode` and `js2-mode`, use default `js-mode` and `js-jsx-mode` ([d3b76f6][]) +* feat: Add `company` and `flycheck` support for multiple languages ([4f71184][]) +* chore: Split moduels to each individual `config.el` file ([d97ef5c][]) +* feat: Allow `lsp-mode` being active in file without the `project-root` being defined ([b737a65][]) +* feat: Add support for elisp keywords completion ([19f8736][]) +* refactor: Extract modeline display to external package `jcs-modeline` ([3cb0a63][]) +* feat: Replace `toggle-quotes` with new package `cycle-quotes` ([53c69a8][]) +* chore: Remove unused command to toggle forward/backward sexp ([4703c7f][]) +* keybind: Bind keys for `cycle-quote` and `cycle-slash` ([8e5dec8][]) +* feat: Replace `bool-flip` with new package `cycle-at-point` ([e339971][]) +* feat: Add new package `cycle-case-style` ([6cad703][]) +* feat: Add eldoc support for CSS ([9b9b4cd][]) +* feat: Add eldoc support for TOML ([a0eb8ed][]) +* chore: Use `literate-calc-mode` instead of self-defined calc command ([691186d][]) +* chore: Move back to use `use-package` ([9d2ead7][]) +* chore: Make echo all `re-mode` commands ([26a37fa][]) +* feat: All major-mode for all .ignore files ([a14a111][]) +* feat: Add another file paths completion package, `company-paths` ([a73cafc][]) +* feat: Integrate `magit` ([54953d7][]) +* feat: Add new package `vc-refrest` for better UX ([91625bc][]) +* feat: Add support for `epub` reader ([04a1bd1][]) +* feat: Add new package `free-keys` ([9925b4c][]) +* feat: Add new package `npm-mode` ([78ad3a6][]) +* feat: Add new package `k8s-mode` for kubernetes configuration file ([0db8edb][]) +* feat: Add new module for languages `PureScript` ([8ffb007][]) +* feat: Add support for `PKGBUILD` file ([b14cf80][]) +* feat: Add company support for Eask-file, `company-eask` ([21655da][]) +* feat: Add eldoc support for Eask-file, `eldoc-eask` ([fcd6247][]) +* chore: Remove `nhexl-mode`, and use `hexl-mode` instead ([487e8ec][]) +* feat: Add annotation for `file-header` templates ([5d32dbe][]) + +[1cc6b70]: ../../commit/1cc6b70e9ab4ae3fc893482c1d38986da6b32e87 +[27e6148]: ../../commit/27e614884c1cb84d8f832280d253d387cdde99b4 +[ddaaf11]: ../../commit/ddaaf11b98c88c709fecd5db8b8214a63e1bb00f +[7a3c3ad]: ../../commit/7a3c3ad99bea5088da2c7d681552f55914b37934 +[75416a7]: ../../commit/75416a77c6bb0eef90b71a2ee09ab42202bc7bb5 +[695f5f4]: ../../commit/695f5f46e611de1529c6bbd57cd251386616d2f7 +[8ea21aa]: ../../commit/8ea21aa67e98efd9a8eb846e6b908fb500afab52 +[5283fd9]: ../../commit/5283fd976574ecd322e77556bcd0b6790eed7403 +[5c240a6]: ../../commit/5c240a626fe60685f2768eb17a6dbfcc61452134 +[6c472aa]: ../../commit/6c472aa4c92069551a0707760e3d41c12dcd7411 +[b50bbb2]: ../../commit/b50bbb26cfddab3e16d849f65e33894ec5a70177 +[5903e43]: ../../commit/5903e431921a10f023247ba59ee78eaaa59fc961 +[d3957be]: ../../commit/d3957bec1ffd3668a5f8861644f6ec2953cd3781 +[09d7840]: ../../commit/09d78404f7e8f0bec64d4df78ae9f90e7c6069d9 +[bf36721]: ../../commit/bf36721805a48b6319bd5eb1b9064129af293560 +[5644b51]: ../../commit/5644b5128cb1f132b9b552cc745377be8528b435 +[afd3fa0]: ../../commit/afd3fa07135fd9154b551fffb20822316cf4e3d7 +[758c464]: ../../commit/758c464dfe76bad0053ce82f4064f382a1ae4ac3 +[74feaa9]: ../../commit/74feaa938d4be1667bab1c1f68308f8c6a250208 +[e5e2006]: ../../commit/e5e200684f25325c70906a53a84f526328bc6fbf +[ca4d8e4]: ../../commit/ca4d8e49ba80f78bd34ff610a442c8a8bf7bc097 +[b94542c]: ../../commit/b94542cb51736f26a3842753bbc268116fa4ba06 +[ae9ef5a]: ../../commit/ae9ef5a0d93bf8f924c8572d00f026dace2079a3 +[ee85ba4]: ../../commit/ee85ba4b01401707461ec695038f2ee4cc175f74 +[83ecd6c]: ../../commit/83ecd6c2b256d2fa0dd3b6fa64236ad5aab2843f +[ec8a559]: ../../commit/ec8a5592e8f4e6ba707d36218461e2f0a9329822 +[eecf032]: ../../commit/eecf0323d3af8fdcc2b3c2c8e8e62dd78774a3b7 +[3ce9d3f]: ../../commit/3ce9d3ff4ae965a31f1855bf6f9b11c31e2576be +[f49dfeb]: ../../commit/f49dfeb07c1e0d3d879cb3acdfb4a5ab892326f2 +[9836e3d]: ../../commit/9836e3d76afeadcb75c0d7378d38b209dda50e82 +[984fc83]: ../../commit/984fc836ecb832e047409a1efa03c806205a7c9e +[0dad622]: ../../commit/0dad6227b3372d530f55032726693ab41541e8a7 +[673a263]: ../../commit/673a2635efccd1e5258a157e738f8ebdb35f567a +[98a7455]: ../../commit/98a74550b9edfcbe30d403418263b6594582652c +[391bb1e]: ../../commit/391bb1e4b1416c1c7f54a19f07c6b83ccd3e4524 +[0504aa5]: ../../commit/0504aa597efd52e9efbefe3e2338349cc5d458fc +[0085929]: ../../commit/008592968fea55e925c0bbe8e5412b93a4dde7c3 +[a2af4f7]: ../../commit/a2af4f74eea9e6b7861db8babb1de2a4909247a2 +[a04369b]: ../../commit/a04369b5ebfa1db7a47bcf156f80614959685190 +[56ad79f]: ../../commit/56ad79fdf537fc1d7380ff4adc71dea5051e00ac +[e13899b]: ../../commit/e13899b04affe5157a0cacff52b24c1925c293f4 +[e9b7c04]: ../../commit/e9b7c045a2cbd2dfdfc4f519e24a973a0807410b +[83d90d5]: ../../commit/83d90d53e5324e22e5fbf3c174487ddd22fd7117 +[b7d018b]: ../../commit/b7d018be296f55ca5cd8859b53c68efe326a2399 +[744eb52]: ../../commit/744eb525d3c90055528f650e3991614eb172684a +[f78fd0b]: ../../commit/f78fd0b8b96b8fb113f6156d346689622967fa15 +[bfef0c1]: ../../commit/bfef0c196ac7fdc307552b6d5f663279d540cba4 +[9051c25]: ../../commit/9051c25ce5c07542ea0a52bfb4192d74ac8d1453 +[92c9db4]: ../../commit/92c9db4dbbe49072874fd18d2c27b44a5384bfd4 +[a4a605f]: ../../commit/a4a605f44e18ae2161a8e87598e636bf9f1f51a9 +[9f624c1]: ../../commit/9f624c1bbb7259da65fd9b468812358d53ee36ca +[a9f01c9]: ../../commit/a9f01c9ce319e27e04e1a8fac3b56ed14f3d65ab +[d241fc7]: ../../commit/d241fc77d5c13b3e01e1d0dfd78147b3a7c9a59d +[2911e87]: ../../commit/2911e870dce6238ab6d960a287cd25c64576bb33 +[f2f314f]: ../../commit/f2f314f1eb670b7508c661cf68e0033292fe256c +[9901371]: ../../commit/99013713d649e59f07fae5a2bf9e7fe5f96f0800 +[185046a]: ../../commit/185046a34e06bc8c4a6abf57c4f6d843a66da722 +[9d50d8a]: ../../commit/9d50d8a05767f32c373f13240f3eaeb9440f6582 +[b954b8f]: ../../commit/b954b8f5f1782a500eb4a7fda688a8fab0aebd27 +[80127d5]: ../../commit/80127d5060bbf6ae871d87502dfff27a73c123fe +[2861743]: ../../commit/2861743073ecd2e6d7608dac8021fc400104c4bb +[f5183be]: ../../commit/f5183bee81fea5b0e832ed39282ad76ee9ed70e8 +[500696b]: ../../commit/500696b4403a50f83951532f0e31ab4b1cd5a2bb +[44ed976]: ../../commit/44ed9764a7f2dc3e3632c6b0136390a97bce74e4 +[cb91bee]: ../../commit/cb91beeff65b63539a2893f67aaa888d9d53dc7b +[d3b76f6]: ../../commit/d3b76f615c5030a54ec3d74517a43c734700be50 +[4f71184]: ../../commit/4f71184b0eab6b65bc7f57d615494f9d88afb020 +[d97ef5c]: ../../commit/d97ef5c27090d65e3ba555c41443f5d877764493 +[b737a65]: ../../commit/b737a6515e51b23dfb42c11ab2e49a54f48b9ca4 +[19f8736]: ../../commit/19f87363c77d15602f09dd358ce9237fe47ccca1 +[3cb0a63]: ../../commit/3cb0a6304d4b95fca9a35b4efbf6434eae4494ed +[53c69a8]: ../../commit/53c69a8532142b4ede97df717e07c29fff9e66a5 +[4703c7f]: ../../commit/4703c7fc81152f8818f5c4cba907d64980ae4c0c +[8e5dec8]: ../../commit/8e5dec85c47c4c9ff35e48df6bcbf317b687cc93 +[e339971]: ../../commit/e3399712e28730fa8b474032e6e17664f153ac68 +[6cad703]: ../../commit/6cad7031a6b0ef58bbf74e74e020b272d53e4b19 +[9b9b4cd]: ../../commit/9b9b4cd493ef35d31a78300c94cae9ad9e778c84 +[a0eb8ed]: ../../commit/a0eb8ed975a9a7367ff94789d48f80ebb207dbf3 +[691186d]: ../../commit/691186d362f79838291779bac6bf50e76eebc015 +[9d2ead7]: ../../commit/9d2ead748c345b8edcf17fb9ee0e58b1b7464f09 +[26a37fa]: ../../commit/26a37fa3b4b6e8f9125a4c8c133e8df03681a496 +[a14a111]: ../../commit/a14a111e8c59c08718f620a455a1c14e26f8779e +[a73cafc]: ../../commit/a73cafcaf2f36192de06eeb3096a856f05e01113 +[54953d7]: ../../commit/54953d780fc9962d5d373cabb9a3c3a2f2c7629e +[91625bc]: ../../commit/91625bc0ff66f773c8c040b3d56b2e64de8ba497 +[04a1bd1]: ../../commit/04a1bd1eba474f6949e96f2ec23befc96847de56 +[9925b4c]: ../../commit/9925b4ce6dd513843b07b1edae07565366bc8857 +[78ad3a6]: ../../commit/78ad3a6cae3cc273c7c10695b1b5a5e5941ec686 +[0db8edb]: ../../commit/0db8edb596c264a9256ebf20ea74dd9b9e422a04 +[8ffb007]: ../../commit/8ffb007bda2281a53b29782b898c2339033846ab +[b14cf80]: ../../commit/b14cf80ecac042047e89dbb870ff79e75769bb8c +[21655da]: ../../commit/21655da7edbad6f85aed6cce67994948d831bfe0 +[fcd6247]: ../../commit/fcd62477d4caa5d8c442568e37fd37d3309f0655 +[487e8ec]: ../../commit/487e8ec100b915d82205216013c59dd4669e8902 +[5d32dbe]: ../../commit/5d32dbe973a74cb918a32cd7489773eab247561c ## 8.2.1 > Released Jul 22, 2022 From 8d35c926bc4bb20a558cda8fcefa52b76237c7ef Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 11 Jul 2025 03:36:45 -0700 Subject: [PATCH 307/334] Update CHANGELOG.md --- CHANGELOG.md | 173 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 116 insertions(+), 57 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75f462da..6972364b 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -398,67 +398,126 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how ## 8.2.1 > Released Jul 22, 2022 -* Add new package `sideline-blame` (c4713396e8937da498083bd3730f28bc114e3b47) -* Add new package `sideline-flymake` (322b5bb5123a60c5dbdcb11458d2c7eca92fe9a0) -* Add new package `echo-bar` (26c0bf7c657a29368486aac112439a8507927b21) -* Change modeline color while debugging (c4f224fe926400089d8896f3a89fe545e12e66a2) -* Add new package `company-dockerfile` (ebb3556e9cb79f66f191e39dee8738d2cd1d33bc) -* Add new package `company-powershell` (39290625a468462d2ebaccc6a7d8cf4f13851311) -* Add new package `company-cmd` (b7ed05973c8b8b02a729734d1303ed1291dccba4) -* Add new package `company-makefile` (0e1d62adddfb8babf9ab1478af58e1519d1f7a28) -* Add new package `company-autoconf` (cec8940857a8bb434ecf0a37188cd6840602b70c) -* Add new package `company-coffee` (74e5a42eebaf812f266a4a508d059bed33c7986f) -* Refactor to use default function to get `*Messages*` buffer instead of declaring another variable explicitly in the global scope (ac7f0791c1f1e3de16a14831d07280957b77e244) -* Use default function to get `*scratch*` buffer (b6909ccb5f9f4fa6af211ac1e9bb0fd50afc7255) -* Replace built-in progress reporter with external library `prt` (aa0f6d8bbfe882e2ba4f783e6eca431b392c04cc) -* Use built-in `scratch-buffer` function instead (5a0957f214aa786b2ea82e41a2aff3052c63eda3) -* Fix function name `startup--get-buffer-create-scratch` to get scratch buffer `get-scratch-buffer-create` (8788c3015561faf13c46e12a9e5febc5b1a983c2) -* Drop support for Emacs 28.x (7fa61292bd1553cee46884a98f4959933b55bb12) -* Diminish buffer `*Bug Help*` as default (cef9be24f401405fe58aed4496e6cac52099487b) +* Add new package `sideline-blame` ([c471339][]) +* Add new package `sideline-flymake` ([322b5bb][]) +* Add new package `echo-bar` ([26c0bf7][]) +* Change modeline color while debugging ([c4f224f][]) +* Add new package `company-dockerfile` ([ebb3556][]) +* Add new package `company-powershell` ([3929062][]) +* Add new package `company-cmd` ([b7ed059][]) +* Add new package `company-makefile` ([0e1d62a][]) +* Add new package `company-autoconf` ([cec8940][]) +* Add new package `company-coffee` ([74e5a42][]) +* Refactor to use default function to get `*Messages*` buffer instead of declaring another variable explicitly in the global scope ([ac7f079][]) +* Use default function to get `*scratch*` buffer ([b6909cc][]) +* Replace built-in progress reporter with external library `prt` ([aa0f6d8][]) +* Use built-in `scratch-buffer` function instead ([5a0957f][]) +* Fix function name `startup--get-buffer-create-scratch` to get scratch buffer `get-scratch-buffer-create` ([8788c30][]) +* Drop support for Emacs 28.x ([7fa6129][]) +* Diminish buffer `*Bug Help*` as default ([cef9be2][]) + +[c471339]: ../../commit/c4713396e8937da498083bd3730f28bc114e3b47 +[322b5bb]: ../../commit/322b5bb5123a60c5dbdcb11458d2c7eca92fe9a0 +[26c0bf7]: ../../commit/26c0bf7c657a29368486aac112439a8507927b21 +[c4f224f]: ../../commit/c4f224fe926400089d8896f3a89fe545e12e66a2 +[ebb3556]: ../../commit/ebb3556e9cb79f66f191e39dee8738d2cd1d33bc +[3929062]: ../../commit/39290625a468462d2ebaccc6a7d8cf4f13851311 +[b7ed059]: ../../commit/b7ed05973c8b8b02a729734d1303ed1291dccba4 +[0e1d62a]: ../../commit/0e1d62adddfb8babf9ab1478af58e1519d1f7a28 +[cec8940]: ../../commit/cec8940857a8bb434ecf0a37188cd6840602b70c +[74e5a42]: ../../commit/74e5a42eebaf812f266a4a508d059bed33c7986f +[ac7f079]: ../../commit/ac7f0791c1f1e3de16a14831d07280957b77e244 +[b6909cc]: ../../commit/b6909ccb5f9f4fa6af211ac1e9bb0fd50afc7255 +[aa0f6d8]: ../../commit/aa0f6d8bbfe882e2ba4f783e6eca431b392c04cc +[5a0957f]: ../../commit/5a0957f214aa786b2ea82e41a2aff3052c63eda3 +[8788c30]: ../../commit/8788c3015561faf13c46e12a9e5febc5b1a983c2 +[7fa6129]: ../../commit/7fa61292bd1553cee46884a98f4959933b55bb12 +[cef9be2]: ../../commit/cef9be24f401405fe58aed4496e6cac52099487b ## 8.2.0 > Released Jun 21, 2022 -* Drop support for Emacs 27.x (7fa61292bd1553cee46884a98f4959933b55bb12) -* Prevent whitespace cleanup for `text-mode` (56dca1ac48ef4e613c777b82bac1247513e6c024) -* Remove development package `ert-runner` (84ffcde033cab6073b3b2624b1c6f40260322a64) -* Remove development package `el-mock` (8fcc72f1ec5fb723b3262070ad87095d42fea852) -* Fix bug for newly added packages from archives (6a92be2c8800b478bfb120a4489a7b1930235db0) -* Add new package `flycheck-eask`. (cd94bbabe3bb5e3878384afea030cb203e0e5050) -* Move minibuffer flx to external package [vertico-flx](https://github.com/jcs-elpa/vertico-flx) (151d8f20e2d5539add95deb892acfbb0f1638df7) -* Show `helpful` message while describing things at point (a06c8d1edbb2380cf449a554dda0d10c3433ae3a) -* Add new package `suggest` (913f278afa145d46924cde5322506cd13dd43e9f) -* Inhibit redisplay on startup to speed up the startup time (9922190f2e53ccc9a400943140a3c5e6462bde5f) -* Add new package `company-shell` (6b5d79a65d889222e42343325cf59790c78d97af) -* Add new package `company-glsl` (122b4a1b541acf7a810253d986d423e216a92ceb) -* Add new package `arduino-mode` (d4ffb8c6b5ca99619c601c26c85aa6063d6c1806) -* Add new package `on` and configured to improve startup speed (8c9f797492a74cdb30ba9ff6f7ee483c0683def5) -* Move init delay to `on-init-ui-hook` (705afe9744fc3efb2ee005beb8db85e0a08b6fbe) -* Add new package `qml-mode` (e383783356143f9cb25ad315be6227823a7b44d7) -* Add new package `coffee-mode` (d7a9a999e9dbd8c47fc3e2ac559517b776c0ac31) -* Add new package `crystal-mode` (72c3dba1d496fd85e96ea8f80da1caa3a56b2e06) -* Add new package `d-mode` (8bbb6fdce8351cccf22b59e08efa6a5969d8586e) -* Add new package `feature-mode` (76f0696c15f60c44aced2a6c58a3039d7d214fcf) -* Add new package `git-assembler-mode`, `graphql-mode`, and `hexo` (444fd96c9a5ebbdab04f74ae18f3a31978b3acfa) -* Add new package `recentf-excl` (1fde6265b338d17efa5f47b908ad4b30c159d9da) -* Add new package `javap-mode` (6e6f53f1f2cc05cef2f0065ad214f6d58d65eaa3) -* Fix conflict between `company-box-doc` and `dashboard` refresh (d49a0310c3a28e1edabb6ba11436b046c701e63f) -* Fix popup tip showing previous/last description (45451bb3460f0ffabb6af35c989bb3e6290e594c) -* Fix bury buffer proceed before `diminish-buffer-mode` will jump to unwanted buffer (184ba39015b1b26342c13f8b107b69c389f0aeed) -* Add new packages `phpt-mode` and `robots-txt-mode` (eb4714b8280490fbf9c6f570479e6f3ba1a3a690) -* Remove package `blamer` and add new package `vc-msg` (067cfb98a52263754b7d4c4222d2bd9c8c4d0601) -* Improve `jcs-advice-add` macro (3ec7e943ab0d035610ce6391e7f9d8ed8ff58cb1) -* Improve `jcs-add-hook` macro (48abd848fba1b2cefa6c7086ca73ac679c3f83ec) -* Add new package `protobuf-mode` (6e4f27587b5a54a0a7bddc5e0a8cba2e008f1463) -* Remove tab and spaces converting util functions (5c92fa525f486ef46e2e309ee5d47f48f5fef66a) -* Move built-in `multiple-cursors` functions to external package `vsc-multiple-cursors` (d12f928aeb4f7765772576d6d0cf6329ffb081b6) -* Configure `multiple-cursors` for mouse click (454933b94926bab40c09810d49533c3eb3290239) -* Add new package `gcmh` (39e381d56f12ba9866c71d1e7b2f31775ee25ed2) -* Disable `page-break-lines` in `emacs-lisp-compilation-mode` (b337b4505ad14c8b756e810e9b1f7b65a598f786) -* Add new package `sideline-flycheck` (18cdd626331297f77255a8faa922f5dd199bc416) -* Add new package `docker` (bb0fbb611cce10a1ea4438b9bb0ab95110dd49cc) -* Configure compilation previous/next error keys (919a84801aef3631fa7dc496a8b997acaeeca0d2) -* Add new package `sideline-lsp` (b7b7c4ed9359412709f4fc0197005043b6d19fca) +* Drop support for Emacs 27.x ([7fa6129][]) +* Prevent whitespace cleanup for `text-mode` ([56dca1a][]) +* Remove development package `ert-runner` ([84ffcde][]) +* Remove development package `el-mock` ([8fcc72f][]) +* Fix bug for newly added packages from archives ([6a92be2][]) +* Add new package `flycheck-eask`. ([cd94bba][]) +* Move minibuffer flx to external package [vertico-flx](https://github.com/jcs-elpa/vertico-flx) ([151d8f2][]) +* Show `helpful` message while describing things at point ([a06c8d1][]) +* Add new package `suggest` ([913f278][]) +* Inhibit redisplay on startup to speed up the startup time ([9922190][]) +* Add new package `company-shell` ([6b5d79a][]) +* Add new package `company-glsl` ([122b4a1][]) +* Add new package `arduino-mode` ([d4ffb8c][]) +* Add new package `on` and configured to improve startup speed ([8c9f797][]) +* Move init delay to `on-init-ui-hook` ([705afe9][]) +* Add new package `qml-mode` ([e383783][]) +* Add new package `coffee-mode` ([d7a9a99][]) +* Add new package `crystal-mode` ([72c3dba][]) +* Add new package `d-mode` ([8bbb6fd][]) +* Add new package `feature-mode` ([76f0696][]) +* Add new package `git-assembler-mode`, `graphql-mode`, and `hexo` ([444fd96][]) +* Add new package `recentf-excl` ([1fde626][]) +* Add new package `javap-mode` ([6e6f53f][]) +* Fix conflict between `company-box-doc` and `dashboard` refresh ([d49a031][]) +* Fix popup tip showing previous/last description ([45451bb][]) +* Fix bury buffer proceed before `diminish-buffer-mode` will jump to unwanted buffer ([184ba39][]) +* Add new packages `phpt-mode` and `robots-txt-mode` ([eb4714b][]) +* Remove package `blamer` and add new package `vc-msg` ([067cfb9][]) +* Improve `jcs-advice-add` macro ([3ec7e94][]) +* Improve `jcs-add-hook` macro ([48abd84][]) +* Add new package `protobuf-mode` ([6e4f275][]) +* Remove tab and spaces converting util functions ([5c92fa5][]) +* Move built-in `multiple-cursors` functions to external package `vsc-multiple-cursors` ([d12f928][]) +* Configure `multiple-cursors` for mouse click ([454933b][]) +* Add new package `gcmh` ([39e381d][]) +* Disable `page-break-lines` in `emacs-lisp-compilation-mode` ([b337b45][]) +* Add new package `sideline-flycheck` ([18cdd62][]) +* Add new package `docker` ([bb0fbb6][]) +* Configure compilation previous/next error keys ([919a848][]) +* Add new package `sideline-lsp` ([b7b7c4e][]) + +[7fa6129]: ../../commit/7fa61292bd1553cee46884a98f4959933b55bb12 +[56dca1a]: ../../commit/56dca1ac48ef4e613c777b82bac1247513e6c024 +[84ffcde]: ../../commit/84ffcde033cab6073b3b2624b1c6f40260322a64 +[8fcc72f]: ../../commit/8fcc72f1ec5fb723b3262070ad87095d42fea852 +[6a92be2]: ../../commit/6a92be2c8800b478bfb120a4489a7b1930235db0 +[cd94bba]: ../../commit/cd94bbabe3bb5e3878384afea030cb203e0e5050 +[151d8f2]: ../../commit/151d8f20e2d5539add95deb892acfbb0f1638df7 +[a06c8d1]: ../../commit/a06c8d1edbb2380cf449a554dda0d10c3433ae3a +[913f278]: ../../commit/913f278afa145d46924cde5322506cd13dd43e9f +[9922190]: ../../commit/9922190f2e53ccc9a400943140a3c5e6462bde5f +[6b5d79a]: ../../commit/6b5d79a65d889222e42343325cf59790c78d97af +[122b4a1]: ../../commit/122b4a1b541acf7a810253d986d423e216a92ceb +[d4ffb8c]: ../../commit/d4ffb8c6b5ca99619c601c26c85aa6063d6c1806 +[8c9f797]: ../../commit/8c9f797492a74cdb30ba9ff6f7ee483c0683def5 +[705afe9]: ../../commit/705afe9744fc3efb2ee005beb8db85e0a08b6fbe +[e383783]: ../../commit/e383783356143f9cb25ad315be6227823a7b44d7 +[d7a9a99]: ../../commit/d7a9a999e9dbd8c47fc3e2ac559517b776c0ac31 +[72c3dba]: ../../commit/72c3dba1d496fd85e96ea8f80da1caa3a56b2e06 +[8bbb6fd]: ../../commit/8bbb6fdce8351cccf22b59e08efa6a5969d8586e +[76f0696]: ../../commit/76f0696c15f60c44aced2a6c58a3039d7d214fcf +[444fd96]: ../../commit/444fd96c9a5ebbdab04f74ae18f3a31978b3acfa +[1fde626]: ../../commit/1fde6265b338d17efa5f47b908ad4b30c159d9da +[6e6f53f]: ../../commit/6e6f53f1f2cc05cef2f0065ad214f6d58d65eaa3 +[d49a031]: ../../commit/d49a0310c3a28e1edabb6ba11436b046c701e63f +[45451bb]: ../../commit/45451bb3460f0ffabb6af35c989bb3e6290e594c +[184ba39]: ../../commit/184ba39015b1b26342c13f8b107b69c389f0aeed +[eb4714b]: ../../commit/eb4714b8280490fbf9c6f570479e6f3ba1a3a690 +[067cfb9]: ../../commit/067cfb98a52263754b7d4c4222d2bd9c8c4d0601 +[3ec7e94]: ../../commit/3ec7e943ab0d035610ce6391e7f9d8ed8ff58cb1 +[48abd84]: ../../commit/48abd848fba1b2cefa6c7086ca73ac679c3f83ec +[6e4f275]: ../../commit/6e4f27587b5a54a0a7bddc5e0a8cba2e008f1463 +[5c92fa5]: ../../commit/5c92fa525f486ef46e2e309ee5d47f48f5fef66a +[d12f928]: ../../commit/d12f928aeb4f7765772576d6d0cf6329ffb081b6 +[454933b]: ../../commit/454933b94926bab40c09810d49533c3eb3290239 +[39e381d]: ../../commit/39e381d56f12ba9866c71d1e7b2f31775ee25ed2 +[b337b45]: ../../commit/b337b4505ad14c8b756e810e9b1f7b65a598f786 +[18cdd62]: ../../commit/18cdd626331297f77255a8faa922f5dd199bc416 +[bb0fbb6]: ../../commit/bb0fbb611cce10a1ea4438b9bb0ab95110dd49cc +[919a848]: ../../commit/919a84801aef3631fa7dc496a8b997acaeeca0d2 +[b7b7c4e]: ../../commit/b7b7c4ed9359412709f4fc0197005043b6d19fca ## 8.1.0 > Released Apr 7, 2022 From a102bf3cd04fe2b22fad37487de321d211e40928 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 11 Jul 2025 03:38:58 -0700 Subject: [PATCH 308/334] Update CHANGELOG.md --- CHANGELOG.md | 41 ++++++++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6972364b..fa75a17b 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -522,10 +522,10 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how ## 8.1.0 > Released Apr 7, 2022 -* Fix move file/directory with full path (f3f0c61deb7aa3cc1b437a104c767e10050a73ef) +* Fix move file/directory with full path ([f3f0c61][]) * Add new package `nim-mode`. * Add new package `shift-number`. -* Moved custom face config for `markdown-mode` and `org-mode` to external packages (d92b57181b358574245c0ec6c15985b49e4b83ec) +* Moved custom face config for `markdown-mode` and `org-mode` to external packages ([d92b571][]) * Add basic support for Julia programming language. * Add new package `dotenv-mode`. * Add new package `docker-compose-mode`. @@ -540,21 +540,32 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * Add new package `shell-pop`. * Replace config built-in pop shell functionality with `shell-pop`. * Disable save file message by default. -* Improved reopen buffer command's message. (263244468533c95fcf340b4603b8bb0e3ed00f1e) +* Improved reopen buffer command's message ([2632444][]) * Limit lsp message to display in `*Messages*` buffer. -* Add file name when do `ffap` on `minibuffer` and `vertico`. (1df9e1b4467423dc278ac4963cfd9d42e8d53d28) +* Add file name when do `ffap` on `minibuffer` and `vertico` ([1df9e1b][]) * Add support for HLSL language. * Add new package `message-clean-mode`. * Add new package `buffer-menu-project`. * Add new package `buffer-menu-filter`. -* Default select first candidate (highest score) after sorting while using minibuffer completion. (eb6486a3a9031421127fda03f89ede01d38ba409) +* Default select first candidate (highest score) after sorting while using minibuffer completion ([eb6486a][]) * Add new package `electric-indent-sexp`. * Add new package `electric-cursor`. -* Remove implementation of `depends-mode` and `cross-mode`. (8a1500e4738453f757cb9d28a2c09136dedf6bcc) -* Remove file display function `jcs-html-preview` and `jcs-display-file` (bb47bcee49c2005c10c2b53bb62b923c74fb2741) -* Moved revert buffer module to external package, [vs-revbuf](https://github.com/emacs-vs/vs-revbuf). (73f88e137f7bf4155ff2a37d8b1c43248cf628c5) -* Add new package `whole-line-or-region`. (6a6678143c8d03ccbb6fa479d8f711fceccc3e42) -* Moved Visual Studio editing experience to external package, [vs-edit-mode](https://github.com/emacs-vs/vs-edit-mode) (2db994dbb567d40ccbcd987b09c5a5806db89ed5) +* Remove implementation of `depends-mode` and `cross-mode` ([8a1500e][]) +* Remove file display function `jcs-html-preview` and `jcs-display-file` ([bb47bce][]) +* Moved revert buffer module to external package, [vs-revbuf](https://github.com/emacs-vs/vs-revbuf) ([73f88e1][]) +* Add new package `whole-line-or-region` ([6a66781][]) +* Moved Visual Studio editing experience to external package, [vs-edit-mode](https://github.com/emacs-vs/vs-edit-mode) ([2db994d][]) + +[f3f0c61]: ../../commit/f3f0c61deb7aa3cc1b437a104c767e10050a73ef +[d92b571]: ../../commit/d92b57181b358574245c0ec6c15985b49e4b83ec +[2632444]: ../../commit/263244468533c95fcf340b4603b8bb0e3ed00f1e +[1df9e1b]: ../../commit/1df9e1b4467423dc278ac4963cfd9d42e8d53d28 +[eb6486a]: ../../commit/eb6486a3a9031421127fda03f89ede01d38ba409 +[8a1500e]: ../../commit/8a1500e4738453f757cb9d28a2c09136dedf6bcc +[bb47bce]: ../../commit/bb47bcee49c2005c10c2b53bb62b923c74fb2741 +[73f88e1]: ../../commit/73f88e137f7bf4155ff2a37d8b1c43248cf628c5 +[6a66781]: ../../commit/6a6678143c8d03ccbb6fa479d8f711fceccc3e42 +[2db994d]: ../../commit/2db994dbb567d40ccbcd987b09c5a5806db89ed5 ## 8.0.1 > Released Jan 29, 2022 @@ -576,9 +587,13 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * Installed new package `flx-style` for `completion-styles`. * Installed new package `blamer`. * Installed new package `mwim`. -* Change default `completion-styles` to `partial-completion`, so it goes easy on `company-mode` (132d4bc2de4f89cc37ebed2d8c9ff7617fcb26f4) -* Fix `undo-tree` jumping dedicated window after kill (bbf04f799eeae8ceb7a7b8a891b459cebca0f2ec) -* Use `flx` for minibuffer `completion-styles` (e8041b1b5e9d2dd440894530ab908cff7d7b0354) +* Change default `completion-styles` to `partial-completion` ([132d4bc][]), so it goes easy on `company-mode`. +* Fix `undo-tree` jumping dedicated window after kill ([bbf04f7][]). +* Use `flx` for minibuffer `completion-styles` ([e8041b1][]). + +[132d4bc]: ../../commit/132d4bc2de4f89cc37ebed2d8c9ff7617fcb26f4 +[bbf04f7]: ../../commit/bbf04f799eeae8ceb7a7b8a891b459cebca0f2ec +[e8041b1]: ../../commit/e8041b1b5e9d2dd440894530ab908cff7d7b0354 ## 8.0.0 > Released Jan 6, 2022 From 1525c98ace916deb39bb6118ebd48f1bc8db972b Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 11 Jul 2025 03:41:41 -0700 Subject: [PATCH 309/334] Update CHANGELOG.md --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fa75a17b..40466a3e 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -609,7 +609,9 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * Remove package `flycheck-popup-tip`. * Remove package `flycheck-pos-tip`. * Disable logging when printing out error messages from `flycheck`. -* Move entire directory to `.emacs.d`. (#32) +* Move entire directory to `.emacs.d`. ([#32][]) + +[#32]: ../../pull/32 ## 7.1.0 > Released Dec 27, 2021 From 65a8eff1c3e42eaa295d53ea2f212f3b7e42a280 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 11 Jul 2025 03:44:40 -0700 Subject: [PATCH 310/334] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 40466a3e..a8734c98 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how ## 9.1.1 (Unreleased) > Released N/A -* feat: Replace must kill buffer list with derived mode ([c407b98][]) +* feat: Replace must kill buffer list with derived mode ([`c407b98`](../../commit/c407b9859489c5b31697c9f61871b9e8254baaf7)) * feat: Add new package `responsive-window` ([0af7dfc][]) * fix: Record the window starting point instead first visible line ([62039e7][]) * fix: Force load project elisp files ([b663d26][]) From 0ea85555b8dd53b695fa0ba0c95f1edb538f270e Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 11 Jul 2025 03:45:18 -0700 Subject: [PATCH 311/334] chore: Revert changelog --- CHANGELOG.md | 781 +++++++++++++++++---------------------------------- 1 file changed, 259 insertions(+), 522 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a8734c98..9882899c 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# Change Log +# Change Log All notable changes to this project will be documented in this file. @@ -8,524 +8,278 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how ## 9.1.1 (Unreleased) > Released N/A -* feat: Replace must kill buffer list with derived mode ([`c407b98`](../../commit/c407b9859489c5b31697c9f61871b9e8254baaf7)) -* feat: Add new package `responsive-window` ([0af7dfc][]) -* fix: Record the window starting point instead first visible line ([62039e7][]) -* fix: Force load project elisp files ([b663d26][]) -* fix: Load theme before `on` prevent potential UI package's errors ([0c995aa][]) -* feat: Add `Coq` support ([c8382d9][]) -* feat: Add `GDShader` support ([fdb485a][]) -* feat: Add `Janet` support ([2738bdc][]) -* feat(lang): Add `geiser` for better `Scheme` support ([b981c72][]) -* feat: Configure `eldoc-diffstats` ([cb2afb0][]) -* feat: Add `magit` entry functions ([8f96865][]) -* fix: Annoying `when-let` deprecation ([1e4ca28][]) -* fix: Annoying `if-let` deprecation ([4a002df][]) -* feat(dired): Make list directories first in `dired` ([a502ee4][]) -* feat(ui) Enable `sideline` by default ([ebf0537][]) -* feat(vc): Add more `magit` plugins ([e47a8d0][]) -* perf(lsp): Add `lsp-smart-req` ([fdcddb5][]) -* feat(vc): Use `magit` built-in functionalities to display file icons ([7d249ad][]) -* feat(ui): Add mail tab group ([e0ec5c2][]) -* feat(fold): Add `savefold` for persistent folding behaviors ([98d0f49][]) -* feat(debugger): Combine `debugger` and `run` functionality ([2d40485][]) -* feat(fold): Add new package `fold-this` ([5c9b423][]) -* feat(keys): Add support for `defaul-text-scale` ([4453b90][]) -* feat(lang): Add support for `Magik` language ([5ab68e5][]) -* feat(lang): Add `Odin` support ([a69d5c1][]) -* feat(core): Add `back-button` ([4da8f3d][]) - -[c407b98]: ../../commit/c407b9859489c5b31697c9f61871b9e8254baaf7 -[0af7dfc]: ../../commit/0af7dfcc565b3813ac8776c6f75bf15fc5c74ea5 -[62039e7]: ../../commit/62039e725e816ad381b6a8d126bb28be22d65101 -[b663d26]: ../../commit/b663d26669d35c69d0c99dc3a8353946fd2cb7cf -[0c995aa]: ../../commit/0c995aa207eb820d7b0d0778aa23da2c96b12e5f -[c8382d9]: ../../commit/c8382d9103f98bc4d1015c48bddca0b004018a92 -[fdb485a]: ../../commit/fdb485a4adb0d29284ca93de9647e47b1bf7f94b -[2738bdc]: ../../commit/2738bdc83f2b2d00411e9f5bb489087d1ae27c42 -[b981c72]: ../../commit/b981c72a0942ca13a4f9fc0da7edcfd4653482fd -[cb2afb0]: ../../commit/cb2afb004e92d88b54db1506da54d2f43bc9a87f -[8f96865]: ../../commit/8f9686563559f7b209c289fe24e5d2a6ea9f7c15 -[1e4ca28]: ../../commit/1e4ca284a4e28d9f333fb3b6337dfdcbb1008a60 -[4a002df]: ../../commit/4a002dfb13987d967123e1a9c5ba8ed9c80d2fce -[a502ee4]: ../../commit/a502ee445dcfa9d83eff262f9381897044e9c9fd -[ebf0537]: ../../commit/ebf0537358f3de9f8204f4421b4fef96e487c6d5 -[e47a8d0]: ../../commit/e47a8d0e873001d769eb39c3e85de9fb0a591897 -[fdcddb5]: ../../commit/fdcddb59e7558346d3dfe80639e8d91f4d7f5890 -[7d249ad]: ../../commit/7d249ad694a58239d3247b673f8e15a92adc4a18 -[e0ec5c2]: ../../commit/e0ec5c24c7902f862d4793ffdf8fece6bb14076b -[98d0f49]: ../../commit/98d0f498ccb2d16326f8814c7d4d36a4e2279d51 -[2d40485]: ../../commit/2d4048562fc019da0acc6bbc55242d1767cfc90d -[5c9b423]: ../../commit/5c9b423ba95419dcb8e81477570778739c1ec851 -[4453b90]: ../../commit/4453b907e5702989ca711c90b3244e04b8f873c6 -[5ab68e5]: ../../commit/5ab68e5a9deb1671a55c36ca81ea866217f2cfd2 -[a69d5c1]: ../../commit/a69d5c11fb3707c92c47bbe29470e7a3eae8bce3 -[4da8f3d]: ../../commit/4da8f3dbcb3ade1598643e2de1ffae5c42b00a4f +* feat: Replace must kill buffer list with derived mode (c407b9859489c5b31697c9f61871b9e8254baaf7) +* feat: Add new package `responsive-window` (0af7dfcc565b3813ac8776c6f75bf15fc5c74ea5) +* fix: Record the window starting point instead first visible line (62039e725e816ad381b6a8d126bb28be22d65101) +* fix: Force load project elisp files (b663d26669d35c69d0c99dc3a8353946fd2cb7cf) +* fix: Load theme before `on` prevent potential UI package's errors (0c995aa207eb820d7b0d0778aa23da2c96b12e5f) +* feat: Add `Coq` support (c8382d9103f98bc4d1015c48bddca0b004018a92) +* feat: Add `GDShader` support (fdb485a4adb0d29284ca93de9647e47b1bf7f94b) +* feat: Add `Janet` support (2738bdc83f2b2d00411e9f5bb489087d1ae27c42) +* feat(lang): Add `geiser` for better `Scheme` support (b981c72a0942ca13a4f9fc0da7edcfd4653482fd) +* feat: Configure `eldoc-diffstats` (cb2afb004e92d88b54db1506da54d2f43bc9a87f) +* feat: Add `magit` entry functions (8f9686563559f7b209c289fe24e5d2a6ea9f7c15) +* fix: Annoying `when-let` deprecation (1e4ca284a4e28d9f333fb3b6337dfdcbb1008a60) +* fix: Annoying `if-let` deprecation (4a002dfb13987d967123e1a9c5ba8ed9c80d2fce) +* feat(dired): Make list directories first in `dired` (a502ee445dcfa9d83eff262f9381897044e9c9fd) +* feat(ui) Enable `sideline` by default (ebf0537358f3de9f8204f4421b4fef96e487c6d5) +* feat(vc): Add more `magit` plugins (e47a8d0e873001d769eb39c3e85de9fb0a591897) +* perf(lsp): Add `lsp-smart-req` (fdcddb59e7558346d3dfe80639e8d91f4d7f5890) +* feat(vc): Use `magit` built-in functionalities to display file icons (7d249ad694a58239d3247b673f8e15a92adc4a18) +* feat(ui): Add mail tab group (e0ec5c24c7902f862d4793ffdf8fece6bb14076b) +* feat(fold): Add `savefold` for persistent folding behaviors (98d0f498ccb2d16326f8814c7d4d36a4e2279d51) +* feat(debugger): Combine `debugger` and `run` functionality (2d4048562fc019da0acc6bbc55242d1767cfc90d) +* feat(fold): Add new package `fold-this` (5c9b423ba95419dcb8e81477570778739c1ec851) +* feat(keys): Add support for `defaul-text-scale` (4453b907e5702989ca711c90b3244e04b8f873c6) +* feat(lang): Add support for `Magik` language (5ab68e5a9deb1671a55c36ca81ea866217f2cfd2) +* feat(lang): Add `Odin` support (a69d5c11fb3707c92c47bbe29470e7a3eae8bce3) +* feat(core): Add `back-button` (4da8f3dbcb3ade1598643e2de1ffae5c42b00a4f) ## 9.1.0 > Released Jun 19, 2024 -* feat: Add FASM support ([e049b01][]) -* chore: Remove package `topsy` ([77c5067][]) -* fix: Apply workaround for `highlight-indent-guides` ([e153bd8][]) -* feat: Add Tramp support ([8535af3][]) -* feat: Add PO file support ([59fa6ba][]) -* refactor: Remove built-in log module, use `ic` instead ([70ee1d0][]) -* refactor: Extract template module to external package ([74a2cb8][]) -* feat: Add `.envrc` support ([3ff057f][]) -* chore: Update debugging key bindings ([f2ecb5d][]) -* feat: Add QSS support ([71a175c][]) -* feat: Add and configure Tex completion packages ([31deaa9][]) -* refactor: Move message clean settings to its modules ([727bc53][]) -* feat: Support TailwindCSS completion ([a3b065d][]) -* feat: Support Bootstrap completion ([a3b065d][]) -* feat: Add Svelte support ([e586d9e][]) -* feat: Add ziglint ([9856bbf][]) -* feat: Add module util ([12f7d29][]) -* feat: Support `daemon` ([cdb7187][]) -* chore(sideline): Add display mode config ([3232499][]) -* chore(dashboard): Default to cycle dashboard sections ([1956896][]) -* fix(buffer-menu): Ensure `buffer-menu` is clean ([548ce7e][]) -* chore(sideline): Configure `sideline-eglot` ([def9065][]) -* chore(checker): Mute display diagnostic ([675b982][]) -* chore: Add `guard-lf` package ([d861622][]) -* feat: Notify the user when `indent-tabs-mode` got activated ([7b4eb11][]) -* feat: Replace package `doxygen-asterisk` with `auto-close-block` ([2d56f44][]) -* fix(vc-gutter): Ensure `diff-hl` is updated in all valid buffers ([5380220][]) -* feat(rgb): Replace `rainbow-mode` with `colorful-mode` ([695358c][]) -* feat(tools): Configure `sqlite-mode` ([73dc3b0][]) - -[e049b01]: ../../commit/e049b015df8a52d10271e3a41aeeca631296a7d5 -[77c5067]: ../../commit/77c506758eaca4621cf1a92e9107e5d279721827 -[e153bd8]: ../../commit/e153bd8fd60ec3f6ed11cd8494e94feb7d1cb7c3 -[8535af3]: ../../commit/8535af30d96e173df46515f03e91d50e472dca5e -[59fa6ba]: ../../commit/59fa6ba7d8f30be3f16fe849f41fd3c21a44a852 -[70ee1d0]: ../../commit/70ee1d002ff97cb765b3043e7451f2aeb831e51c -[74a2cb8]: ../../commit/74a2cb84a0fd322d6b4cb73c7a1c0c68cb135f42 -[3ff057f]: ../../commit/3ff057fc9cfa0c931129e6f5496a2eae4211a34e -[f2ecb5d]: ../../commit/f2ecb5dcb94d8abd373d8a3e3c39049029a65a62 -[71a175c]: ../../commit/71a175c4adcfd913131030fb1deb5d2e5f9cc4f0 -[31deaa9]: ../../commit/31deaa9a9850ae904b9325af2b39dc5a57d0d82b -[727bc53]: ../../commit/727bc53d323580215b7ad3a5cb8b5b84c1b14e3f -[a3b065d]: ../../commit/a3b065dba11f27566fce2e24492157138d775646 -[e586d9e]: ../../commit/e586d9e52d06a054faa1829ba0cf69c128481c34 -[9856bbf]: ../../commit/9856bbf5530177613e46127b67054d3925f99a91 -[12f7d29]: ../../commit/12f7d294e66df3eddc6bbec721ef4196144dcf8f -[cdb7187]: ../../commit/cdb7187af574c6aec3ff09010d59fe2a8814f43b -[3232499]: ../../commit/32324992b47b2126241a9ab84410ba7cfdac3752 -[1956896]: ../../commit/1956896dd3f85e1fafb980c8aff5dbf01b1a2507 -[548ce7e]: ../../commit/548ce7ef47490fa8d0b82b838cc4f8a1e739494b -[def9065]: ../../commit/def906559bf90920ff7f2f2df4b8f36dd523230a -[675b982]: ../../commit/675b982533c978624ff5e745d1621edcb7a0d994 -[d861622]: ../../commit/d8616223fb07503dffb3ec4ca75361b203ab5b76 -[7b4eb11]: ../../commit/7b4eb11cf30fae0309445fa86ac8749a1f276ed8 -[2d56f44]: ../../commit/2d56f447ac48f89654fbd93872a32b83f8e40b3c -[5380220]: ../../commit/53802208c3251cf0f7bd2a0043f34c133a21ee1a -[695358c]: ../../commit/695358cbb6475c54aba711615d6f7db61fc9c3fc -[73dc3b0]: ../../commit/73dc3b0adea778ba5c933cb0c203ec3e82bd6979 +* Add FASM support (e049b015df8a52d10271e3a41aeeca631296a7d5) +* Remove package `topsy` (77c506758eaca4621cf1a92e9107e5d279721827) +* fix: Apply workaround for `highlight-indent-guides` (e153bd8fd60ec3f6ed11cd8494e94feb7d1cb7c3) +* feat: Add Tramp support (8535af30d96e173df46515f03e91d50e472dca5e) +* Add PO file support (59fa6ba7d8f30be3f16fe849f41fd3c21a44a852) +* Remove built-in log module, use `ic` instead (70ee1d002ff97cb765b3043e7451f2aeb831e51c) +* Extract template module to external package (74a2cb84a0fd322d6b4cb73c7a1c0c68cb135f42) +* Add `.envrc` support (3ff057fc9cfa0c931129e6f5496a2eae4211a34e) +* Update debugging key bindings (f2ecb5dcb94d8abd373d8a3e3c39049029a65a62) +* Add QSS support (71a175c4adcfd913131030fb1deb5d2e5f9cc4f0) +* feat: Add and configure Tex completion packages (31deaa9a9850ae904b9325af2b39dc5a57d0d82b) +* refactor: Move message clean settings to its modules (727bc53d323580215b7ad3a5cb8b5b84c1b14e3f) +* feat: Support TailwindCSS completion (a3b065dba11f27566fce2e24492157138d775646) +* feat: Support Bootstrap completion (a3b065dba11f27566fce2e24492157138d775646) +* feat: Add Svelte support (e586d9e52d06a054faa1829ba0cf69c128481c34) +* feat: Add ziglint (9856bbf5530177613e46127b67054d3925f99a91) +* feat: Add module util (12f7d294e66df3eddc6bbec721ef4196144dcf8f) +* feat: Support `daemon` (cdb7187af574c6aec3ff09010d59fe2a8814f43b) +* chore(sideline): Add display mode config (32324992b47b2126241a9ab84410ba7cfdac3752) +* chore(dashboard): Default to cycle dashboard sections (1956896dd3f85e1fafb980c8aff5dbf01b1a2507) +* fix(buffer-menu): Ensure `buffer-menu` is clean (548ce7ef47490fa8d0b82b838cc4f8a1e739494b) +* chore(sideline): Configure `sideline-eglot` (def906559bf90920ff7f2f2df4b8f36dd523230a) +* chore(checker): Mute display diagnostic (675b982533c978624ff5e745d1621edcb7a0d994) +* chore: Add `guard-lf` package (d8616223fb07503dffb3ec4ca75361b203ab5b76) +* feat: Notify the user when `indent-tabs-mode` got activated (7b4eb11cf30fae0309445fa86ac8749a1f276ed8) +* feat: feat: Replace package `doxygen-asterisk` with `auto-close-block` (2d56f447ac48f89654fbd93872a32b83f8e40b3c) +* fix(vc-gutter): Ensure `diff-hl` is updated in all valid buffers (53802208c3251cf0f7bd2a0043f34c133a21ee1a) +* feat(rgb): Replace `rainbow-mode` with `colorful-mode` (695358cbb6475c54aba711615d6f7db61fc9c3fc) +* feat(tools): Configure `sqlite-mode` (73dc3b0adea778ba5c933cb0c203ec3e82bd6979) ## 9.0.1 > Released Sep 20, 2023 -* feat: Add new package `makefile-executor` ([e301333][]) -* feat: Add new package `codegpt` ([443b2e1][]) -* feat: Add and config new package `goto-last-change` ([71d0c3d][]) -* feat: Add new package `flycheck-clang-analyzer` ([0ea36fe][]) -* feat: Add new package `codemetrics` ([51032ef][]) -* feat(minibuffer): Bind Shift+Return to insert newline ([41c159b][]) -* feat(cmake): Differentiate file-header template types ([71c9bc6][]) -* feat(auth): Update `auth-source` logic for general use ([8681fb6][]) -* feat: Add `company-dict` ([1b24a4d][]) -* feat(ui): Add nerd-icons support ([3ae70b9][]) -* feat: Enable comment empty lines by default ([2040d77][]) -* fix(lsp): Cannot reconnect to language server ([362a964][]) -* feat(dashboard): Add dashboard navigator ([d81fce7][]) -* fix(ui): `indent-guides` visibility in Emacs 29 ([8456bd0][]) -* feat: Add `sly` for Common Lisp development ([fa0afd2][]) -* feat(lang): Add OpenCL support ([d5723c3][]) -* feat(lang): Add CUDA support ([d5723c3][]) -* feat(ui): Use `context-menu-mode` over `right-click-context` ([a7e563e][]) -* feat(lang): Improve Clojure support ([b84287b][]) -* feat(ui): Add breadcrumb mode ([a81fcc6][]) -* feat(lang): Use `prog-mode` settings in `haskell-cabal-mode` ([fd8dfb5][]) -* feat(lang): Add support for P4 ([3b16789][]) -* feat(lang): Add `company` support for PHP ([30c8b00][]) -* feat(lang): Add `company` support for Perl ([98d4e14][]) -* feat(finance): Configure for beancount ([40ee14e][]) -* feat(lang): Add support for F* ([1dc616a][]) -* feat(lang): Add support for Hylang ([df2337b][]) -* feat(lang): Add support for Scheme ([6fe51f4][]) -* feat(finance): Add support for ledger ([5cc7ba8][]) -* feat(lang): Add support for SML ([031289b][]) -* feat(core): Use built-in first project hook ([84a7695][]) -* feat(lang): Add LaTeX support ([7fbb631][]) -* feat(ui): Add Noir support ([7fbb631][]) -* feat(ui): Enable jump to button in Tree-Sitter debug mode ([02f5172][]) -* feat(keys): Add Windows Menu key bindings ([0cc2bb8][]) -* feat: Add package `chatgpt-sideline` ([65409fc][]) - -[e301333]: ../../commit/e301333ef7585189614bb1fed163caab2e4a0973 -[443b2e1]: ../../commit/443b2e1312368201a8a15d64355e7c9aaf5b8958 -[71d0c3d]: ../../commit/71d0c3dfa0636fc55cc1c023e6383d5946b19e3c -[0ea36fe]: ../../commit/0ea36feb652c0ebe59ab5b80d5739cb23cb4b52b -[51032ef]: ../../commit/51032ef78f5b9827ee76c5c48832974c9bd9cf73 -[41c159b]: ../../commit/41c159ba7d5630fb8e7e235fc8968001f04cbb15 -[71c9bc6]: ../../commit/71c9bc604b57cb2379606a0b6bc12c42bb79ded7 -[8681fb6]: ../../commit/8681fb6800d4b4090c7a84dfd9d927035e2bb66a -[1b24a4d]: ../../commit/1b24a4ddd58943fb37010b7700dac32c8d54bea1 -[3ae70b9]: ../../commit/3ae70b96937dedae3b1fe8fc9edf52ad340795d6 -[2040d77]: ../../commit/2040d77e956cc3c1fb55ec0dae7dfe6c36c2381b -[362a964]: ../../commit/362a96418032da4244c05c810031ed74bc7b25c4 -[d81fce7]: ../../commit/d81fce7fb699f1866839c0bd409475ab758721d4 -[8456bd0]: ../../commit/8456bd051b096af816cd9c0840b6980c21d94c5e -[fa0afd2]: ../../commit/fa0afd2d79b8b464f4f2413fcd93978ef168402f -[d5723c3]: ../../commit/d5723c34ac53c7983cdfb686884478bcacc4d4a6 -[a7e563e]: ../../commit/a7e563ea23121dd6ba340eb8fd8b9daed394f019 -[b84287b]: ../../commit/b84287bde0315c021f73009fcd67e2a0d348d64f -[a81fcc6]: ../../commit/a81fcc65af7357eeb4babb58b97b567c5a453b01 -[fd8dfb5]: ../../commit/fd8dfb5108882e5fc5a1ad74b129e35c3e1ae762 -[3b16789]: ../../commit/3b16789978d380b6be75f465fa2a3d3dbd9610b1 -[30c8b00]: ../../commit/30c8b00169eefb866df062095c1bf33b6d0729ec -[98d4e14]: ../../commit/98d4e1494364ca49bf3cd370a659957674eda100 -[40ee14e]: ../../commit/40ee14e541453e684d1f836dcc2fa47abda9ece9 -[1dc616a]: ../../commit/1dc616adae9bdcbf1810058b3d078f831be5cd34 -[df2337b]: ../../commit/df2337bfb3ef64a3c2e9cbd5422df7eb66b9e698 -[6fe51f4]: ../../commit/6fe51f46592cd3e6ceee1ae274b086b046dc93b0 -[5cc7ba8]: ../../commit/5cc7ba8abad0864f9d435519bb35bf45b32d2dcb -[031289b]: ../../commit/031289bf682aa956cd322e1e1078408f0d79e8ce -[84a7695]: ../../commit/84a7695b668debed6fb59bbd5313ff9be897d6b7 -[7fbb631]: ../../commit/7fbb631c54b82aa43a80c4ad7733143c89773ff1 -[02f5172]: ../../commit/02f5172c7d061732bb0f154ded5898c1baaf16b9 -[0cc2bb8]: ../../commit/0cc2bb8d938f6a549cc3ae9a15ba4776010c6fa8 -[65409fc]: ../../commit/65409fc4c68254b18ce209e64fcf74b016e2413e +* Add new package `makefile-executor` (e301333ef7585189614bb1fed163caab2e4a0973) +* Add new package `codegpt` (443b2e1312368201a8a15d64355e7c9aaf5b8958) +* Add and config new package `goto-last-change` (71d0c3dfa0636fc55cc1c023e6383d5946b19e3c) +* Add new package `flycheck-clang-analyzer` (0ea36feb652c0ebe59ab5b80d5739cb23cb4b52b) +* Add new package `codemetrics` (51032ef78f5b9827ee76c5c48832974c9bd9cf73) +* Bind Shift+return to insert `newline` in minibuffer (41c159ba7d5630fb8e7e235fc8968001f04cbb15) +* Ask CMake file-header template to differentiate `default`, `root`, and `subdirectory` (71c9bc604b57cb2379606a0b6bc12c42bb79ded7) +* Update auth-source logic for more general use (8681fb6800d4b4090c7a84dfd9d927035e2bb66a) +* Add `company-dict` (1b24a4ddd58943fb37010b7700dac32c8d54bea1) +* Add nerd-icons support (3ae70b96937dedae3b1fe8fc9edf52ad340795d6) +* Enable comment empty lines by default (2040d77e956cc3c1fb55ec0dae7dfe6c36c2381b) +* Fix cannot re-connect to language server issue (362a96418032da4244c05c810031ed74bc7b25c4) +* Add dashboard's navigator (d81fce7fb699f1866839c0bd409475ab758721d4) +* Fix `indent-guides` is not obvious in 29.x (8456bd051b096af816cd9c0840b6980c21d94c5e) +* Add `sly` to support common lisp development (fa0afd2d79b8b464f4f2413fcd93978ef168402f) +* Add support for OpenCL (d5723c34ac53c7983cdfb686884478bcacc4d4a6) +* Add support for CUDA (d5723c34ac53c7983cdfb686884478bcacc4d4a6) +* Use `context-menu-mode` instead of `right-click-context` (a7e563ea23121dd6ba340eb8fd8b9daed394f019) +* Add more support for Clojure language (b84287bde0315c021f73009fcd67e2a0d348d64f) +* Add breadcrumb mode (a81fcc65af7357eeb4babb58b97b567c5a453b01) +* Use prog mode settings for `haskell-cabal-mode` (fd8dfb5108882e5fc5a1ad74b129e35c3e1ae762) +* Add support for P4 (3b16789978d380b6be75f465fa2a3d3dbd9610b1) +* Add company support for PHP (30c8b00169eefb866df062095c1bf33b6d0729ec) +* Add company support for Perl (98d4e1494364ca49bf3cd370a659957674eda100) +* Configure for beancount (40ee14e541453e684d1f836dcc2fa47abda9ece9) +* Add support for F* (1dc616adae9bdcbf1810058b3d078f831be5cd34) +* Add support for Hylang (df2337bfb3ef64a3c2e9cbd5422df7eb66b9e698) +* Add support for Scheme (6fe51f46592cd3e6ceee1ae274b086b046dc93b0) +* Add support for ledger (5cc7ba8abad0864f9d435519bb35bf45b32d2dcb) +* Add support for SML (031289bf682aa956cd322e1e1078408f0d79e8ce) +* Use built-in on first project hook (84a7695b668debed6fb59bbd5313ff9be897d6b7) +* Add LaTex support (7fbb631c54b82aa43a80c4ad7733143c89773ff1) +* Add Noir support (7fbb631c54b82aa43a80c4ad7733143c89773ff1) +* Enable jump to button in Tree-Sitter debug mode (02f5172c7d061732bb0f154ded5898c1baaf16b9) +* Add Windows Menu's key bindings (0cc2bb8d938f6a549cc3ae9a15ba4776010c6fa8) +* Add package `chatgpt-sideline` (65409fc4c68254b18ce209e64fcf74b016e2413e) ## 9.0.0 > Released Jan 01, 2023 -* feat: Add new package `company-kaomoji` ([1cc6b70][]) -* refactor: Refactor `ts-fold-indicators` face function and get queries function ([27e6148][]) -* feat: Add OCaml support ([ddaaf11][]) -* feat: Add support for `elfeed` ([7a3c3ad][]) -* fix: Cancel `echo-bar` right padding by default ([75416a7][]) -* feat: Add new packages `org-superstar` and `org-fancy-priorities` ([695f5f4][]) -* feat: Add new package `hammy` ([8ea21aa][]) -* feat: Enable `display-fill-column-indicator-mode` in `text-mode` by default ([5283fd9][]) -* feat: Enhance experience with `org-superstars` ([5c240a6][]) -* feat: Add new package `sideline-color` ([6c472aa][]) -* feat: Add support for `haml-mode` ([b50bbb2][]) -* chore: Use package-menu to upgrade packages instead of the prompt ([5903e43][]) -* refactor: Extract message utility functions to separate module, `msgu` ([d3957be][]) -* fix: Fix does upgradable menu after package list is refreshed ([09d7840][]) -* feat: Add clear filter key for `package-menu` mode ([bf36721][]) -* feat: Load `eask-api` when in valid Eask related project ([5644b51][]) -* feat: Add new package `editorconfig-generate` ([afd3fa0][]) -* keybind: Bind key `C-M-k` to `kill-this-buffer` ([758c464][]) -* chore: Remove `buffer-menu` feature on display project name ([74feaa9][]) -* refactor: Use macro to define `file-header` insertion functions ([e5e2006][]) -* refactor: Re-define file header source with utility macro ([ca4d8e4][]) -* feat: Turn `completion-ignore-case` on by default ([b94542c][]) -* feat: Add new package `minimap` ([ae9ef5a][]) -* chore: Replace package `docstr` with `ts-docstr` for better parsing capability ([ee85ba4][]) -* feat: Add new package `highlight-doxygen` ([ee85ba4][]) -* feat: Enable `minibuffer-depth-indicate-mode` by default ([83ecd6c][]) -* fix: Fix typescript insertion with `ts-docstr` ([ec8a559][]) -* feat: Add new package `toggle-profiler` ([eecf032][]) -* keybind: Bind new key to command `keyboard-escape-quit` ([3ce9d3f][]) -* keybind: Bind new key to command `toggle-profiler` ([f49dfeb][]) -* keybind: Bind new key to command `ts-docstr-ask` ([9836e3d][]) -* feat: Add new packages `gitlab-ci-mode` and `gitlab-ci-mode-flycheck` ([984fc83][]) -* chore: Remove unnecessary config to `auto-mode-alist` ([0dad622][]) -* feat: Add new package `sln-mode` to handle `*.sln` file ([673a263][]) -* feat: Add new font `Symbola.ttf` for Windows' unicode display ([98a7455][]) -* refactor: Extract undo/redo module to external package `undo-tree-vf` ([391bb1e][]) -* refactor: Use built-in `bolp` and `eolp` functions instead ([0504aa5][]) -* refactor: Extract parent directory not found when file creation module to external package `ff-guard` ([0085929][]) -* feat: Add new package `prettier` ([a2af4f7][]) -* feat: Add new package `vs-electric-spacing` ([a04369b][]) -* feat: Add new package `terminal-here` ([56ad79f][]) -* feat: Add new package `quickrun` ([e13899b][]) -* refactor: Extract select file in project/pwd to external `ffap` ([e9b7c04][]) -* refactor: Extract [@cmuratori](https://github.com/cmuratori)'s run/make script feature to external `execrun` ([83d90d5][]) -* refactor: Extract find corresponding file module to external package `fof` ([b7d018b][]) -* refactor: Extract VSCode editing experience to external package `vsc-edit-mode` ([744eb52][]) -* chore: Removed complex line number configuration, keep it simple ([f78fd0b][]) -* chore: Remove dashboard's previous/next blank-lines navigation keys ([bfef0c1][]) -* refactor: Extract package module to external package `pkg-dm` ([9051c25][]) -* refactor: Use `elenv` for emacs-lisp environment ([92c9db4][]) -* chore: Remove previouse/next key type option ([a4a605f][]) -* refactor: Extract previous/next blank line keys to external package `block-travel` ([9f624c1][]) -* feat: Add packages for feature sticky header, `topsy` and `org-sticky-header` ([a9f01c9][]) -* feat: Add support for Terraform ([d241fc7][]) -* feat: Add support for Zig ([2911e87][]) -* feat: Add support for Racket ([f2f314f][]) -* feat: Add support for Idris ([9901371][]) -* feat: Add support for VHDL ([185046a][]) -* feat: Add support for Mint ([9d50d8a][]) -* perf: Improve EWW UX ([b954b8f][]) -* perf: Improve `image-mode` UX ([80127d5][]) -* feat: Add `emp` as default music player ([2861743][]) -* keybind: Bind keys for `emp` ([f5183be][]) -* keybind: Bind keys for `eww` ([500696b][]) -* feat: Add support for fish shell-script ([44ed976][]) -* feat: Add support for ansible ([cb91bee][]) -* chore: Remove `rjsx-mode` and `js2-mode`, use default `js-mode` and `js-jsx-mode` ([d3b76f6][]) -* feat: Add `company` and `flycheck` support for multiple languages ([4f71184][]) -* chore: Split moduels to each individual `config.el` file ([d97ef5c][]) -* feat: Allow `lsp-mode` being active in file without the `project-root` being defined ([b737a65][]) -* feat: Add support for elisp keywords completion ([19f8736][]) -* refactor: Extract modeline display to external package `jcs-modeline` ([3cb0a63][]) -* feat: Replace `toggle-quotes` with new package `cycle-quotes` ([53c69a8][]) -* chore: Remove unused command to toggle forward/backward sexp ([4703c7f][]) -* keybind: Bind keys for `cycle-quote` and `cycle-slash` ([8e5dec8][]) -* feat: Replace `bool-flip` with new package `cycle-at-point` ([e339971][]) -* feat: Add new package `cycle-case-style` ([6cad703][]) -* feat: Add eldoc support for CSS ([9b9b4cd][]) -* feat: Add eldoc support for TOML ([a0eb8ed][]) -* chore: Use `literate-calc-mode` instead of self-defined calc command ([691186d][]) -* chore: Move back to use `use-package` ([9d2ead7][]) -* chore: Make echo all `re-mode` commands ([26a37fa][]) -* feat: All major-mode for all .ignore files ([a14a111][]) -* feat: Add another file paths completion package, `company-paths` ([a73cafc][]) -* feat: Integrate `magit` ([54953d7][]) -* feat: Add new package `vc-refrest` for better UX ([91625bc][]) -* feat: Add support for `epub` reader ([04a1bd1][]) -* feat: Add new package `free-keys` ([9925b4c][]) -* feat: Add new package `npm-mode` ([78ad3a6][]) -* feat: Add new package `k8s-mode` for kubernetes configuration file ([0db8edb][]) -* feat: Add new module for languages `PureScript` ([8ffb007][]) -* feat: Add support for `PKGBUILD` file ([b14cf80][]) -* feat: Add company support for Eask-file, `company-eask` ([21655da][]) -* feat: Add eldoc support for Eask-file, `eldoc-eask` ([fcd6247][]) -* chore: Remove `nhexl-mode`, and use `hexl-mode` instead ([487e8ec][]) -* feat: Add annotation for `file-header` templates ([5d32dbe][]) - -[1cc6b70]: ../../commit/1cc6b70e9ab4ae3fc893482c1d38986da6b32e87 -[27e6148]: ../../commit/27e614884c1cb84d8f832280d253d387cdde99b4 -[ddaaf11]: ../../commit/ddaaf11b98c88c709fecd5db8b8214a63e1bb00f -[7a3c3ad]: ../../commit/7a3c3ad99bea5088da2c7d681552f55914b37934 -[75416a7]: ../../commit/75416a77c6bb0eef90b71a2ee09ab42202bc7bb5 -[695f5f4]: ../../commit/695f5f46e611de1529c6bbd57cd251386616d2f7 -[8ea21aa]: ../../commit/8ea21aa67e98efd9a8eb846e6b908fb500afab52 -[5283fd9]: ../../commit/5283fd976574ecd322e77556bcd0b6790eed7403 -[5c240a6]: ../../commit/5c240a626fe60685f2768eb17a6dbfcc61452134 -[6c472aa]: ../../commit/6c472aa4c92069551a0707760e3d41c12dcd7411 -[b50bbb2]: ../../commit/b50bbb26cfddab3e16d849f65e33894ec5a70177 -[5903e43]: ../../commit/5903e431921a10f023247ba59ee78eaaa59fc961 -[d3957be]: ../../commit/d3957bec1ffd3668a5f8861644f6ec2953cd3781 -[09d7840]: ../../commit/09d78404f7e8f0bec64d4df78ae9f90e7c6069d9 -[bf36721]: ../../commit/bf36721805a48b6319bd5eb1b9064129af293560 -[5644b51]: ../../commit/5644b5128cb1f132b9b552cc745377be8528b435 -[afd3fa0]: ../../commit/afd3fa07135fd9154b551fffb20822316cf4e3d7 -[758c464]: ../../commit/758c464dfe76bad0053ce82f4064f382a1ae4ac3 -[74feaa9]: ../../commit/74feaa938d4be1667bab1c1f68308f8c6a250208 -[e5e2006]: ../../commit/e5e200684f25325c70906a53a84f526328bc6fbf -[ca4d8e4]: ../../commit/ca4d8e49ba80f78bd34ff610a442c8a8bf7bc097 -[b94542c]: ../../commit/b94542cb51736f26a3842753bbc268116fa4ba06 -[ae9ef5a]: ../../commit/ae9ef5a0d93bf8f924c8572d00f026dace2079a3 -[ee85ba4]: ../../commit/ee85ba4b01401707461ec695038f2ee4cc175f74 -[83ecd6c]: ../../commit/83ecd6c2b256d2fa0dd3b6fa64236ad5aab2843f -[ec8a559]: ../../commit/ec8a5592e8f4e6ba707d36218461e2f0a9329822 -[eecf032]: ../../commit/eecf0323d3af8fdcc2b3c2c8e8e62dd78774a3b7 -[3ce9d3f]: ../../commit/3ce9d3ff4ae965a31f1855bf6f9b11c31e2576be -[f49dfeb]: ../../commit/f49dfeb07c1e0d3d879cb3acdfb4a5ab892326f2 -[9836e3d]: ../../commit/9836e3d76afeadcb75c0d7378d38b209dda50e82 -[984fc83]: ../../commit/984fc836ecb832e047409a1efa03c806205a7c9e -[0dad622]: ../../commit/0dad6227b3372d530f55032726693ab41541e8a7 -[673a263]: ../../commit/673a2635efccd1e5258a157e738f8ebdb35f567a -[98a7455]: ../../commit/98a74550b9edfcbe30d403418263b6594582652c -[391bb1e]: ../../commit/391bb1e4b1416c1c7f54a19f07c6b83ccd3e4524 -[0504aa5]: ../../commit/0504aa597efd52e9efbefe3e2338349cc5d458fc -[0085929]: ../../commit/008592968fea55e925c0bbe8e5412b93a4dde7c3 -[a2af4f7]: ../../commit/a2af4f74eea9e6b7861db8babb1de2a4909247a2 -[a04369b]: ../../commit/a04369b5ebfa1db7a47bcf156f80614959685190 -[56ad79f]: ../../commit/56ad79fdf537fc1d7380ff4adc71dea5051e00ac -[e13899b]: ../../commit/e13899b04affe5157a0cacff52b24c1925c293f4 -[e9b7c04]: ../../commit/e9b7c045a2cbd2dfdfc4f519e24a973a0807410b -[83d90d5]: ../../commit/83d90d53e5324e22e5fbf3c174487ddd22fd7117 -[b7d018b]: ../../commit/b7d018be296f55ca5cd8859b53c68efe326a2399 -[744eb52]: ../../commit/744eb525d3c90055528f650e3991614eb172684a -[f78fd0b]: ../../commit/f78fd0b8b96b8fb113f6156d346689622967fa15 -[bfef0c1]: ../../commit/bfef0c196ac7fdc307552b6d5f663279d540cba4 -[9051c25]: ../../commit/9051c25ce5c07542ea0a52bfb4192d74ac8d1453 -[92c9db4]: ../../commit/92c9db4dbbe49072874fd18d2c27b44a5384bfd4 -[a4a605f]: ../../commit/a4a605f44e18ae2161a8e87598e636bf9f1f51a9 -[9f624c1]: ../../commit/9f624c1bbb7259da65fd9b468812358d53ee36ca -[a9f01c9]: ../../commit/a9f01c9ce319e27e04e1a8fac3b56ed14f3d65ab -[d241fc7]: ../../commit/d241fc77d5c13b3e01e1d0dfd78147b3a7c9a59d -[2911e87]: ../../commit/2911e870dce6238ab6d960a287cd25c64576bb33 -[f2f314f]: ../../commit/f2f314f1eb670b7508c661cf68e0033292fe256c -[9901371]: ../../commit/99013713d649e59f07fae5a2bf9e7fe5f96f0800 -[185046a]: ../../commit/185046a34e06bc8c4a6abf57c4f6d843a66da722 -[9d50d8a]: ../../commit/9d50d8a05767f32c373f13240f3eaeb9440f6582 -[b954b8f]: ../../commit/b954b8f5f1782a500eb4a7fda688a8fab0aebd27 -[80127d5]: ../../commit/80127d5060bbf6ae871d87502dfff27a73c123fe -[2861743]: ../../commit/2861743073ecd2e6d7608dac8021fc400104c4bb -[f5183be]: ../../commit/f5183bee81fea5b0e832ed39282ad76ee9ed70e8 -[500696b]: ../../commit/500696b4403a50f83951532f0e31ab4b1cd5a2bb -[44ed976]: ../../commit/44ed9764a7f2dc3e3632c6b0136390a97bce74e4 -[cb91bee]: ../../commit/cb91beeff65b63539a2893f67aaa888d9d53dc7b -[d3b76f6]: ../../commit/d3b76f615c5030a54ec3d74517a43c734700be50 -[4f71184]: ../../commit/4f71184b0eab6b65bc7f57d615494f9d88afb020 -[d97ef5c]: ../../commit/d97ef5c27090d65e3ba555c41443f5d877764493 -[b737a65]: ../../commit/b737a6515e51b23dfb42c11ab2e49a54f48b9ca4 -[19f8736]: ../../commit/19f87363c77d15602f09dd358ce9237fe47ccca1 -[3cb0a63]: ../../commit/3cb0a6304d4b95fca9a35b4efbf6434eae4494ed -[53c69a8]: ../../commit/53c69a8532142b4ede97df717e07c29fff9e66a5 -[4703c7f]: ../../commit/4703c7fc81152f8818f5c4cba907d64980ae4c0c -[8e5dec8]: ../../commit/8e5dec85c47c4c9ff35e48df6bcbf317b687cc93 -[e339971]: ../../commit/e3399712e28730fa8b474032e6e17664f153ac68 -[6cad703]: ../../commit/6cad7031a6b0ef58bbf74e74e020b272d53e4b19 -[9b9b4cd]: ../../commit/9b9b4cd493ef35d31a78300c94cae9ad9e778c84 -[a0eb8ed]: ../../commit/a0eb8ed975a9a7367ff94789d48f80ebb207dbf3 -[691186d]: ../../commit/691186d362f79838291779bac6bf50e76eebc015 -[9d2ead7]: ../../commit/9d2ead748c345b8edcf17fb9ee0e58b1b7464f09 -[26a37fa]: ../../commit/26a37fa3b4b6e8f9125a4c8c133e8df03681a496 -[a14a111]: ../../commit/a14a111e8c59c08718f620a455a1c14e26f8779e -[a73cafc]: ../../commit/a73cafcaf2f36192de06eeb3096a856f05e01113 -[54953d7]: ../../commit/54953d780fc9962d5d373cabb9a3c3a2f2c7629e -[91625bc]: ../../commit/91625bc0ff66f773c8c040b3d56b2e64de8ba497 -[04a1bd1]: ../../commit/04a1bd1eba474f6949e96f2ec23befc96847de56 -[9925b4c]: ../../commit/9925b4ce6dd513843b07b1edae07565366bc8857 -[78ad3a6]: ../../commit/78ad3a6cae3cc273c7c10695b1b5a5e5941ec686 -[0db8edb]: ../../commit/0db8edb596c264a9256ebf20ea74dd9b9e422a04 -[8ffb007]: ../../commit/8ffb007bda2281a53b29782b898c2339033846ab -[b14cf80]: ../../commit/b14cf80ecac042047e89dbb870ff79e75769bb8c -[21655da]: ../../commit/21655da7edbad6f85aed6cce67994948d831bfe0 -[fcd6247]: ../../commit/fcd62477d4caa5d8c442568e37fd37d3309f0655 -[487e8ec]: ../../commit/487e8ec100b915d82205216013c59dd4669e8902 -[5d32dbe]: ../../commit/5d32dbe973a74cb918a32cd7489773eab247561c +* Add new package `company-kaomoji` (1cc6b70e9ab4ae3fc893482c1d38986da6b32e87) +* Refactor `ts-fold-indicators` face function and get queries function (27e614884c1cb84d8f832280d253d387cdde99b4) +* Add OCaml support (ddaaf11b98c88c709fecd5db8b8214a63e1bb00f) +* Add support for `elfeed` (7a3c3ad99bea5088da2c7d681552f55914b37934) +* Cancel `echo-bar` right padding by default (75416a77c6bb0eef90b71a2ee09ab42202bc7bb5) +* Add new packages `org-superstar` and `org-fancy-priorities` (695f5f46e611de1529c6bbd57cd251386616d2f7) +* Add new package `hammy` (8ea21aa67e98efd9a8eb846e6b908fb500afab52) +* Enable `display-fill-column-indicator-mode` in `text-mode` by default (5283fd976574ecd322e77556bcd0b6790eed7403) +* Enhance experience with `org-superstars` (5c240a626fe60685f2768eb17a6dbfcc61452134) +* Add new package `sideline-color` (6c472aa4c92069551a0707760e3d41c12dcd7411) +* Add support for `haml-mode` (b50bbb26cfddab3e16d849f65e33894ec5a70177) +* Use package-menu to upgrade packages instead of the prompt (5903e431921a10f023247ba59ee78eaaa59fc961) +* Extract message utility functions to separate module, `msgu` (d3957bec1ffd3668a5f8861644f6ec2953cd3781) +* Fix does upgradable menu after package list is refreshed (09d78404f7e8f0bec64d4df78ae9f90e7c6069d9) +* Add clear filter key for `package-menu` mode (bf36721805a48b6319bd5eb1b9064129af293560) +* Load `eask-api` when in valid Eask related project (5644b5128cb1f132b9b552cc745377be8528b435) +* Add new package `editorconfig-generate` (afd3fa07135fd9154b551fffb20822316cf4e3d7) +* Bind key `C-M-k` to `kill-this-buffer` (758c464dfe76bad0053ce82f4064f382a1ae4ac3) +* Remove `buffer-menu` feature on display project name (74feaa938d4be1667bab1c1f68308f8c6a250208) +* Use macro to define `file-header` insertion functions (e5e200684f25325c70906a53a84f526328bc6fbf) +* Re-define file header source with utility macro (ca4d8e49ba80f78bd34ff610a442c8a8bf7bc097) +* Turn `completion-ignore-case` on by default (b94542cb51736f26a3842753bbc268116fa4ba06) +* Add new package `minimap` (ae9ef5a0d93bf8f924c8572d00f026dace2079a3) +* Replace package `docstr` with `ts-docstr` for better parsing capability (ee85ba4b01401707461ec695038f2ee4cc175f74) +* Add new package `highlight-doxygen` (ee85ba4b01401707461ec695038f2ee4cc175f74) +* Enable `minibuffer-depth-indicate-mode` by default (83ecd6c2b256d2fa0dd3b6fa64236ad5aab2843f) +* Fix typescript insertion with `ts-docstr` (ec8a5592e8f4e6ba707d36218461e2f0a9329822) +* Add new package `toggle-profiler` (eecf0323d3af8fdcc2b3c2c8e8e62dd78774a3b7) +* Bind new key to command `keyboard-escape-quit` (3ce9d3ff4ae965a31f1855bf6f9b11c31e2576be) +* Bind new key to command `toggle-profiler` (f49dfeb07c1e0d3d879cb3acdfb4a5ab892326f2) +* Bind new key to command `ts-docstr-ask` (9836e3d76afeadcb75c0d7378d38b209dda50e82) +* Add new packages `gitlab-ci-mode` and `gitlab-ci-mode-flycheck` (984fc836ecb832e047409a1efa03c806205a7c9e) +* Remove unnecessary config to `auto-mode-alist` (0dad6227b3372d530f55032726693ab41541e8a7) +* Add new package `sln-mode` to handle `*.sln` file (673a2635efccd1e5258a157e738f8ebdb35f567a) +* Add new font `Symbola.ttf` for Windows' unicode display (98a74550b9edfcbe30d403418263b6594582652c) +* Extract undo/redo module to external package `undo-tree-vf` (391bb1e4b1416c1c7f54a19f07c6b83ccd3e4524) +* Use built-in `bolp` and `eolp` functions instead (0504aa597efd52e9efbefe3e2338349cc5d458fc) +* Extract parent directory not found when file creation module to external package `ff-guard` (008592968fea55e925c0bbe8e5412b93a4dde7c3) +* Add new package `prettier` (a2af4f74eea9e6b7861db8babb1de2a4909247a2) +* Add new package `vs-electric-spacing` (a04369b5ebfa1db7a47bcf156f80614959685190) +* Add new package `terminal-here` (56ad79fdf537fc1d7380ff4adc71dea5051e00ac) +* Add new package `quickrun` (e13899b04affe5157a0cacff52b24c1925c293f4) +* Extract select file in project/pwd to external `ffap` (e9b7c045a2cbd2dfdfc4f519e24a973a0807410b) +* Extract [@cmuratori](https://github.com/cmuratori)'s run/make script feature to external `execrun` (83d90d53e5324e22e5fbf3c174487ddd22fd7117) +* Extract find corresponding file module to external package `fof` (b7d018be296f55ca5cd8859b53c68efe326a2399) +* Extract VSCode editing experience to external package `vsc-edit-mode` (744eb525d3c90055528f650e3991614eb172684a) +* Removed complex line number configuration, keep it simple (f78fd0b8b96b8fb113f6156d346689622967fa15) +* Remove dashboard's previous/next blank-lines navigation keys (bfef0c196ac7fdc307552b6d5f663279d540cba4) +* Extract package module to external package `pkg-dm` (9051c25ce5c07542ea0a52bfb4192d74ac8d1453) +* Use `elenv` for emacs-lisp environment (92c9db4dbbe49072874fd18d2c27b44a5384bfd4) +* Remove previouse/next key type option (a4a605f44e18ae2161a8e87598e636bf9f1f51a9) +* Extract previous/next blank line keys to external package `block-travel` (9f624c1bbb7259da65fd9b468812358d53ee36ca) +* Add packages for feature sticky header, `topsy` and `org-sticky-header` (a9f01c9ce319e27e04e1a8fac3b56ed14f3d65ab) +* Add support for Terraform (d241fc77d5c13b3e01e1d0dfd78147b3a7c9a59d) +* Add support for Zig (2911e870dce6238ab6d960a287cd25c64576bb33) +* Add support for Racket (f2f314f1eb670b7508c661cf68e0033292fe256c) +* Add support for Idris (99013713d649e59f07fae5a2bf9e7fe5f96f0800) +* Add support for VHDL (185046a34e06bc8c4a6abf57c4f6d843a66da722) +* Add support for Mint (9d50d8a05767f32c373f13240f3eaeb9440f6582) +* Improve EWW UX (b954b8f5f1782a500eb4a7fda688a8fab0aebd27) +* Improve `image-mode` UX (80127d5060bbf6ae871d87502dfff27a73c123fe) +* Add `emp` as default music player (2861743073ecd2e6d7608dac8021fc400104c4bb) +* Bind keys for `emp` (f5183bee81fea5b0e832ed39282ad76ee9ed70e8) +* Bind keys for `eww` (500696b4403a50f83951532f0e31ab4b1cd5a2bb) +* Add support for fish shell-script (44ed9764a7f2dc3e3632c6b0136390a97bce74e4) +* Add support for ansible (cb91beeff65b63539a2893f67aaa888d9d53dc7b) +* Remove `rjsx-mode` and `js2-mode`, use default `js-mode` and `js-jsx-mode` (d3b76f615c5030a54ec3d74517a43c734700be50) +* Add `company` and `flycheck` support for multiple languages (4f71184b0eab6b65bc7f57d615494f9d88afb020) +* Split moduels to each individual `config.el` file (d97ef5c27090d65e3ba555c41443f5d877764493) +* Allow `lsp-mode` being active in file without the `project-root` being defined (b737a6515e51b23dfb42c11ab2e49a54f48b9ca4) +* Add support for elisp keywords completion (19f87363c77d15602f09dd358ce9237fe47ccca1) +* Extract modeline display to external package `jcs-modeline` (3cb0a6304d4b95fca9a35b4efbf6434eae4494ed) +* Replace `toggle-quotes` with new package `cycle-quotes` (53c69a8532142b4ede97df717e07c29fff9e66a5) +* Remove unused command to toggle forward/backward sexp (4703c7fc81152f8818f5c4cba907d64980ae4c0c) +* Bind keys for `cycle-quote` and `cycle-slash` (8e5dec85c47c4c9ff35e48df6bcbf317b687cc93) +* Replace `bool-flip` with new package `cycle-at-point` (e3399712e28730fa8b474032e6e17664f153ac68) +* Add new package `cycle-case-style` (6cad7031a6b0ef58bbf74e74e020b272d53e4b19) +* Add eldoc support for CSS (9b9b4cd493ef35d31a78300c94cae9ad9e778c84) +* Add eldoc support for TOML (a0eb8ed975a9a7367ff94789d48f80ebb207dbf3) +* Use `literate-calc-mode` instead of self-defined calc command (691186d362f79838291779bac6bf50e76eebc015) +* Move back to use `use-package` (9d2ead748c345b8edcf17fb9ee0e58b1b7464f09) +* Make echo all `re-mode` commands (26a37fa3b4b6e8f9125a4c8c133e8df03681a496) +* All major-mode for all .ignore files (a14a111e8c59c08718f620a455a1c14e26f8779e) +* Add another file paths completion package, `company-paths` (a73cafcaf2f36192de06eeb3096a856f05e01113) +* Integrate `magit` (54953d780fc9962d5d373cabb9a3c3a2f2c7629e) +* Add new package `vc-refrest` for better UX (91625bc0ff66f773c8c040b3d56b2e64de8ba497) +* Add support for `epub` reader (04a1bd1eba474f6949e96f2ec23befc96847de56) +* Add new package `free-keys` (9925b4ce6dd513843b07b1edae07565366bc8857) +* Add new package `npm-mode` (78ad3a6cae3cc273c7c10695b1b5a5e5941ec686) +* Add new package `k8s-mode` for kubernetes configuration file (0db8edb596c264a9256ebf20ea74dd9b9e422a04) +* Add new module for languages `PureScript` (8ffb007bda2281a53b29782b898c2339033846ab) +* Add support for `PKGBUILD` file (b14cf80ecac042047e89dbb870ff79e75769bb8c) +* Add company support for Eask-file, `company-eask` (21655da7edbad6f85aed6cce67994948d831bfe0) +* Add eldoc support for Eask-file, `eldoc-eask` (fcd62477d4caa5d8c442568e37fd37d3309f0655) +* Remove `nhexl-mode`, and use `hexl-mode` instead (487e8ec100b915d82205216013c59dd4669e8902) +* Add annotation for `file-header` templates (5d32dbe973a74cb918a32cd7489773eab247561c) ## 8.2.1 > Released Jul 22, 2022 -* Add new package `sideline-blame` ([c471339][]) -* Add new package `sideline-flymake` ([322b5bb][]) -* Add new package `echo-bar` ([26c0bf7][]) -* Change modeline color while debugging ([c4f224f][]) -* Add new package `company-dockerfile` ([ebb3556][]) -* Add new package `company-powershell` ([3929062][]) -* Add new package `company-cmd` ([b7ed059][]) -* Add new package `company-makefile` ([0e1d62a][]) -* Add new package `company-autoconf` ([cec8940][]) -* Add new package `company-coffee` ([74e5a42][]) -* Refactor to use default function to get `*Messages*` buffer instead of declaring another variable explicitly in the global scope ([ac7f079][]) -* Use default function to get `*scratch*` buffer ([b6909cc][]) -* Replace built-in progress reporter with external library `prt` ([aa0f6d8][]) -* Use built-in `scratch-buffer` function instead ([5a0957f][]) -* Fix function name `startup--get-buffer-create-scratch` to get scratch buffer `get-scratch-buffer-create` ([8788c30][]) -* Drop support for Emacs 28.x ([7fa6129][]) -* Diminish buffer `*Bug Help*` as default ([cef9be2][]) - -[c471339]: ../../commit/c4713396e8937da498083bd3730f28bc114e3b47 -[322b5bb]: ../../commit/322b5bb5123a60c5dbdcb11458d2c7eca92fe9a0 -[26c0bf7]: ../../commit/26c0bf7c657a29368486aac112439a8507927b21 -[c4f224f]: ../../commit/c4f224fe926400089d8896f3a89fe545e12e66a2 -[ebb3556]: ../../commit/ebb3556e9cb79f66f191e39dee8738d2cd1d33bc -[3929062]: ../../commit/39290625a468462d2ebaccc6a7d8cf4f13851311 -[b7ed059]: ../../commit/b7ed05973c8b8b02a729734d1303ed1291dccba4 -[0e1d62a]: ../../commit/0e1d62adddfb8babf9ab1478af58e1519d1f7a28 -[cec8940]: ../../commit/cec8940857a8bb434ecf0a37188cd6840602b70c -[74e5a42]: ../../commit/74e5a42eebaf812f266a4a508d059bed33c7986f -[ac7f079]: ../../commit/ac7f0791c1f1e3de16a14831d07280957b77e244 -[b6909cc]: ../../commit/b6909ccb5f9f4fa6af211ac1e9bb0fd50afc7255 -[aa0f6d8]: ../../commit/aa0f6d8bbfe882e2ba4f783e6eca431b392c04cc -[5a0957f]: ../../commit/5a0957f214aa786b2ea82e41a2aff3052c63eda3 -[8788c30]: ../../commit/8788c3015561faf13c46e12a9e5febc5b1a983c2 -[7fa6129]: ../../commit/7fa61292bd1553cee46884a98f4959933b55bb12 -[cef9be2]: ../../commit/cef9be24f401405fe58aed4496e6cac52099487b +* Add new package `sideline-blame` (c4713396e8937da498083bd3730f28bc114e3b47) +* Add new package `sideline-flymake` (322b5bb5123a60c5dbdcb11458d2c7eca92fe9a0) +* Add new package `echo-bar` (26c0bf7c657a29368486aac112439a8507927b21) +* Change modeline color while debugging (c4f224fe926400089d8896f3a89fe545e12e66a2) +* Add new package `company-dockerfile` (ebb3556e9cb79f66f191e39dee8738d2cd1d33bc) +* Add new package `company-powershell` (39290625a468462d2ebaccc6a7d8cf4f13851311) +* Add new package `company-cmd` (b7ed05973c8b8b02a729734d1303ed1291dccba4) +* Add new package `company-makefile` (0e1d62adddfb8babf9ab1478af58e1519d1f7a28) +* Add new package `company-autoconf` (cec8940857a8bb434ecf0a37188cd6840602b70c) +* Add new package `company-coffee` (74e5a42eebaf812f266a4a508d059bed33c7986f) +* Refactor to use default function to get `*Messages*` buffer instead of declaring another variable explicitly in the global scope (ac7f0791c1f1e3de16a14831d07280957b77e244) +* Use default function to get `*scratch*` buffer (b6909ccb5f9f4fa6af211ac1e9bb0fd50afc7255) +* Replace built-in progress reporter with external library `prt` (aa0f6d8bbfe882e2ba4f783e6eca431b392c04cc) +* Use built-in `scratch-buffer` function instead (5a0957f214aa786b2ea82e41a2aff3052c63eda3) +* Fix function name `startup--get-buffer-create-scratch` to get scratch buffer `get-scratch-buffer-create` (8788c3015561faf13c46e12a9e5febc5b1a983c2) +* Drop support for Emacs 28.x (7fa61292bd1553cee46884a98f4959933b55bb12) +* Diminish buffer `*Bug Help*` as default (cef9be24f401405fe58aed4496e6cac52099487b) ## 8.2.0 > Released Jun 21, 2022 -* Drop support for Emacs 27.x ([7fa6129][]) -* Prevent whitespace cleanup for `text-mode` ([56dca1a][]) -* Remove development package `ert-runner` ([84ffcde][]) -* Remove development package `el-mock` ([8fcc72f][]) -* Fix bug for newly added packages from archives ([6a92be2][]) -* Add new package `flycheck-eask`. ([cd94bba][]) -* Move minibuffer flx to external package [vertico-flx](https://github.com/jcs-elpa/vertico-flx) ([151d8f2][]) -* Show `helpful` message while describing things at point ([a06c8d1][]) -* Add new package `suggest` ([913f278][]) -* Inhibit redisplay on startup to speed up the startup time ([9922190][]) -* Add new package `company-shell` ([6b5d79a][]) -* Add new package `company-glsl` ([122b4a1][]) -* Add new package `arduino-mode` ([d4ffb8c][]) -* Add new package `on` and configured to improve startup speed ([8c9f797][]) -* Move init delay to `on-init-ui-hook` ([705afe9][]) -* Add new package `qml-mode` ([e383783][]) -* Add new package `coffee-mode` ([d7a9a99][]) -* Add new package `crystal-mode` ([72c3dba][]) -* Add new package `d-mode` ([8bbb6fd][]) -* Add new package `feature-mode` ([76f0696][]) -* Add new package `git-assembler-mode`, `graphql-mode`, and `hexo` ([444fd96][]) -* Add new package `recentf-excl` ([1fde626][]) -* Add new package `javap-mode` ([6e6f53f][]) -* Fix conflict between `company-box-doc` and `dashboard` refresh ([d49a031][]) -* Fix popup tip showing previous/last description ([45451bb][]) -* Fix bury buffer proceed before `diminish-buffer-mode` will jump to unwanted buffer ([184ba39][]) -* Add new packages `phpt-mode` and `robots-txt-mode` ([eb4714b][]) -* Remove package `blamer` and add new package `vc-msg` ([067cfb9][]) -* Improve `jcs-advice-add` macro ([3ec7e94][]) -* Improve `jcs-add-hook` macro ([48abd84][]) -* Add new package `protobuf-mode` ([6e4f275][]) -* Remove tab and spaces converting util functions ([5c92fa5][]) -* Move built-in `multiple-cursors` functions to external package `vsc-multiple-cursors` ([d12f928][]) -* Configure `multiple-cursors` for mouse click ([454933b][]) -* Add new package `gcmh` ([39e381d][]) -* Disable `page-break-lines` in `emacs-lisp-compilation-mode` ([b337b45][]) -* Add new package `sideline-flycheck` ([18cdd62][]) -* Add new package `docker` ([bb0fbb6][]) -* Configure compilation previous/next error keys ([919a848][]) -* Add new package `sideline-lsp` ([b7b7c4e][]) - -[7fa6129]: ../../commit/7fa61292bd1553cee46884a98f4959933b55bb12 -[56dca1a]: ../../commit/56dca1ac48ef4e613c777b82bac1247513e6c024 -[84ffcde]: ../../commit/84ffcde033cab6073b3b2624b1c6f40260322a64 -[8fcc72f]: ../../commit/8fcc72f1ec5fb723b3262070ad87095d42fea852 -[6a92be2]: ../../commit/6a92be2c8800b478bfb120a4489a7b1930235db0 -[cd94bba]: ../../commit/cd94bbabe3bb5e3878384afea030cb203e0e5050 -[151d8f2]: ../../commit/151d8f20e2d5539add95deb892acfbb0f1638df7 -[a06c8d1]: ../../commit/a06c8d1edbb2380cf449a554dda0d10c3433ae3a -[913f278]: ../../commit/913f278afa145d46924cde5322506cd13dd43e9f -[9922190]: ../../commit/9922190f2e53ccc9a400943140a3c5e6462bde5f -[6b5d79a]: ../../commit/6b5d79a65d889222e42343325cf59790c78d97af -[122b4a1]: ../../commit/122b4a1b541acf7a810253d986d423e216a92ceb -[d4ffb8c]: ../../commit/d4ffb8c6b5ca99619c601c26c85aa6063d6c1806 -[8c9f797]: ../../commit/8c9f797492a74cdb30ba9ff6f7ee483c0683def5 -[705afe9]: ../../commit/705afe9744fc3efb2ee005beb8db85e0a08b6fbe -[e383783]: ../../commit/e383783356143f9cb25ad315be6227823a7b44d7 -[d7a9a99]: ../../commit/d7a9a999e9dbd8c47fc3e2ac559517b776c0ac31 -[72c3dba]: ../../commit/72c3dba1d496fd85e96ea8f80da1caa3a56b2e06 -[8bbb6fd]: ../../commit/8bbb6fdce8351cccf22b59e08efa6a5969d8586e -[76f0696]: ../../commit/76f0696c15f60c44aced2a6c58a3039d7d214fcf -[444fd96]: ../../commit/444fd96c9a5ebbdab04f74ae18f3a31978b3acfa -[1fde626]: ../../commit/1fde6265b338d17efa5f47b908ad4b30c159d9da -[6e6f53f]: ../../commit/6e6f53f1f2cc05cef2f0065ad214f6d58d65eaa3 -[d49a031]: ../../commit/d49a0310c3a28e1edabb6ba11436b046c701e63f -[45451bb]: ../../commit/45451bb3460f0ffabb6af35c989bb3e6290e594c -[184ba39]: ../../commit/184ba39015b1b26342c13f8b107b69c389f0aeed -[eb4714b]: ../../commit/eb4714b8280490fbf9c6f570479e6f3ba1a3a690 -[067cfb9]: ../../commit/067cfb98a52263754b7d4c4222d2bd9c8c4d0601 -[3ec7e94]: ../../commit/3ec7e943ab0d035610ce6391e7f9d8ed8ff58cb1 -[48abd84]: ../../commit/48abd848fba1b2cefa6c7086ca73ac679c3f83ec -[6e4f275]: ../../commit/6e4f27587b5a54a0a7bddc5e0a8cba2e008f1463 -[5c92fa5]: ../../commit/5c92fa525f486ef46e2e309ee5d47f48f5fef66a -[d12f928]: ../../commit/d12f928aeb4f7765772576d6d0cf6329ffb081b6 -[454933b]: ../../commit/454933b94926bab40c09810d49533c3eb3290239 -[39e381d]: ../../commit/39e381d56f12ba9866c71d1e7b2f31775ee25ed2 -[b337b45]: ../../commit/b337b4505ad14c8b756e810e9b1f7b65a598f786 -[18cdd62]: ../../commit/18cdd626331297f77255a8faa922f5dd199bc416 -[bb0fbb6]: ../../commit/bb0fbb611cce10a1ea4438b9bb0ab95110dd49cc -[919a848]: ../../commit/919a84801aef3631fa7dc496a8b997acaeeca0d2 -[b7b7c4e]: ../../commit/b7b7c4ed9359412709f4fc0197005043b6d19fca +* Drop support for Emacs 27.x (7fa61292bd1553cee46884a98f4959933b55bb12) +* Prevent whitespace cleanup for `text-mode` (56dca1ac48ef4e613c777b82bac1247513e6c024) +* Remove development package `ert-runner` (84ffcde033cab6073b3b2624b1c6f40260322a64) +* Remove development package `el-mock` (8fcc72f1ec5fb723b3262070ad87095d42fea852) +* Fix bug for newly added packages from archives (6a92be2c8800b478bfb120a4489a7b1930235db0) +* Add new package `flycheck-eask`. (cd94bbabe3bb5e3878384afea030cb203e0e5050) +* Move minibuffer flx to external package [vertico-flx](https://github.com/jcs-elpa/vertico-flx) (151d8f20e2d5539add95deb892acfbb0f1638df7) +* Show `helpful` message while describing things at point (a06c8d1edbb2380cf449a554dda0d10c3433ae3a) +* Add new package `suggest` (913f278afa145d46924cde5322506cd13dd43e9f) +* Inhibit redisplay on startup to speed up the startup time (9922190f2e53ccc9a400943140a3c5e6462bde5f) +* Add new package `company-shell` (6b5d79a65d889222e42343325cf59790c78d97af) +* Add new package `company-glsl` (122b4a1b541acf7a810253d986d423e216a92ceb) +* Add new package `arduino-mode` (d4ffb8c6b5ca99619c601c26c85aa6063d6c1806) +* Add new package `on` and configured to improve startup speed (8c9f797492a74cdb30ba9ff6f7ee483c0683def5) +* Move init delay to `on-init-ui-hook` (705afe9744fc3efb2ee005beb8db85e0a08b6fbe) +* Add new package `qml-mode` (e383783356143f9cb25ad315be6227823a7b44d7) +* Add new package `coffee-mode` (d7a9a999e9dbd8c47fc3e2ac559517b776c0ac31) +* Add new package `crystal-mode` (72c3dba1d496fd85e96ea8f80da1caa3a56b2e06) +* Add new package `d-mode` (8bbb6fdce8351cccf22b59e08efa6a5969d8586e) +* Add new package `feature-mode` (76f0696c15f60c44aced2a6c58a3039d7d214fcf) +* Add new package `git-assembler-mode`, `graphql-mode`, and `hexo` (444fd96c9a5ebbdab04f74ae18f3a31978b3acfa) +* Add new package `recentf-excl` (1fde6265b338d17efa5f47b908ad4b30c159d9da) +* Add new package `javap-mode` (6e6f53f1f2cc05cef2f0065ad214f6d58d65eaa3) +* Fix conflict between `company-box-doc` and `dashboard` refresh (d49a0310c3a28e1edabb6ba11436b046c701e63f) +* Fix popup tip showing previous/last description (45451bb3460f0ffabb6af35c989bb3e6290e594c) +* Fix bury buffer proceed before `diminish-buffer-mode` will jump to unwanted buffer (184ba39015b1b26342c13f8b107b69c389f0aeed) +* Add new packages `phpt-mode` and `robots-txt-mode` (eb4714b8280490fbf9c6f570479e6f3ba1a3a690) +* Remove package `blamer` and add new package `vc-msg` (067cfb98a52263754b7d4c4222d2bd9c8c4d0601) +* Improve `jcs-advice-add` macro (3ec7e943ab0d035610ce6391e7f9d8ed8ff58cb1) +* Improve `jcs-add-hook` macro (48abd848fba1b2cefa6c7086ca73ac679c3f83ec) +* Add new package `protobuf-mode` (6e4f27587b5a54a0a7bddc5e0a8cba2e008f1463) +* Remove tab and spaces converting util functions (5c92fa525f486ef46e2e309ee5d47f48f5fef66a) +* Move built-in `multiple-cursors` functions to external package `vsc-multiple-cursors` (d12f928aeb4f7765772576d6d0cf6329ffb081b6) +* Configure `multiple-cursors` for mouse click (454933b94926bab40c09810d49533c3eb3290239) +* Add new package `gcmh` (39e381d56f12ba9866c71d1e7b2f31775ee25ed2) +* Disable `page-break-lines` in `emacs-lisp-compilation-mode` (b337b4505ad14c8b756e810e9b1f7b65a598f786) +* Add new package `sideline-flycheck` (18cdd626331297f77255a8faa922f5dd199bc416) +* Add new package `docker` (bb0fbb611cce10a1ea4438b9bb0ab95110dd49cc) +* Configure compilation previous/next error keys (919a84801aef3631fa7dc496a8b997acaeeca0d2) +* Add new package `sideline-lsp` (b7b7c4ed9359412709f4fc0197005043b6d19fca) ## 8.1.0 > Released Apr 7, 2022 -* Fix move file/directory with full path ([f3f0c61][]) +* Fix move file/directory with full path (f3f0c61deb7aa3cc1b437a104c767e10050a73ef) * Add new package `nim-mode`. * Add new package `shift-number`. -* Moved custom face config for `markdown-mode` and `org-mode` to external packages ([d92b571][]) +* Moved custom face config for `markdown-mode` and `org-mode` to external packages (d92b57181b358574245c0ec6c15985b49e4b83ec) * Add basic support for Julia programming language. * Add new package `dotenv-mode`. * Add new package `docker-compose-mode`. @@ -540,32 +294,21 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * Add new package `shell-pop`. * Replace config built-in pop shell functionality with `shell-pop`. * Disable save file message by default. -* Improved reopen buffer command's message ([2632444][]) +* Improved reopen buffer command's message. (263244468533c95fcf340b4603b8bb0e3ed00f1e) * Limit lsp message to display in `*Messages*` buffer. -* Add file name when do `ffap` on `minibuffer` and `vertico` ([1df9e1b][]) +* Add file name when do `ffap` on `minibuffer` and `vertico`. (1df9e1b4467423dc278ac4963cfd9d42e8d53d28) * Add support for HLSL language. * Add new package `message-clean-mode`. * Add new package `buffer-menu-project`. * Add new package `buffer-menu-filter`. -* Default select first candidate (highest score) after sorting while using minibuffer completion ([eb6486a][]) +* Default select first candidate (highest score) after sorting while using minibuffer completion. (eb6486a3a9031421127fda03f89ede01d38ba409) * Add new package `electric-indent-sexp`. * Add new package `electric-cursor`. -* Remove implementation of `depends-mode` and `cross-mode` ([8a1500e][]) -* Remove file display function `jcs-html-preview` and `jcs-display-file` ([bb47bce][]) -* Moved revert buffer module to external package, [vs-revbuf](https://github.com/emacs-vs/vs-revbuf) ([73f88e1][]) -* Add new package `whole-line-or-region` ([6a66781][]) -* Moved Visual Studio editing experience to external package, [vs-edit-mode](https://github.com/emacs-vs/vs-edit-mode) ([2db994d][]) - -[f3f0c61]: ../../commit/f3f0c61deb7aa3cc1b437a104c767e10050a73ef -[d92b571]: ../../commit/d92b57181b358574245c0ec6c15985b49e4b83ec -[2632444]: ../../commit/263244468533c95fcf340b4603b8bb0e3ed00f1e -[1df9e1b]: ../../commit/1df9e1b4467423dc278ac4963cfd9d42e8d53d28 -[eb6486a]: ../../commit/eb6486a3a9031421127fda03f89ede01d38ba409 -[8a1500e]: ../../commit/8a1500e4738453f757cb9d28a2c09136dedf6bcc -[bb47bce]: ../../commit/bb47bcee49c2005c10c2b53bb62b923c74fb2741 -[73f88e1]: ../../commit/73f88e137f7bf4155ff2a37d8b1c43248cf628c5 -[6a66781]: ../../commit/6a6678143c8d03ccbb6fa479d8f711fceccc3e42 -[2db994d]: ../../commit/2db994dbb567d40ccbcd987b09c5a5806db89ed5 +* Remove implementation of `depends-mode` and `cross-mode`. (8a1500e4738453f757cb9d28a2c09136dedf6bcc) +* Remove file display function `jcs-html-preview` and `jcs-display-file` (bb47bcee49c2005c10c2b53bb62b923c74fb2741) +* Moved revert buffer module to external package, [vs-revbuf](https://github.com/emacs-vs/vs-revbuf). (73f88e137f7bf4155ff2a37d8b1c43248cf628c5) +* Add new package `whole-line-or-region`. (6a6678143c8d03ccbb6fa479d8f711fceccc3e42) +* Moved Visual Studio editing experience to external package, [vs-edit-mode](https://github.com/emacs-vs/vs-edit-mode) (2db994dbb567d40ccbcd987b09c5a5806db89ed5) ## 8.0.1 > Released Jan 29, 2022 @@ -587,13 +330,9 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * Installed new package `flx-style` for `completion-styles`. * Installed new package `blamer`. * Installed new package `mwim`. -* Change default `completion-styles` to `partial-completion` ([132d4bc][]), so it goes easy on `company-mode`. -* Fix `undo-tree` jumping dedicated window after kill ([bbf04f7][]). -* Use `flx` for minibuffer `completion-styles` ([e8041b1][]). - -[132d4bc]: ../../commit/132d4bc2de4f89cc37ebed2d8c9ff7617fcb26f4 -[bbf04f7]: ../../commit/bbf04f799eeae8ceb7a7b8a891b459cebca0f2ec -[e8041b1]: ../../commit/e8041b1b5e9d2dd440894530ab908cff7d7b0354 +* Change default `completion-styles` to `partial-completion`, so it goes easy on `company-mode` (132d4bc2de4f89cc37ebed2d8c9ff7617fcb26f4) +* Fix `undo-tree` jumping dedicated window after kill (bbf04f799eeae8ceb7a7b8a891b459cebca0f2ec) +* Use `flx` for minibuffer `completion-styles` (e8041b1b5e9d2dd440894530ab908cff7d7b0354) ## 8.0.0 > Released Jan 6, 2022 @@ -609,9 +348,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * Remove package `flycheck-popup-tip`. * Remove package `flycheck-pos-tip`. * Disable logging when printing out error messages from `flycheck`. -* Move entire directory to `.emacs.d`. ([#32][]) - -[#32]: ../../pull/32 +* Move entire directory to `.emacs.d`. (#32) ## 7.1.0 > Released Dec 27, 2021 From fdf8a564d22cdcc4a9dbd9bc0e3ae34b61dce97a Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 11 Jul 2025 04:03:36 -0700 Subject: [PATCH 312/334] Update CHANGELOG.md --- CHANGELOG.md | 111 ++++++++++++++++++++++++++------------------------- 1 file changed, 56 insertions(+), 55 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9882899c..0d606e4a 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,65 +8,66 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how ## 9.1.1 (Unreleased) > Released N/A -* feat: Replace must kill buffer list with derived mode (c407b9859489c5b31697c9f61871b9e8254baaf7) -* feat: Add new package `responsive-window` (0af7dfcc565b3813ac8776c6f75bf15fc5c74ea5) -* fix: Record the window starting point instead first visible line (62039e725e816ad381b6a8d126bb28be22d65101) -* fix: Force load project elisp files (b663d26669d35c69d0c99dc3a8353946fd2cb7cf) -* fix: Load theme before `on` prevent potential UI package's errors (0c995aa207eb820d7b0d0778aa23da2c96b12e5f) -* feat: Add `Coq` support (c8382d9103f98bc4d1015c48bddca0b004018a92) -* feat: Add `GDShader` support (fdb485a4adb0d29284ca93de9647e47b1bf7f94b) -* feat: Add `Janet` support (2738bdc83f2b2d00411e9f5bb489087d1ae27c42) -* feat(lang): Add `geiser` for better `Scheme` support (b981c72a0942ca13a4f9fc0da7edcfd4653482fd) -* feat: Configure `eldoc-diffstats` (cb2afb004e92d88b54db1506da54d2f43bc9a87f) -* feat: Add `magit` entry functions (8f9686563559f7b209c289fe24e5d2a6ea9f7c15) -* fix: Annoying `when-let` deprecation (1e4ca284a4e28d9f333fb3b6337dfdcbb1008a60) -* fix: Annoying `if-let` deprecation (4a002dfb13987d967123e1a9c5ba8ed9c80d2fce) -* feat(dired): Make list directories first in `dired` (a502ee445dcfa9d83eff262f9381897044e9c9fd) -* feat(ui) Enable `sideline` by default (ebf0537358f3de9f8204f4421b4fef96e487c6d5) -* feat(vc): Add more `magit` plugins (e47a8d0e873001d769eb39c3e85de9fb0a591897) -* perf(lsp): Add `lsp-smart-req` (fdcddb59e7558346d3dfe80639e8d91f4d7f5890) -* feat(vc): Use `magit` built-in functionalities to display file icons (7d249ad694a58239d3247b673f8e15a92adc4a18) -* feat(ui): Add mail tab group (e0ec5c24c7902f862d4793ffdf8fece6bb14076b) -* feat(fold): Add `savefold` for persistent folding behaviors (98d0f498ccb2d16326f8814c7d4d36a4e2279d51) -* feat(debugger): Combine `debugger` and `run` functionality (2d4048562fc019da0acc6bbc55242d1767cfc90d) -* feat(fold): Add new package `fold-this` (5c9b423ba95419dcb8e81477570778739c1ec851) -* feat(keys): Add support for `defaul-text-scale` (4453b907e5702989ca711c90b3244e04b8f873c6) -* feat(lang): Add support for `Magik` language (5ab68e5a9deb1671a55c36ca81ea866217f2cfd2) -* feat(lang): Add `Odin` support (a69d5c11fb3707c92c47bbe29470e7a3eae8bce3) -* feat(core): Add `back-button` (4da8f3dbcb3ade1598643e2de1ffae5c42b00a4f) +* feat: Replace must kill buffer list with derived mode ([`c407b985`](../../commit/c407b9859489c5b31697c9f61871b9e8254baaf7)) +* feat: Add new package `responsive-window` ([`0af7dfcc`](../../commit/0af7dfcc565b3813ac8776c6f75bf15fc5c74ea5)) +* fix: Record the window starting point instead first visible line ([`62039e72`](../../commit/62039e725e816ad381b6a8d126bb28be22d65101)) +* fix: Force load project elisp files ([`b663d266`](../../commit/b663d26669d35c69d0c99dc3a8353946fd2cb7cf)) +* fix: Load theme before `on` prevent potential UI package's errors ([`0c995aa2`](../../commit/0c995aa207eb820d7b0d0778aa23da2c96b12e5f)) +* feat: Add `Coq` support ([`c8382d91`](../../commit/c8382d9103f98bc4d1015c48bddca0b004018a92)) +* feat: Add `GDShader` support ([`fdb485a4`](../../commit/fdb485a4adb0d29284ca93de9647e47b1bf7f94b)) +* feat: Add `Janet` support ([`2738bdc8`](../../commit/2738bdc83f2b2d00411e9f5bb489087d1ae27c42)) +* feat(lang): Add `geiser` for better `Scheme` support ([`b981c72a`](../../commit/b981c72a0942ca13a4f9fc0da7edcfd4653482fd)) +* feat: Configure `eldoc-diffstats` ([`cb2afb00`](../../commit/cb2afb004e92d88b54db1506da54d2f43bc9a87f)) +* feat: Add `magit` entry functions ([`8f968656`](../../commit/8f9686563559f7b209c289fe24e5d2a6ea9f7c15)) +* fix: Annoying `when-let` deprecation ([`1e4ca284`](../../commit/1e4ca284a4e28d9f333fb3b6337dfdcbb1008a60)) +* fix: Annoying `if-let` deprecation ([`4a002dfb`](../../commit/4a002dfb13987d967123e1a9c5ba8ed9c80d2fce)) +* feat(dired): Make list directories first in `dired` ([`a502ee44`](../../commit/a502ee445dcfa9d83eff262f9381897044e9c9fd)) +* feat(ui) Enable `sideline` by default ([`ebf05373`](../../commit/ebf0537358f3de9f8204f4421b4fef96e487c6d5)) +* feat(vc): Add more `magit` plugins ([`e47a8d0e`](../../commit/e47a8d0e873001d769eb39c3e85de9fb0a591897)) +* perf(lsp): Add `lsp-smart-req` ([`fdcddb59`](../../commit/fdcddb59e7558346d3dfe80639e8d91f4d7f5890)) +* feat(vc): Use `magit` built-in functionalities to display file icons ([`7d249ad6`](../../commit/7d249ad694a58239d3247b673f8e15a92adc4a18)) +* feat(ui): Add mail tab group ([`e0ec5c24`](../../commit/e0ec5c24c7902f862d4793ffdf8fece6bb14076b)) +* feat(fold): Add `savefold` for persistent folding behaviors ([`98d0f498`](../../commit/98d0f498ccb2d16326f8814c7d4d36a4e2279d51)) +* feat(debugger): Combine `debugger` and `run` functionality ([`2d404856`](../../commit/2d4048562fc019da0acc6bbc55242d1767cfc90d)) +* feat(fold): Add new package `fold-this` ([`5c9b423b`](../../commit/5c9b423ba95419dcb8e81477570778739c1ec851)) +* feat(keys): Add support for `defaul-text-scale` ([`4453b907`](../../commit/4453b907e5702989ca711c90b3244e04b8f873c6)) +* feat(lang): Add support for `Magik` language ([`5ab68e5a`](../../commit/5ab68e5a9deb1671a55c36ca81ea866217f2cfd2)) +* feat(lang): Add `Odin` support ([`a69d5c11`](../../commit/a69d5c11fb3707c92c47bbe29470e7a3eae8bce3)) +* feat(core): Add `back-button` ([`4da8f3db`](../../commit/4da8f3dbcb3ade1598643e2de1ffae5c42b00a4f)) + ## 9.1.0 > Released Jun 19, 2024 -* Add FASM support (e049b015df8a52d10271e3a41aeeca631296a7d5) -* Remove package `topsy` (77c506758eaca4621cf1a92e9107e5d279721827) -* fix: Apply workaround for `highlight-indent-guides` (e153bd8fd60ec3f6ed11cd8494e94feb7d1cb7c3) -* feat: Add Tramp support (8535af30d96e173df46515f03e91d50e472dca5e) -* Add PO file support (59fa6ba7d8f30be3f16fe849f41fd3c21a44a852) -* Remove built-in log module, use `ic` instead (70ee1d002ff97cb765b3043e7451f2aeb831e51c) -* Extract template module to external package (74a2cb84a0fd322d6b4cb73c7a1c0c68cb135f42) -* Add `.envrc` support (3ff057fc9cfa0c931129e6f5496a2eae4211a34e) -* Update debugging key bindings (f2ecb5dcb94d8abd373d8a3e3c39049029a65a62) -* Add QSS support (71a175c4adcfd913131030fb1deb5d2e5f9cc4f0) -* feat: Add and configure Tex completion packages (31deaa9a9850ae904b9325af2b39dc5a57d0d82b) -* refactor: Move message clean settings to its modules (727bc53d323580215b7ad3a5cb8b5b84c1b14e3f) -* feat: Support TailwindCSS completion (a3b065dba11f27566fce2e24492157138d775646) -* feat: Support Bootstrap completion (a3b065dba11f27566fce2e24492157138d775646) -* feat: Add Svelte support (e586d9e52d06a054faa1829ba0cf69c128481c34) -* feat: Add ziglint (9856bbf5530177613e46127b67054d3925f99a91) -* feat: Add module util (12f7d294e66df3eddc6bbec721ef4196144dcf8f) -* feat: Support `daemon` (cdb7187af574c6aec3ff09010d59fe2a8814f43b) -* chore(sideline): Add display mode config (32324992b47b2126241a9ab84410ba7cfdac3752) -* chore(dashboard): Default to cycle dashboard sections (1956896dd3f85e1fafb980c8aff5dbf01b1a2507) -* fix(buffer-menu): Ensure `buffer-menu` is clean (548ce7ef47490fa8d0b82b838cc4f8a1e739494b) -* chore(sideline): Configure `sideline-eglot` (def906559bf90920ff7f2f2df4b8f36dd523230a) -* chore(checker): Mute display diagnostic (675b982533c978624ff5e745d1621edcb7a0d994) -* chore: Add `guard-lf` package (d8616223fb07503dffb3ec4ca75361b203ab5b76) -* feat: Notify the user when `indent-tabs-mode` got activated (7b4eb11cf30fae0309445fa86ac8749a1f276ed8) -* feat: feat: Replace package `doxygen-asterisk` with `auto-close-block` (2d56f447ac48f89654fbd93872a32b83f8e40b3c) -* fix(vc-gutter): Ensure `diff-hl` is updated in all valid buffers (53802208c3251cf0f7bd2a0043f34c133a21ee1a) -* feat(rgb): Replace `rainbow-mode` with `colorful-mode` (695358cbb6475c54aba711615d6f7db61fc9c3fc) -* feat(tools): Configure `sqlite-mode` (73dc3b0adea778ba5c933cb0c203ec3e82bd6979) +* Add FASM support ([`e049b015`](../../commit/e049b015df8a52d10271e3a41aeeca631296a7d5)) +* Remove package `topsy` ([`77c50675`](../../commit/77c506758eaca4621cf1a92e9107e5d279721827)) +* fix: Apply workaround for `highlight-indent-guides` ([`e153bd8f`](../../commit/e153bd8fd60ec3f6ed11cd8494e94feb7d1cb7c3)) +* feat: Add Tramp support ([`8535af30`](../../commit/8535af30d96e173df46515f03e91d50e472dca5e)) +* Add PO file support ([`59fa6ba7`](../../commit/59fa6ba7d8f30be3f16fe849f41fd3c21a44a852)) +* Remove built-in log module, use `ic` instead ([`70ee1d00`](../../commit/70ee1d002ff97cb765b3043e7451f2aeb831e51c)) +* Extract template module to external package ([`74a2cb84`](../../commit/74a2cb84a0fd322d6b4cb73c7a1c0c68cb135f42)) +* Add `.envrc` support ([`3ff057fc`](../../commit/3ff057fc9cfa0c931129e6f5496a2eae4211a34e)) +* Update debugging key bindings ([`f2ecb5dc`](../../commit/f2ecb5dcb94d8abd373d8a3e3c39049029a65a62)) +* Add QSS support ([`71a175c4`](../../commit/71a175c4adcfd913131030fb1deb5d2e5f9cc4f0)) +* feat: Add and configure Tex completion packages ([`31deaa9a`](../../commit/31deaa9a9850ae904b9325af2b39dc5a57d0d82b)) +* refactor: Move message clean settings to its modules ([`727bc53d`](../../commit/727bc53d323580215b7ad3a5cb8b5b84c1b14e3f)) +* feat: Support TailwindCSS completion ([`a3b065db`](../../commit/a3b065dba11f27566fce2e24492157138d775646)) +* feat: Support Bootstrap completion ([`a3b065db`](../../commit/a3b065dba11f27566fce2e24492157138d775646)) +* feat: Add Svelte support ([`e586d9e5`](../../commit/e586d9e52d06a054faa1829ba0cf69c128481c34)) +* feat: Add ziglint ([`9856bbf5`](../../commit/9856bbf5530177613e46127b67054d3925f99a91)) +* feat: Add module util ([`12f7d294`](../../commit/12f7d294e66df3eddc6bbec721ef4196144dcf8f)) +* feat: Support `daemon` ([`cdb7187a`](../../commit/cdb7187af574c6aec3ff09010d59fe2a8814f43b)) +* chore(sideline): Add display mode config ([`32324992`](../../commit/32324992b47b2126241a9ab84410ba7cfdac3752)) +* chore(dashboard): Default to cycle dashboard sections ([`1956896d`](../../commit/1956896dd3f85e1fafb980c8aff5dbf01b1a2507)) +* fix(buffer-menu): Ensure `buffer-menu` is clean ([`548ce7ef`](../../commit/548ce7ef47490fa8d0b82b838cc4f8a1e739494b)) +* chore(sideline): Configure `sideline-eglot` ([`def90655`](../../commit/def906559bf90920ff7f2f2df4b8f36dd523230a)) +* chore(checker): Mute display diagnostic ([`675b9825`](../../commit/675b982533c978624ff5e745d1621edcb7a0d994)) +* chore: Add `guard-lf` package ([`d8616223`](../../commit/d8616223fb07503dffb3ec4ca75361b203ab5b76)) +* feat: Notify the user when `indent-tabs-mode` got activated ([`7b4eb11c`](../../commit/7b4eb11cf30fae0309445fa86ac8749a1f276ed8)) +* feat: feat: Replace package `doxygen-asterisk` with `auto-close-block` ([`2d56f447`](../../commit/2d56f447ac48f89654fbd93872a32b83f8e40b3c)) +* fix(vc-gutter): Ensure `diff-hl` is updated in all valid buffers ([`53802208`](../../commit/53802208c3251cf0f7bd2a0043f34c133a21ee1a)) +* feat(rgb): Replace `rainbow-mode` with `colorful-mode` ([`695358cb`](../../commit/695358cbb6475c54aba711615d6f7db61fc9c3fc)) +* feat(tools): Configure `sqlite-mode` ([`73dc3b0a`](../../commit/73dc3b0adea778ba5c933cb0c203ec3e82bd6979)) ## 9.0.1 > Released Sep 20, 2023 From 24768ce672016d10d705ff4bb45167ade2a6a0ae Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 11 Jul 2025 04:04:33 -0700 Subject: [PATCH 313/334] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d606e4a..a7846940 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -349,7 +349,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * Remove package `flycheck-popup-tip`. * Remove package `flycheck-pos-tip`. * Disable logging when printing out error messages from `flycheck`. -* Move entire directory to `.emacs.d`. (#32) +* Move entire directory to `.emacs.d`. ([`#32`](../../pull/32)) ## 7.1.0 > Released Dec 27, 2021 From 4ed0c7b8000ed16e33b6bf721e0c8c3dfe989b19 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 11 Jul 2025 04:05:39 -0700 Subject: [PATCH 314/334] Update CHANGELOG.md --- CHANGELOG.md | 72 ++++++++++++++++++++++++++-------------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a7846940..be690fdf 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -72,42 +72,42 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how ## 9.0.1 > Released Sep 20, 2023 -* Add new package `makefile-executor` (e301333ef7585189614bb1fed163caab2e4a0973) -* Add new package `codegpt` (443b2e1312368201a8a15d64355e7c9aaf5b8958) -* Add and config new package `goto-last-change` (71d0c3dfa0636fc55cc1c023e6383d5946b19e3c) -* Add new package `flycheck-clang-analyzer` (0ea36feb652c0ebe59ab5b80d5739cb23cb4b52b) -* Add new package `codemetrics` (51032ef78f5b9827ee76c5c48832974c9bd9cf73) -* Bind Shift+return to insert `newline` in minibuffer (41c159ba7d5630fb8e7e235fc8968001f04cbb15) -* Ask CMake file-header template to differentiate `default`, `root`, and `subdirectory` (71c9bc604b57cb2379606a0b6bc12c42bb79ded7) -* Update auth-source logic for more general use (8681fb6800d4b4090c7a84dfd9d927035e2bb66a) -* Add `company-dict` (1b24a4ddd58943fb37010b7700dac32c8d54bea1) -* Add nerd-icons support (3ae70b96937dedae3b1fe8fc9edf52ad340795d6) -* Enable comment empty lines by default (2040d77e956cc3c1fb55ec0dae7dfe6c36c2381b) -* Fix cannot re-connect to language server issue (362a96418032da4244c05c810031ed74bc7b25c4) -* Add dashboard's navigator (d81fce7fb699f1866839c0bd409475ab758721d4) -* Fix `indent-guides` is not obvious in 29.x (8456bd051b096af816cd9c0840b6980c21d94c5e) -* Add `sly` to support common lisp development (fa0afd2d79b8b464f4f2413fcd93978ef168402f) -* Add support for OpenCL (d5723c34ac53c7983cdfb686884478bcacc4d4a6) -* Add support for CUDA (d5723c34ac53c7983cdfb686884478bcacc4d4a6) -* Use `context-menu-mode` instead of `right-click-context` (a7e563ea23121dd6ba340eb8fd8b9daed394f019) -* Add more support for Clojure language (b84287bde0315c021f73009fcd67e2a0d348d64f) -* Add breadcrumb mode (a81fcc65af7357eeb4babb58b97b567c5a453b01) -* Use prog mode settings for `haskell-cabal-mode` (fd8dfb5108882e5fc5a1ad74b129e35c3e1ae762) -* Add support for P4 (3b16789978d380b6be75f465fa2a3d3dbd9610b1) -* Add company support for PHP (30c8b00169eefb866df062095c1bf33b6d0729ec) -* Add company support for Perl (98d4e1494364ca49bf3cd370a659957674eda100) -* Configure for beancount (40ee14e541453e684d1f836dcc2fa47abda9ece9) -* Add support for F* (1dc616adae9bdcbf1810058b3d078f831be5cd34) -* Add support for Hylang (df2337bfb3ef64a3c2e9cbd5422df7eb66b9e698) -* Add support for Scheme (6fe51f46592cd3e6ceee1ae274b086b046dc93b0) -* Add support for ledger (5cc7ba8abad0864f9d435519bb35bf45b32d2dcb) -* Add support for SML (031289bf682aa956cd322e1e1078408f0d79e8ce) -* Use built-in on first project hook (84a7695b668debed6fb59bbd5313ff9be897d6b7) -* Add LaTex support (7fbb631c54b82aa43a80c4ad7733143c89773ff1) -* Add Noir support (7fbb631c54b82aa43a80c4ad7733143c89773ff1) -* Enable jump to button in Tree-Sitter debug mode (02f5172c7d061732bb0f154ded5898c1baaf16b9) -* Add Windows Menu's key bindings (0cc2bb8d938f6a549cc3ae9a15ba4776010c6fa8) -* Add package `chatgpt-sideline` (65409fc4c68254b18ce209e64fcf74b016e2413e) +* Add new package `makefile-executor` ([`e301333e`](../../commit/e301333ef7585189614bb1fed163caab2e4a0973)) +* Add new package `codegpt` ([`443b2e13`](../../commit/443b2e1312368201a8a15d64355e7c9aaf5b8958)) +* Add and config new package `goto-last-change` ([`71d0c3df`](../../commit/71d0c3dfa0636fc55cc1c023e6383d5946b19e3c)) +* Add new package `flycheck-clang-analyzer` ([`0ea36feb`](../../commit/0ea36feb652c0ebe59ab5b80d5739cb23cb4b52b)) +* Add new package `codemetrics` ([`51032ef7`](../../commit/51032ef78f5b9827ee76c5c48832974c9bd9cf73)) +* Bind Shift+return to insert `newline` in minibuffer ([`41c159ba`](../../commit/41c159ba7d5630fb8e7e235fc8968001f04cbb15)) +* Ask CMake file-header template to differentiate `default`, `root`, and `subdirectory` ([`71c9bc60`](../../commit/71c9bc604b57cb2379606a0b6bc12c42bb79ded7)) +* Update auth-source logic for more general use ([`8681fb68`](../../commit/8681fb6800d4b4090c7a84dfd9d927035e2bb66a)) +* Add `company-dict` ([`1b24a4dd`](../../commit/1b24a4ddd58943fb37010b7700dac32c8d54bea1)) +* Add nerd-icons support ([`3ae70b96`](../../commit/3ae70b96937dedae3b1fe8fc9edf52ad340795d6)) +* Enable comment empty lines by default ([`2040d77e`](../../commit/2040d77e956cc3c1fb55ec0dae7dfe6c36c2381b)) +* Fix cannot re-connect to language server issue ([`362a9641`](../../commit/362a96418032da4244c05c810031ed74bc7b25c4)) +* Add dashboard's navigator ([`d81fce7f`](../../commit/d81fce7fb699f1866839c0bd409475ab758721d4)) +* Fix `indent-guides` is not obvious in 29.x ([`8456bd05`](../../commit/8456bd051b096af816cd9c0840b6980c21d94c5e)) +* Add `sly` to support common lisp development ([`fa0afd2d`](../../commit/fa0afd2d79b8b464f4f2413fcd93978ef168402f)) +* Add support for OpenCL ([`d5723c34`](../../commit/d5723c34ac53c7983cdfb686884478bcacc4d4a6)) +* Add support for CUDA ([`d5723c34`](../../commit/d5723c34ac53c7983cdfb686884478bcacc4d4a6)) +* Use `context-menu-mode` instead of `right-click-context` ([`a7e563ea`](../../commit/a7e563ea23121dd6ba340eb8fd8b9daed394f019)) +* Add more support for Clojure language ([`b84287bd`](../../commit/b84287bde0315c021f73009fcd67e2a0d348d64f)) +* Add breadcrumb mode ([`a81fcc65`](../../commit/a81fcc65af7357eeb4babb58b97b567c5a453b01)) +* Use prog mode settings for `haskell-cabal-mode` ([`fd8dfb51`](../../commit/fd8dfb5108882e5fc5a1ad74b129e35c3e1ae762)) +* Add support for P4 ([`3b167899`](../../commit/3b16789978d380b6be75f465fa2a3d3dbd9610b1)) +* Add company support for PHP ([`30c8b001`](../../commit/30c8b00169eefb866df062095c1bf33b6d0729ec)) +* Add company support for Perl ([`98d4e149`](../../commit/98d4e1494364ca49bf3cd370a659957674eda100)) +* Configure for beancount ([`40ee14e5`](../../commit/40ee14e541453e684d1f836dcc2fa47abda9ece9)) +* Add support for F* ([`1dc616ad`](../../commit/1dc616adae9bdcbf1810058b3d078f831be5cd34)) +* Add support for Hylang ([`df2337bf`](../../commit/df2337bfb3ef64a3c2e9cbd5422df7eb66b9e698)) +* Add support for Scheme ([`6fe51f46`](../../commit/6fe51f46592cd3e6ceee1ae274b086b046dc93b0)) +* Add support for ledger ([`5cc7ba8a`](../../commit/5cc7ba8abad0864f9d435519bb35bf45b32d2dcb)) +* Add support for SML ([`031289bf`](../../commit/031289bf682aa956cd322e1e1078408f0d79e8ce)) +* Use built-in on first project hook ([`84a7695b`](../../commit/84a7695b668debed6fb59bbd5313ff9be897d6b7)) +* Add LaTex support ([`7fbb631c`](../../commit/7fbb631c54b82aa43a80c4ad7733143c89773ff1)) +* Add Noir support ([`7fbb631c`](../../commit/7fbb631c54b82aa43a80c4ad7733143c89773ff1)) +* Enable jump to button in Tree-Sitter debug mode ([`02f5172c`](../../commit/02f5172c7d061732bb0f154ded5898c1baaf16b9)) +* Add Windows Menu's key bindings ([`0cc2bb8d`](../../commit/0cc2bb8d938f6a549cc3ae9a15ba4776010c6fa8)) +* Add package `chatgpt-sideline` ([`65409fc4`](../../commit/65409fc4c68254b18ce209e64fcf74b016e2413e)) ## 9.0.0 > Released Jan 01, 2023 From f089f24c9296ed0a71ddc015c2e417d08c9e564e Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 11 Jul 2025 19:17:40 +0800 Subject: [PATCH 315/334] use local --- CHANGELOG.md | 515 +++++++++++++++++++++++++-------------------------- 1 file changed, 257 insertions(+), 258 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index be690fdf..58f2601f 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,279 +8,278 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how ## 9.1.1 (Unreleased) > Released N/A -* feat: Replace must kill buffer list with derived mode ([`c407b985`](../../commit/c407b9859489c5b31697c9f61871b9e8254baaf7)) -* feat: Add new package `responsive-window` ([`0af7dfcc`](../../commit/0af7dfcc565b3813ac8776c6f75bf15fc5c74ea5)) -* fix: Record the window starting point instead first visible line ([`62039e72`](../../commit/62039e725e816ad381b6a8d126bb28be22d65101)) -* fix: Force load project elisp files ([`b663d266`](../../commit/b663d26669d35c69d0c99dc3a8353946fd2cb7cf)) -* fix: Load theme before `on` prevent potential UI package's errors ([`0c995aa2`](../../commit/0c995aa207eb820d7b0d0778aa23da2c96b12e5f)) -* feat: Add `Coq` support ([`c8382d91`](../../commit/c8382d9103f98bc4d1015c48bddca0b004018a92)) -* feat: Add `GDShader` support ([`fdb485a4`](../../commit/fdb485a4adb0d29284ca93de9647e47b1bf7f94b)) -* feat: Add `Janet` support ([`2738bdc8`](../../commit/2738bdc83f2b2d00411e9f5bb489087d1ae27c42)) -* feat(lang): Add `geiser` for better `Scheme` support ([`b981c72a`](../../commit/b981c72a0942ca13a4f9fc0da7edcfd4653482fd)) -* feat: Configure `eldoc-diffstats` ([`cb2afb00`](../../commit/cb2afb004e92d88b54db1506da54d2f43bc9a87f)) -* feat: Add `magit` entry functions ([`8f968656`](../../commit/8f9686563559f7b209c289fe24e5d2a6ea9f7c15)) -* fix: Annoying `when-let` deprecation ([`1e4ca284`](../../commit/1e4ca284a4e28d9f333fb3b6337dfdcbb1008a60)) -* fix: Annoying `if-let` deprecation ([`4a002dfb`](../../commit/4a002dfb13987d967123e1a9c5ba8ed9c80d2fce)) -* feat(dired): Make list directories first in `dired` ([`a502ee44`](../../commit/a502ee445dcfa9d83eff262f9381897044e9c9fd)) -* feat(ui) Enable `sideline` by default ([`ebf05373`](../../commit/ebf0537358f3de9f8204f4421b4fef96e487c6d5)) -* feat(vc): Add more `magit` plugins ([`e47a8d0e`](../../commit/e47a8d0e873001d769eb39c3e85de9fb0a591897)) -* perf(lsp): Add `lsp-smart-req` ([`fdcddb59`](../../commit/fdcddb59e7558346d3dfe80639e8d91f4d7f5890)) -* feat(vc): Use `magit` built-in functionalities to display file icons ([`7d249ad6`](../../commit/7d249ad694a58239d3247b673f8e15a92adc4a18)) -* feat(ui): Add mail tab group ([`e0ec5c24`](../../commit/e0ec5c24c7902f862d4793ffdf8fece6bb14076b)) -* feat(fold): Add `savefold` for persistent folding behaviors ([`98d0f498`](../../commit/98d0f498ccb2d16326f8814c7d4d36a4e2279d51)) -* feat(debugger): Combine `debugger` and `run` functionality ([`2d404856`](../../commit/2d4048562fc019da0acc6bbc55242d1767cfc90d)) -* feat(fold): Add new package `fold-this` ([`5c9b423b`](../../commit/5c9b423ba95419dcb8e81477570778739c1ec851)) -* feat(keys): Add support for `defaul-text-scale` ([`4453b907`](../../commit/4453b907e5702989ca711c90b3244e04b8f873c6)) -* feat(lang): Add support for `Magik` language ([`5ab68e5a`](../../commit/5ab68e5a9deb1671a55c36ca81ea866217f2cfd2)) -* feat(lang): Add `Odin` support ([`a69d5c11`](../../commit/a69d5c11fb3707c92c47bbe29470e7a3eae8bce3)) -* feat(core): Add `back-button` ([`4da8f3db`](../../commit/4da8f3dbcb3ade1598643e2de1ffae5c42b00a4f)) - +* feat: Replace must kill buffer list with derived mode ([`c407b98`](../../commit/c407b9859489c5b31697c9f61871b9e8254baaf7)) +* feat: Add new package `responsive-window` ([`0af7dfc`](../../commit/0af7dfcc565b3813ac8776c6f75bf15fc5c74ea5)) +* fix: Record the window starting point instead first visible line ([`62039e7`](../../commit/62039e725e816ad381b6a8d126bb28be22d65101)) +* fix: Force load project elisp files ([`b663d26`](../../commit/b663d26669d35c69d0c99dc3a8353946fd2cb7cf)) +* fix: Load theme before `on` prevent potential UI package's errors ([`0c995aa`](../../commit/0c995aa207eb820d7b0d0778aa23da2c96b12e5f)) +* feat: Add `Coq` support ([`c8382d9`](../../commit/c8382d9103f98bc4d1015c48bddca0b004018a92)) +* feat: Add `GDShader` support ([`fdb485a`](../../commit/fdb485a4adb0d29284ca93de9647e47b1bf7f94b)) +* feat: Add `Janet` support ([`2738bdc`](../../commit/2738bdc83f2b2d00411e9f5bb489087d1ae27c42)) +* feat(lang): Add `geiser` for better `Scheme` support ([`b981c72`](../../commit/b981c72a0942ca13a4f9fc0da7edcfd4653482fd)) +* feat: Configure `eldoc-diffstats` ([`cb2afb0`](../../commit/cb2afb004e92d88b54db1506da54d2f43bc9a87f)) +* feat: Add `magit` entry functions ([`8f96865`](../../commit/8f9686563559f7b209c289fe24e5d2a6ea9f7c15)) +* fix: Annoying `when-let` deprecation ([`1e4ca28`](../../commit/1e4ca284a4e28d9f333fb3b6337dfdcbb1008a60)) +* fix: Annoying `if-let` deprecation ([`4a002df`](../../commit/4a002dfb13987d967123e1a9c5ba8ed9c80d2fce)) +* feat(dired): Make list directories first in `dired` ([`a502ee4`](../../commit/a502ee445dcfa9d83eff262f9381897044e9c9fd)) +* feat(ui) Enable `sideline` by default ([`ebf0537`](../../commit/ebf0537358f3de9f8204f4421b4fef96e487c6d5)) +* feat(vc): Add more `magit` plugins ([`e47a8d0`](../../commit/e47a8d0e873001d769eb39c3e85de9fb0a591897)) +* perf(lsp): Add `lsp-smart-req` ([`fdcddb5`](../../commit/fdcddb59e7558346d3dfe80639e8d91f4d7f5890)) +* feat(vc): Use `magit` built-in functionalities to display file icons ([`7d249ad`](../../commit/7d249ad694a58239d3247b673f8e15a92adc4a18)) +* feat(ui): Add mail tab group ([`e0ec5c2`](../../commit/e0ec5c24c7902f862d4793ffdf8fece6bb14076b)) +* feat(fold): Add `savefold` for persistent folding behaviors ([`98d0f49`](../../commit/98d0f498ccb2d16326f8814c7d4d36a4e2279d51)) +* feat(debugger): Combine `debugger` and `run` functionality ([`2d40485`](../../commit/2d4048562fc019da0acc6bbc55242d1767cfc90d)) +* feat(fold): Add new package `fold-this` ([`5c9b423`](../../commit/5c9b423ba95419dcb8e81477570778739c1ec851)) +* feat(keys): Add support for `defaul-text-scale` ([`4453b90`](../../commit/4453b907e5702989ca711c90b3244e04b8f873c6)) +* feat(lang): Add support for `Magik` language ([`5ab68e5`](../../commit/5ab68e5a9deb1671a55c36ca81ea866217f2cfd2)) +* feat(lang): Add `Odin` support ([`a69d5c1`](../../commit/a69d5c11fb3707c92c47bbe29470e7a3eae8bce3)) +* feat(core): Add `back-button` ([`4da8f3d`](../../commit/4da8f3dbcb3ade1598643e2de1ffae5c42b00a4f)) ## 9.1.0 > Released Jun 19, 2024 -* Add FASM support ([`e049b015`](../../commit/e049b015df8a52d10271e3a41aeeca631296a7d5)) -* Remove package `topsy` ([`77c50675`](../../commit/77c506758eaca4621cf1a92e9107e5d279721827)) -* fix: Apply workaround for `highlight-indent-guides` ([`e153bd8f`](../../commit/e153bd8fd60ec3f6ed11cd8494e94feb7d1cb7c3)) -* feat: Add Tramp support ([`8535af30`](../../commit/8535af30d96e173df46515f03e91d50e472dca5e)) -* Add PO file support ([`59fa6ba7`](../../commit/59fa6ba7d8f30be3f16fe849f41fd3c21a44a852)) -* Remove built-in log module, use `ic` instead ([`70ee1d00`](../../commit/70ee1d002ff97cb765b3043e7451f2aeb831e51c)) -* Extract template module to external package ([`74a2cb84`](../../commit/74a2cb84a0fd322d6b4cb73c7a1c0c68cb135f42)) -* Add `.envrc` support ([`3ff057fc`](../../commit/3ff057fc9cfa0c931129e6f5496a2eae4211a34e)) -* Update debugging key bindings ([`f2ecb5dc`](../../commit/f2ecb5dcb94d8abd373d8a3e3c39049029a65a62)) -* Add QSS support ([`71a175c4`](../../commit/71a175c4adcfd913131030fb1deb5d2e5f9cc4f0)) -* feat: Add and configure Tex completion packages ([`31deaa9a`](../../commit/31deaa9a9850ae904b9325af2b39dc5a57d0d82b)) -* refactor: Move message clean settings to its modules ([`727bc53d`](../../commit/727bc53d323580215b7ad3a5cb8b5b84c1b14e3f)) -* feat: Support TailwindCSS completion ([`a3b065db`](../../commit/a3b065dba11f27566fce2e24492157138d775646)) -* feat: Support Bootstrap completion ([`a3b065db`](../../commit/a3b065dba11f27566fce2e24492157138d775646)) -* feat: Add Svelte support ([`e586d9e5`](../../commit/e586d9e52d06a054faa1829ba0cf69c128481c34)) -* feat: Add ziglint ([`9856bbf5`](../../commit/9856bbf5530177613e46127b67054d3925f99a91)) -* feat: Add module util ([`12f7d294`](../../commit/12f7d294e66df3eddc6bbec721ef4196144dcf8f)) -* feat: Support `daemon` ([`cdb7187a`](../../commit/cdb7187af574c6aec3ff09010d59fe2a8814f43b)) -* chore(sideline): Add display mode config ([`32324992`](../../commit/32324992b47b2126241a9ab84410ba7cfdac3752)) -* chore(dashboard): Default to cycle dashboard sections ([`1956896d`](../../commit/1956896dd3f85e1fafb980c8aff5dbf01b1a2507)) -* fix(buffer-menu): Ensure `buffer-menu` is clean ([`548ce7ef`](../../commit/548ce7ef47490fa8d0b82b838cc4f8a1e739494b)) -* chore(sideline): Configure `sideline-eglot` ([`def90655`](../../commit/def906559bf90920ff7f2f2df4b8f36dd523230a)) -* chore(checker): Mute display diagnostic ([`675b9825`](../../commit/675b982533c978624ff5e745d1621edcb7a0d994)) -* chore: Add `guard-lf` package ([`d8616223`](../../commit/d8616223fb07503dffb3ec4ca75361b203ab5b76)) -* feat: Notify the user when `indent-tabs-mode` got activated ([`7b4eb11c`](../../commit/7b4eb11cf30fae0309445fa86ac8749a1f276ed8)) -* feat: feat: Replace package `doxygen-asterisk` with `auto-close-block` ([`2d56f447`](../../commit/2d56f447ac48f89654fbd93872a32b83f8e40b3c)) -* fix(vc-gutter): Ensure `diff-hl` is updated in all valid buffers ([`53802208`](../../commit/53802208c3251cf0f7bd2a0043f34c133a21ee1a)) -* feat(rgb): Replace `rainbow-mode` with `colorful-mode` ([`695358cb`](../../commit/695358cbb6475c54aba711615d6f7db61fc9c3fc)) -* feat(tools): Configure `sqlite-mode` ([`73dc3b0a`](../../commit/73dc3b0adea778ba5c933cb0c203ec3e82bd6979)) +* Add FASM support ([`e049b01`](../../commit/e049b015df8a52d10271e3a41aeeca631296a7d5)) +* Remove package `topsy` ([`77c5067`](../../commit/77c506758eaca4621cf1a92e9107e5d279721827)) +* fix: Apply workaround for `highlight-indent-guides` ([`e153bd8`](../../commit/e153bd8fd60ec3f6ed11cd8494e94feb7d1cb7c3)) +* feat: Add Tramp support ([`8535af3`](../../commit/8535af30d96e173df46515f03e91d50e472dca5e)) +* Add PO file support ([`59fa6ba`](../../commit/59fa6ba7d8f30be3f16fe849f41fd3c21a44a852)) +* Remove built-in log module, use `ic` instead ([`70ee1d0`](../../commit/70ee1d002ff97cb765b3043e7451f2aeb831e51c)) +* Extract template module to external package ([`74a2cb8`](../../commit/74a2cb84a0fd322d6b4cb73c7a1c0c68cb135f42)) +* Add `.envrc` support ([`3ff057f`](../../commit/3ff057fc9cfa0c931129e6f5496a2eae4211a34e)) +* Update debugging key bindings ([`f2ecb5d`](../../commit/f2ecb5dcb94d8abd373d8a3e3c39049029a65a62)) +* Add QSS support ([`71a175c`](../../commit/71a175c4adcfd913131030fb1deb5d2e5f9cc4f0)) +* feat: Add and configure Tex completion packages ([`31deaa9`](../../commit/31deaa9a9850ae904b9325af2b39dc5a57d0d82b)) +* refactor: Move message clean settings to its modules ([`727bc53`](../../commit/727bc53d323580215b7ad3a5cb8b5b84c1b14e3f)) +* feat: Support TailwindCSS completion ([`a3b065d`](../../commit/a3b065dba11f27566fce2e24492157138d775646)) +* feat: Support Bootstrap completion ([`a3b065d`](../../commit/a3b065dba11f27566fce2e24492157138d775646)) +* feat: Add Svelte support ([`e586d9e`](../../commit/e586d9e52d06a054faa1829ba0cf69c128481c34)) +* feat: Add ziglint ([`9856bbf`](../../commit/9856bbf5530177613e46127b67054d3925f99a91)) +* feat: Add module util ([`12f7d29`](../../commit/12f7d294e66df3eddc6bbec721ef4196144dcf8f)) +* feat: Support `daemon` ([`cdb7187`](../../commit/cdb7187af574c6aec3ff09010d59fe2a8814f43b)) +* chore(sideline): Add display mode config ([`3232499`](../../commit/32324992b47b2126241a9ab84410ba7cfdac3752)) +* chore(dashboard): Default to cycle dashboard sections ([`1956896`](../../commit/1956896dd3f85e1fafb980c8aff5dbf01b1a2507)) +* fix(buffer-menu): Ensure `buffer-menu` is clean ([`548ce7e`](../../commit/548ce7ef47490fa8d0b82b838cc4f8a1e739494b)) +* chore(sideline): Configure `sideline-eglot` ([`def9065`](../../commit/def906559bf90920ff7f2f2df4b8f36dd523230a)) +* chore(checker): Mute display diagnostic ([`675b982`](../../commit/675b982533c978624ff5e745d1621edcb7a0d994)) +* chore: Add `guard-lf` package ([`d861622`](../../commit/d8616223fb07503dffb3ec4ca75361b203ab5b76)) +* feat: Notify the user when `indent-tabs-mode` got activated ([`7b4eb11`](../../commit/7b4eb11cf30fae0309445fa86ac8749a1f276ed8)) +* feat: feat: Replace package `doxygen-asterisk` with `auto-close-block` ([`2d56f44`](../../commit/2d56f447ac48f89654fbd93872a32b83f8e40b3c)) +* fix(vc-gutter): Ensure `diff-hl` is updated in all valid buffers ([`5380220`](../../commit/53802208c3251cf0f7bd2a0043f34c133a21ee1a)) +* feat(rgb): Replace `rainbow-mode` with `colorful-mode` ([`695358c`](../../commit/695358cbb6475c54aba711615d6f7db61fc9c3fc)) +* feat(tools): Configure `sqlite-mode` ([`73dc3b0`](../../commit/73dc3b0adea778ba5c933cb0c203ec3e82bd6979)) ## 9.0.1 > Released Sep 20, 2023 -* Add new package `makefile-executor` ([`e301333e`](../../commit/e301333ef7585189614bb1fed163caab2e4a0973)) -* Add new package `codegpt` ([`443b2e13`](../../commit/443b2e1312368201a8a15d64355e7c9aaf5b8958)) -* Add and config new package `goto-last-change` ([`71d0c3df`](../../commit/71d0c3dfa0636fc55cc1c023e6383d5946b19e3c)) -* Add new package `flycheck-clang-analyzer` ([`0ea36feb`](../../commit/0ea36feb652c0ebe59ab5b80d5739cb23cb4b52b)) -* Add new package `codemetrics` ([`51032ef7`](../../commit/51032ef78f5b9827ee76c5c48832974c9bd9cf73)) -* Bind Shift+return to insert `newline` in minibuffer ([`41c159ba`](../../commit/41c159ba7d5630fb8e7e235fc8968001f04cbb15)) -* Ask CMake file-header template to differentiate `default`, `root`, and `subdirectory` ([`71c9bc60`](../../commit/71c9bc604b57cb2379606a0b6bc12c42bb79ded7)) -* Update auth-source logic for more general use ([`8681fb68`](../../commit/8681fb6800d4b4090c7a84dfd9d927035e2bb66a)) -* Add `company-dict` ([`1b24a4dd`](../../commit/1b24a4ddd58943fb37010b7700dac32c8d54bea1)) -* Add nerd-icons support ([`3ae70b96`](../../commit/3ae70b96937dedae3b1fe8fc9edf52ad340795d6)) -* Enable comment empty lines by default ([`2040d77e`](../../commit/2040d77e956cc3c1fb55ec0dae7dfe6c36c2381b)) -* Fix cannot re-connect to language server issue ([`362a9641`](../../commit/362a96418032da4244c05c810031ed74bc7b25c4)) -* Add dashboard's navigator ([`d81fce7f`](../../commit/d81fce7fb699f1866839c0bd409475ab758721d4)) -* Fix `indent-guides` is not obvious in 29.x ([`8456bd05`](../../commit/8456bd051b096af816cd9c0840b6980c21d94c5e)) -* Add `sly` to support common lisp development ([`fa0afd2d`](../../commit/fa0afd2d79b8b464f4f2413fcd93978ef168402f)) -* Add support for OpenCL ([`d5723c34`](../../commit/d5723c34ac53c7983cdfb686884478bcacc4d4a6)) -* Add support for CUDA ([`d5723c34`](../../commit/d5723c34ac53c7983cdfb686884478bcacc4d4a6)) -* Use `context-menu-mode` instead of `right-click-context` ([`a7e563ea`](../../commit/a7e563ea23121dd6ba340eb8fd8b9daed394f019)) -* Add more support for Clojure language ([`b84287bd`](../../commit/b84287bde0315c021f73009fcd67e2a0d348d64f)) -* Add breadcrumb mode ([`a81fcc65`](../../commit/a81fcc65af7357eeb4babb58b97b567c5a453b01)) -* Use prog mode settings for `haskell-cabal-mode` ([`fd8dfb51`](../../commit/fd8dfb5108882e5fc5a1ad74b129e35c3e1ae762)) -* Add support for P4 ([`3b167899`](../../commit/3b16789978d380b6be75f465fa2a3d3dbd9610b1)) -* Add company support for PHP ([`30c8b001`](../../commit/30c8b00169eefb866df062095c1bf33b6d0729ec)) -* Add company support for Perl ([`98d4e149`](../../commit/98d4e1494364ca49bf3cd370a659957674eda100)) -* Configure for beancount ([`40ee14e5`](../../commit/40ee14e541453e684d1f836dcc2fa47abda9ece9)) -* Add support for F* ([`1dc616ad`](../../commit/1dc616adae9bdcbf1810058b3d078f831be5cd34)) -* Add support for Hylang ([`df2337bf`](../../commit/df2337bfb3ef64a3c2e9cbd5422df7eb66b9e698)) -* Add support for Scheme ([`6fe51f46`](../../commit/6fe51f46592cd3e6ceee1ae274b086b046dc93b0)) -* Add support for ledger ([`5cc7ba8a`](../../commit/5cc7ba8abad0864f9d435519bb35bf45b32d2dcb)) -* Add support for SML ([`031289bf`](../../commit/031289bf682aa956cd322e1e1078408f0d79e8ce)) -* Use built-in on first project hook ([`84a7695b`](../../commit/84a7695b668debed6fb59bbd5313ff9be897d6b7)) -* Add LaTex support ([`7fbb631c`](../../commit/7fbb631c54b82aa43a80c4ad7733143c89773ff1)) -* Add Noir support ([`7fbb631c`](../../commit/7fbb631c54b82aa43a80c4ad7733143c89773ff1)) -* Enable jump to button in Tree-Sitter debug mode ([`02f5172c`](../../commit/02f5172c7d061732bb0f154ded5898c1baaf16b9)) -* Add Windows Menu's key bindings ([`0cc2bb8d`](../../commit/0cc2bb8d938f6a549cc3ae9a15ba4776010c6fa8)) -* Add package `chatgpt-sideline` ([`65409fc4`](../../commit/65409fc4c68254b18ce209e64fcf74b016e2413e)) +* Add new package `makefile-executor` ([`e301333`](../../commit/e301333ef7585189614bb1fed163caab2e4a0973)) +* Add new package `codegpt` ([`443b2e1`](../../commit/443b2e1312368201a8a15d64355e7c9aaf5b8958)) +* Add and config new package `goto-last-change` ([`71d0c3d`](../../commit/71d0c3dfa0636fc55cc1c023e6383d5946b19e3c)) +* Add new package `flycheck-clang-analyzer` ([`0ea36fe`](../../commit/0ea36feb652c0ebe59ab5b80d5739cb23cb4b52b)) +* Add new package `codemetrics` ([`51032ef`](../../commit/51032ef78f5b9827ee76c5c48832974c9bd9cf73)) +* Bind Shift+return to insert `newline` in minibuffer ([`41c159b`](../../commit/41c159ba7d5630fb8e7e235fc8968001f04cbb15)) +* Ask CMake file-header template to differentiate `default`, `root`, and `subdirectory` ([`71c9bc6`](../../commit/71c9bc604b57cb2379606a0b6bc12c42bb79ded7)) +* Update auth-source logic for more general use ([`8681fb6`](../../commit/8681fb6800d4b4090c7a84dfd9d927035e2bb66a)) +* Add `company-dict` ([`1b24a4d`](../../commit/1b24a4ddd58943fb37010b7700dac32c8d54bea1)) +* Add nerd-icons support ([`3ae70b9`](../../commit/3ae70b96937dedae3b1fe8fc9edf52ad340795d6)) +* Enable comment empty lines by default ([`2040d77`](../../commit/2040d77e956cc3c1fb55ec0dae7dfe6c36c2381b)) +* Fix cannot re-connect to language server issue ([`362a964`](../../commit/362a96418032da4244c05c810031ed74bc7b25c4)) +* Add dashboard's navigator ([`d81fce7`](../../commit/d81fce7fb699f1866839c0bd409475ab758721d4)) +* Fix `indent-guides` is not obvious in 29.x ([`8456bd0`](../../commit/8456bd051b096af816cd9c0840b6980c21d94c5e)) +* Add `sly` to support common lisp development ([`fa0afd2`](../../commit/fa0afd2d79b8b464f4f2413fcd93978ef168402f)) +* Add support for OpenCL ([`d5723c3`](../../commit/d5723c34ac53c7983cdfb686884478bcacc4d4a6)) +* Add support for CUDA ([`d5723c3`](../../commit/d5723c34ac53c7983cdfb686884478bcacc4d4a6)) +* Use `context-menu-mode` instead of `right-click-context` ([`a7e563e`](../../commit/a7e563ea23121dd6ba340eb8fd8b9daed394f019)) +* Add more support for Clojure language ([`b84287b`](../../commit/b84287bde0315c021f73009fcd67e2a0d348d64f)) +* Add breadcrumb mode ([`a81fcc6`](../../commit/a81fcc65af7357eeb4babb58b97b567c5a453b01)) +* Use prog mode settings for `haskell-cabal-mode` ([`fd8dfb5`](../../commit/fd8dfb5108882e5fc5a1ad74b129e35c3e1ae762)) +* Add support for P4 ([`3b16789`](../../commit/3b16789978d380b6be75f465fa2a3d3dbd9610b1)) +* Add company support for PHP ([`30c8b00`](../../commit/30c8b00169eefb866df062095c1bf33b6d0729ec)) +* Add company support for Perl ([`98d4e14`](../../commit/98d4e1494364ca49bf3cd370a659957674eda100)) +* Configure for beancount ([`40ee14e`](../../commit/40ee14e541453e684d1f836dcc2fa47abda9ece9)) +* Add support for F* ([`1dc616a`](../../commit/1dc616adae9bdcbf1810058b3d078f831be5cd34)) +* Add support for Hylang ([`df2337b`](../../commit/df2337bfb3ef64a3c2e9cbd5422df7eb66b9e698)) +* Add support for Scheme ([`6fe51f4`](../../commit/6fe51f46592cd3e6ceee1ae274b086b046dc93b0)) +* Add support for ledger ([`5cc7ba8`](../../commit/5cc7ba8abad0864f9d435519bb35bf45b32d2dcb)) +* Add support for SML ([`031289b`](../../commit/031289bf682aa956cd322e1e1078408f0d79e8ce)) +* Use built-in on first project hook ([`84a7695`](../../commit/84a7695b668debed6fb59bbd5313ff9be897d6b7)) +* Add LaTex support ([`7fbb631`](../../commit/7fbb631c54b82aa43a80c4ad7733143c89773ff1)) +* Add Noir support ([`7fbb631`](../../commit/7fbb631c54b82aa43a80c4ad7733143c89773ff1)) +* Enable jump to button in Tree-Sitter debug mode ([`02f5172`](../../commit/02f5172c7d061732bb0f154ded5898c1baaf16b9)) +* Add Windows Menu's key bindings ([`0cc2bb8`](../../commit/0cc2bb8d938f6a549cc3ae9a15ba4776010c6fa8)) +* Add package `chatgpt-sideline` ([`65409fc`](../../commit/65409fc4c68254b18ce209e64fcf74b016e2413e)) ## 9.0.0 > Released Jan 01, 2023 -* Add new package `company-kaomoji` (1cc6b70e9ab4ae3fc893482c1d38986da6b32e87) -* Refactor `ts-fold-indicators` face function and get queries function (27e614884c1cb84d8f832280d253d387cdde99b4) -* Add OCaml support (ddaaf11b98c88c709fecd5db8b8214a63e1bb00f) -* Add support for `elfeed` (7a3c3ad99bea5088da2c7d681552f55914b37934) -* Cancel `echo-bar` right padding by default (75416a77c6bb0eef90b71a2ee09ab42202bc7bb5) -* Add new packages `org-superstar` and `org-fancy-priorities` (695f5f46e611de1529c6bbd57cd251386616d2f7) -* Add new package `hammy` (8ea21aa67e98efd9a8eb846e6b908fb500afab52) -* Enable `display-fill-column-indicator-mode` in `text-mode` by default (5283fd976574ecd322e77556bcd0b6790eed7403) -* Enhance experience with `org-superstars` (5c240a626fe60685f2768eb17a6dbfcc61452134) -* Add new package `sideline-color` (6c472aa4c92069551a0707760e3d41c12dcd7411) -* Add support for `haml-mode` (b50bbb26cfddab3e16d849f65e33894ec5a70177) -* Use package-menu to upgrade packages instead of the prompt (5903e431921a10f023247ba59ee78eaaa59fc961) -* Extract message utility functions to separate module, `msgu` (d3957bec1ffd3668a5f8861644f6ec2953cd3781) -* Fix does upgradable menu after package list is refreshed (09d78404f7e8f0bec64d4df78ae9f90e7c6069d9) -* Add clear filter key for `package-menu` mode (bf36721805a48b6319bd5eb1b9064129af293560) -* Load `eask-api` when in valid Eask related project (5644b5128cb1f132b9b552cc745377be8528b435) -* Add new package `editorconfig-generate` (afd3fa07135fd9154b551fffb20822316cf4e3d7) -* Bind key `C-M-k` to `kill-this-buffer` (758c464dfe76bad0053ce82f4064f382a1ae4ac3) -* Remove `buffer-menu` feature on display project name (74feaa938d4be1667bab1c1f68308f8c6a250208) -* Use macro to define `file-header` insertion functions (e5e200684f25325c70906a53a84f526328bc6fbf) -* Re-define file header source with utility macro (ca4d8e49ba80f78bd34ff610a442c8a8bf7bc097) -* Turn `completion-ignore-case` on by default (b94542cb51736f26a3842753bbc268116fa4ba06) -* Add new package `minimap` (ae9ef5a0d93bf8f924c8572d00f026dace2079a3) -* Replace package `docstr` with `ts-docstr` for better parsing capability (ee85ba4b01401707461ec695038f2ee4cc175f74) -* Add new package `highlight-doxygen` (ee85ba4b01401707461ec695038f2ee4cc175f74) -* Enable `minibuffer-depth-indicate-mode` by default (83ecd6c2b256d2fa0dd3b6fa64236ad5aab2843f) -* Fix typescript insertion with `ts-docstr` (ec8a5592e8f4e6ba707d36218461e2f0a9329822) -* Add new package `toggle-profiler` (eecf0323d3af8fdcc2b3c2c8e8e62dd78774a3b7) -* Bind new key to command `keyboard-escape-quit` (3ce9d3ff4ae965a31f1855bf6f9b11c31e2576be) -* Bind new key to command `toggle-profiler` (f49dfeb07c1e0d3d879cb3acdfb4a5ab892326f2) -* Bind new key to command `ts-docstr-ask` (9836e3d76afeadcb75c0d7378d38b209dda50e82) -* Add new packages `gitlab-ci-mode` and `gitlab-ci-mode-flycheck` (984fc836ecb832e047409a1efa03c806205a7c9e) -* Remove unnecessary config to `auto-mode-alist` (0dad6227b3372d530f55032726693ab41541e8a7) -* Add new package `sln-mode` to handle `*.sln` file (673a2635efccd1e5258a157e738f8ebdb35f567a) -* Add new font `Symbola.ttf` for Windows' unicode display (98a74550b9edfcbe30d403418263b6594582652c) -* Extract undo/redo module to external package `undo-tree-vf` (391bb1e4b1416c1c7f54a19f07c6b83ccd3e4524) -* Use built-in `bolp` and `eolp` functions instead (0504aa597efd52e9efbefe3e2338349cc5d458fc) -* Extract parent directory not found when file creation module to external package `ff-guard` (008592968fea55e925c0bbe8e5412b93a4dde7c3) -* Add new package `prettier` (a2af4f74eea9e6b7861db8babb1de2a4909247a2) -* Add new package `vs-electric-spacing` (a04369b5ebfa1db7a47bcf156f80614959685190) -* Add new package `terminal-here` (56ad79fdf537fc1d7380ff4adc71dea5051e00ac) -* Add new package `quickrun` (e13899b04affe5157a0cacff52b24c1925c293f4) -* Extract select file in project/pwd to external `ffap` (e9b7c045a2cbd2dfdfc4f519e24a973a0807410b) -* Extract [@cmuratori](https://github.com/cmuratori)'s run/make script feature to external `execrun` (83d90d53e5324e22e5fbf3c174487ddd22fd7117) -* Extract find corresponding file module to external package `fof` (b7d018be296f55ca5cd8859b53c68efe326a2399) -* Extract VSCode editing experience to external package `vsc-edit-mode` (744eb525d3c90055528f650e3991614eb172684a) -* Removed complex line number configuration, keep it simple (f78fd0b8b96b8fb113f6156d346689622967fa15) -* Remove dashboard's previous/next blank-lines navigation keys (bfef0c196ac7fdc307552b6d5f663279d540cba4) -* Extract package module to external package `pkg-dm` (9051c25ce5c07542ea0a52bfb4192d74ac8d1453) -* Use `elenv` for emacs-lisp environment (92c9db4dbbe49072874fd18d2c27b44a5384bfd4) -* Remove previouse/next key type option (a4a605f44e18ae2161a8e87598e636bf9f1f51a9) -* Extract previous/next blank line keys to external package `block-travel` (9f624c1bbb7259da65fd9b468812358d53ee36ca) -* Add packages for feature sticky header, `topsy` and `org-sticky-header` (a9f01c9ce319e27e04e1a8fac3b56ed14f3d65ab) -* Add support for Terraform (d241fc77d5c13b3e01e1d0dfd78147b3a7c9a59d) -* Add support for Zig (2911e870dce6238ab6d960a287cd25c64576bb33) -* Add support for Racket (f2f314f1eb670b7508c661cf68e0033292fe256c) -* Add support for Idris (99013713d649e59f07fae5a2bf9e7fe5f96f0800) -* Add support for VHDL (185046a34e06bc8c4a6abf57c4f6d843a66da722) -* Add support for Mint (9d50d8a05767f32c373f13240f3eaeb9440f6582) -* Improve EWW UX (b954b8f5f1782a500eb4a7fda688a8fab0aebd27) -* Improve `image-mode` UX (80127d5060bbf6ae871d87502dfff27a73c123fe) -* Add `emp` as default music player (2861743073ecd2e6d7608dac8021fc400104c4bb) -* Bind keys for `emp` (f5183bee81fea5b0e832ed39282ad76ee9ed70e8) -* Bind keys for `eww` (500696b4403a50f83951532f0e31ab4b1cd5a2bb) -* Add support for fish shell-script (44ed9764a7f2dc3e3632c6b0136390a97bce74e4) -* Add support for ansible (cb91beeff65b63539a2893f67aaa888d9d53dc7b) -* Remove `rjsx-mode` and `js2-mode`, use default `js-mode` and `js-jsx-mode` (d3b76f615c5030a54ec3d74517a43c734700be50) -* Add `company` and `flycheck` support for multiple languages (4f71184b0eab6b65bc7f57d615494f9d88afb020) -* Split moduels to each individual `config.el` file (d97ef5c27090d65e3ba555c41443f5d877764493) -* Allow `lsp-mode` being active in file without the `project-root` being defined (b737a6515e51b23dfb42c11ab2e49a54f48b9ca4) -* Add support for elisp keywords completion (19f87363c77d15602f09dd358ce9237fe47ccca1) -* Extract modeline display to external package `jcs-modeline` (3cb0a6304d4b95fca9a35b4efbf6434eae4494ed) -* Replace `toggle-quotes` with new package `cycle-quotes` (53c69a8532142b4ede97df717e07c29fff9e66a5) -* Remove unused command to toggle forward/backward sexp (4703c7fc81152f8818f5c4cba907d64980ae4c0c) -* Bind keys for `cycle-quote` and `cycle-slash` (8e5dec85c47c4c9ff35e48df6bcbf317b687cc93) -* Replace `bool-flip` with new package `cycle-at-point` (e3399712e28730fa8b474032e6e17664f153ac68) -* Add new package `cycle-case-style` (6cad7031a6b0ef58bbf74e74e020b272d53e4b19) -* Add eldoc support for CSS (9b9b4cd493ef35d31a78300c94cae9ad9e778c84) -* Add eldoc support for TOML (a0eb8ed975a9a7367ff94789d48f80ebb207dbf3) -* Use `literate-calc-mode` instead of self-defined calc command (691186d362f79838291779bac6bf50e76eebc015) -* Move back to use `use-package` (9d2ead748c345b8edcf17fb9ee0e58b1b7464f09) -* Make echo all `re-mode` commands (26a37fa3b4b6e8f9125a4c8c133e8df03681a496) -* All major-mode for all .ignore files (a14a111e8c59c08718f620a455a1c14e26f8779e) -* Add another file paths completion package, `company-paths` (a73cafcaf2f36192de06eeb3096a856f05e01113) -* Integrate `magit` (54953d780fc9962d5d373cabb9a3c3a2f2c7629e) -* Add new package `vc-refrest` for better UX (91625bc0ff66f773c8c040b3d56b2e64de8ba497) -* Add support for `epub` reader (04a1bd1eba474f6949e96f2ec23befc96847de56) -* Add new package `free-keys` (9925b4ce6dd513843b07b1edae07565366bc8857) -* Add new package `npm-mode` (78ad3a6cae3cc273c7c10695b1b5a5e5941ec686) -* Add new package `k8s-mode` for kubernetes configuration file (0db8edb596c264a9256ebf20ea74dd9b9e422a04) -* Add new module for languages `PureScript` (8ffb007bda2281a53b29782b898c2339033846ab) -* Add support for `PKGBUILD` file (b14cf80ecac042047e89dbb870ff79e75769bb8c) -* Add company support for Eask-file, `company-eask` (21655da7edbad6f85aed6cce67994948d831bfe0) -* Add eldoc support for Eask-file, `eldoc-eask` (fcd62477d4caa5d8c442568e37fd37d3309f0655) -* Remove `nhexl-mode`, and use `hexl-mode` instead (487e8ec100b915d82205216013c59dd4669e8902) -* Add annotation for `file-header` templates (5d32dbe973a74cb918a32cd7489773eab247561c) +* Add new package `company-kaomoji` ([`1cc6b70`](../../commit/1cc6b70e9ab4ae3fc893482c1d38986da6b32e87)) +* Refactor `ts-fold-indicators` face function and get queries function ([`27e6148`](../../commit/27e614884c1cb84d8f832280d253d387cdde99b4)) +* Add OCaml support ([`ddaaf11`](../../commit/ddaaf11b98c88c709fecd5db8b8214a63e1bb00f)) +* Add support for `elfeed` ([`7a3c3ad`](../../commit/7a3c3ad99bea5088da2c7d681552f55914b37934)) +* Cancel `echo-bar` right padding by default ([`75416a7`](../../commit/75416a77c6bb0eef90b71a2ee09ab42202bc7bb5)) +* Add new packages `org-superstar` and `org-fancy-priorities` ([`695f5f4`](../../commit/695f5f46e611de1529c6bbd57cd251386616d2f7)) +* Add new package `hammy` ([`8ea21aa`](../../commit/8ea21aa67e98efd9a8eb846e6b908fb500afab52)) +* Enable `display-fill-column-indicator-mode` in `text-mode` by default ([`5283fd9`](../../commit/5283fd976574ecd322e77556bcd0b6790eed7403)) +* Enhance experience with `org-superstars` ([`5c240a6`](../../commit/5c240a626fe60685f2768eb17a6dbfcc61452134)) +* Add new package `sideline-color` ([`6c472aa`](../../commit/6c472aa4c92069551a0707760e3d41c12dcd7411)) +* Add support for `haml-mode` ([`b50bbb2`](../../commit/b50bbb26cfddab3e16d849f65e33894ec5a70177)) +* Use package-menu to upgrade packages instead of the prompt ([`5903e43`](../../commit/5903e431921a10f023247ba59ee78eaaa59fc961)) +* Extract message utility functions to separate module, `msgu` ([`d3957be`](../../commit/d3957bec1ffd3668a5f8861644f6ec2953cd3781)) +* Fix does upgradable menu after package list is refreshed ([`09d7840`](../../commit/09d78404f7e8f0bec64d4df78ae9f90e7c6069d9)) +* Add clear filter key for `package-menu` mode ([`bf36721`](../../commit/bf36721805a48b6319bd5eb1b9064129af293560)) +* Load `eask-api` when in valid Eask related project ([`5644b51`](../../commit/5644b5128cb1f132b9b552cc745377be8528b435)) +* Add new package `editorconfig-generate` ([`afd3fa0`](../../commit/afd3fa07135fd9154b551fffb20822316cf4e3d7)) +* Bind key `C-M-k` to `kill-this-buffer` ([`758c464`](../../commit/758c464dfe76bad0053ce82f4064f382a1ae4ac3)) +* Remove `buffer-menu` feature on display project name ([`74feaa9`](../../commit/74feaa938d4be1667bab1c1f68308f8c6a250208)) +* Use macro to define `file-header` insertion functions ([`e5e2006`](../../commit/e5e200684f25325c70906a53a84f526328bc6fbf)) +* Re-define file header source with utility macro ([`ca4d8e4`](../../commit/ca4d8e49ba80f78bd34ff610a442c8a8bf7bc097)) +* Turn `completion-ignore-case` on by default ([`b94542c`](../../commit/b94542cb51736f26a3842753bbc268116fa4ba06)) +* Add new package `minimap` ([`ae9ef5a`](../../commit/ae9ef5a0d93bf8f924c8572d00f026dace2079a3)) +* Replace package `docstr` with `ts-docstr` for better parsing capability ([`ee85ba4`](../../commit/ee85ba4b01401707461ec695038f2ee4cc175f74)) +* Add new package `highlight-doxygen` ([`ee85ba4`](../../commit/ee85ba4b01401707461ec695038f2ee4cc175f74)) +* Enable `minibuffer-depth-indicate-mode` by default ([`83ecd6c`](../../commit/83ecd6c2b256d2fa0dd3b6fa64236ad5aab2843f)) +* Fix typescript insertion with `ts-docstr` ([`ec8a559`](../../commit/ec8a5592e8f4e6ba707d36218461e2f0a9329822)) +* Add new package `toggle-profiler` ([`eecf032`](../../commit/eecf0323d3af8fdcc2b3c2c8e8e62dd78774a3b7)) +* Bind new key to command `keyboard-escape-quit` ([`3ce9d3f`](../../commit/3ce9d3ff4ae965a31f1855bf6f9b11c31e2576be)) +* Bind new key to command `toggle-profiler` ([`f49dfeb`](../../commit/f49dfeb07c1e0d3d879cb3acdfb4a5ab892326f2)) +* Bind new key to command `ts-docstr-ask` ([`9836e3d`](../../commit/9836e3d76afeadcb75c0d7378d38b209dda50e82)) +* Add new packages `gitlab-ci-mode` and `gitlab-ci-mode-flycheck` ([`984fc83`](../../commit/984fc836ecb832e047409a1efa03c806205a7c9e)) +* Remove unnecessary config to `auto-mode-alist` ([`0dad622`](../../commit/0dad6227b3372d530f55032726693ab41541e8a7)) +* Add new package `sln-mode` to handle `*.sln` file ([`673a263`](../../commit/673a2635efccd1e5258a157e738f8ebdb35f567a)) +* Add new font `Symbola.ttf` for Windows' unicode display ([`98a7455`](../../commit/98a74550b9edfcbe30d403418263b6594582652c)) +* Extract undo/redo module to external package `undo-tree-vf` ([`391bb1e`](../../commit/391bb1e4b1416c1c7f54a19f07c6b83ccd3e4524)) +* Use built-in `bolp` and `eolp` functions instead ([`0504aa5`](../../commit/0504aa597efd52e9efbefe3e2338349cc5d458fc)) +* Extract parent directory not found when file creation module to external package `ff-guard` ([`0085929`](../../commit/008592968fea55e925c0bbe8e5412b93a4dde7c3)) +* Add new package `prettier` ([`a2af4f7`](../../commit/a2af4f74eea9e6b7861db8babb1de2a4909247a2)) +* Add new package `vs-electric-spacing` ([`a04369b`](../../commit/a04369b5ebfa1db7a47bcf156f80614959685190)) +* Add new package `terminal-here` ([`56ad79f`](../../commit/56ad79fdf537fc1d7380ff4adc71dea5051e00ac)) +* Add new package `quickrun` ([`e13899b`](../../commit/e13899b04affe5157a0cacff52b24c1925c293f4)) +* Extract select file in project/pwd to external `ffap` ([`e9b7c04`](../../commit/e9b7c045a2cbd2dfdfc4f519e24a973a0807410b)) +* Extract [@cmuratori](https://github.com/cmuratori)'s run/make script feature to external `execrun` ([`83d90d5`](../../commit/83d90d53e5324e22e5fbf3c174487ddd22fd7117)) +* Extract find corresponding file module to external package `fof` ([`b7d018b`](../../commit/b7d018be296f55ca5cd8859b53c68efe326a2399)) +* Extract VSCode editing experience to external package `vsc-edit-mode` ([`744eb52`](../../commit/744eb525d3c90055528f650e3991614eb172684a)) +* Removed complex line number configuration, keep it simple ([`f78fd0b`](../../commit/f78fd0b8b96b8fb113f6156d346689622967fa15)) +* Remove dashboard's previous/next blank-lines navigation keys ([`bfef0c1`](../../commit/bfef0c196ac7fdc307552b6d5f663279d540cba4)) +* Extract package module to external package `pkg-dm` ([`9051c25`](../../commit/9051c25ce5c07542ea0a52bfb4192d74ac8d1453)) +* Use `elenv` for emacs-lisp environment ([`92c9db4`](../../commit/92c9db4dbbe49072874fd18d2c27b44a5384bfd4)) +* Remove previouse/next key type option ([`a4a605f`](../../commit/a4a605f44e18ae2161a8e87598e636bf9f1f51a9)) +* Extract previous/next blank line keys to external package `block-travel` ([`9f624c1`](../../commit/9f624c1bbb7259da65fd9b468812358d53ee36ca)) +* Add packages for feature sticky header, `topsy` and `org-sticky-header` ([`a9f01c9`](../../commit/a9f01c9ce319e27e04e1a8fac3b56ed14f3d65ab)) +* Add support for Terraform ([`d241fc7`](../../commit/d241fc77d5c13b3e01e1d0dfd78147b3a7c9a59d)) +* Add support for Zig ([`2911e87`](../../commit/2911e870dce6238ab6d960a287cd25c64576bb33)) +* Add support for Racket ([`f2f314f`](../../commit/f2f314f1eb670b7508c661cf68e0033292fe256c)) +* Add support for Idris ([`9901371`](../../commit/99013713d649e59f07fae5a2bf9e7fe5f96f0800)) +* Add support for VHDL ([`185046a`](../../commit/185046a34e06bc8c4a6abf57c4f6d843a66da722)) +* Add support for Mint ([`9d50d8a`](../../commit/9d50d8a05767f32c373f13240f3eaeb9440f6582)) +* Improve EWW UX ([`b954b8f`](../../commit/b954b8f5f1782a500eb4a7fda688a8fab0aebd27)) +* Improve `image-mode` UX ([`80127d5`](../../commit/80127d5060bbf6ae871d87502dfff27a73c123fe)) +* Add `emp` as default music player ([`2861743`](../../commit/2861743073ecd2e6d7608dac8021fc400104c4bb)) +* Bind keys for `emp` ([`f5183be`](../../commit/f5183bee81fea5b0e832ed39282ad76ee9ed70e8)) +* Bind keys for `eww` ([`500696b`](../../commit/500696b4403a50f83951532f0e31ab4b1cd5a2bb)) +* Add support for fish shell-script ([`44ed976`](../../commit/44ed9764a7f2dc3e3632c6b0136390a97bce74e4)) +* Add support for ansible ([`cb91bee`](../../commit/cb91beeff65b63539a2893f67aaa888d9d53dc7b)) +* Remove `rjsx-mode` and `js2-mode`, use default `js-mode` and `js-jsx-mode` ([`d3b76f6`](../../commit/d3b76f615c5030a54ec3d74517a43c734700be50)) +* Add `company` and `flycheck` support for multiple languages ([`4f71184`](../../commit/4f71184b0eab6b65bc7f57d615494f9d88afb020)) +* Split moduels to each individual `config.el` file ([`d97ef5c`](../../commit/d97ef5c27090d65e3ba555c41443f5d877764493)) +* Allow `lsp-mode` being active in file without the `project-root` being defined ([`b737a65`](../../commit/b737a6515e51b23dfb42c11ab2e49a54f48b9ca4)) +* Add support for elisp keywords completion ([`19f8736`](../../commit/19f87363c77d15602f09dd358ce9237fe47ccca1)) +* Extract modeline display to external package `jcs-modeline` ([`3cb0a63`](../../commit/3cb0a6304d4b95fca9a35b4efbf6434eae4494ed)) +* Replace `toggle-quotes` with new package `cycle-quotes` ([`53c69a8`](../../commit/53c69a8532142b4ede97df717e07c29fff9e66a5)) +* Remove unused command to toggle forward/backward sexp ([`4703c7f`](../../commit/4703c7fc81152f8818f5c4cba907d64980ae4c0c)) +* Bind keys for `cycle-quote` and `cycle-slash` ([`8e5dec8`](../../commit/8e5dec85c47c4c9ff35e48df6bcbf317b687cc93)) +* Replace `bool-flip` with new package `cycle-at-point` ([`e339971`](../../commit/e3399712e28730fa8b474032e6e17664f153ac68)) +* Add new package `cycle-case-style` ([`6cad703`](../../commit/6cad7031a6b0ef58bbf74e74e020b272d53e4b19)) +* Add eldoc support for CSS ([`9b9b4cd`](../../commit/9b9b4cd493ef35d31a78300c94cae9ad9e778c84)) +* Add eldoc support for TOML ([`a0eb8ed`](../../commit/a0eb8ed975a9a7367ff94789d48f80ebb207dbf3)) +* Use `literate-calc-mode` instead of self-defined calc command ([`691186d`](../../commit/691186d362f79838291779bac6bf50e76eebc015)) +* Move back to use `use-package` ([`9d2ead7`](../../commit/9d2ead748c345b8edcf17fb9ee0e58b1b7464f09)) +* Make echo all `re-mode` commands ([`26a37fa`](../../commit/26a37fa3b4b6e8f9125a4c8c133e8df03681a496)) +* All major-mode for all .ignore files ([`a14a111`](../../commit/a14a111e8c59c08718f620a455a1c14e26f8779e)) +* Add another file paths completion package, `company-paths` ([`a73cafc`](../../commit/a73cafcaf2f36192de06eeb3096a856f05e01113)) +* Integrate `magit` ([`54953d7`](../../commit/54953d780fc9962d5d373cabb9a3c3a2f2c7629e)) +* Add new package `vc-refrest` for better UX ([`91625bc`](../../commit/91625bc0ff66f773c8c040b3d56b2e64de8ba497)) +* Add support for `epub` reader ([`04a1bd1`](../../commit/04a1bd1eba474f6949e96f2ec23befc96847de56)) +* Add new package `free-keys` ([`9925b4c`](../../commit/9925b4ce6dd513843b07b1edae07565366bc8857)) +* Add new package `npm-mode` ([`78ad3a6`](../../commit/78ad3a6cae3cc273c7c10695b1b5a5e5941ec686)) +* Add new package `k8s-mode` for kubernetes configuration file ([`0db8edb`](../../commit/0db8edb596c264a9256ebf20ea74dd9b9e422a04)) +* Add new module for languages `PureScript` ([`8ffb007`](../../commit/8ffb007bda2281a53b29782b898c2339033846ab)) +* Add support for `PKGBUILD` file ([`b14cf80`](../../commit/b14cf80ecac042047e89dbb870ff79e75769bb8c)) +* Add company support for Eask-file, `company-eask` ([`21655da`](../../commit/21655da7edbad6f85aed6cce67994948d831bfe0)) +* Add eldoc support for Eask-file, `eldoc-eask` ([`fcd6247`](../../commit/fcd62477d4caa5d8c442568e37fd37d3309f0655)) +* Remove `nhexl-mode`, and use `hexl-mode` instead ([`487e8ec`](../../commit/487e8ec100b915d82205216013c59dd4669e8902)) +* Add annotation for `file-header` templates ([`5d32dbe`](../../commit/5d32dbe973a74cb918a32cd7489773eab247561c)) ## 8.2.1 > Released Jul 22, 2022 -* Add new package `sideline-blame` (c4713396e8937da498083bd3730f28bc114e3b47) -* Add new package `sideline-flymake` (322b5bb5123a60c5dbdcb11458d2c7eca92fe9a0) -* Add new package `echo-bar` (26c0bf7c657a29368486aac112439a8507927b21) -* Change modeline color while debugging (c4f224fe926400089d8896f3a89fe545e12e66a2) -* Add new package `company-dockerfile` (ebb3556e9cb79f66f191e39dee8738d2cd1d33bc) -* Add new package `company-powershell` (39290625a468462d2ebaccc6a7d8cf4f13851311) -* Add new package `company-cmd` (b7ed05973c8b8b02a729734d1303ed1291dccba4) -* Add new package `company-makefile` (0e1d62adddfb8babf9ab1478af58e1519d1f7a28) -* Add new package `company-autoconf` (cec8940857a8bb434ecf0a37188cd6840602b70c) -* Add new package `company-coffee` (74e5a42eebaf812f266a4a508d059bed33c7986f) -* Refactor to use default function to get `*Messages*` buffer instead of declaring another variable explicitly in the global scope (ac7f0791c1f1e3de16a14831d07280957b77e244) -* Use default function to get `*scratch*` buffer (b6909ccb5f9f4fa6af211ac1e9bb0fd50afc7255) -* Replace built-in progress reporter with external library `prt` (aa0f6d8bbfe882e2ba4f783e6eca431b392c04cc) -* Use built-in `scratch-buffer` function instead (5a0957f214aa786b2ea82e41a2aff3052c63eda3) -* Fix function name `startup--get-buffer-create-scratch` to get scratch buffer `get-scratch-buffer-create` (8788c3015561faf13c46e12a9e5febc5b1a983c2) -* Drop support for Emacs 28.x (7fa61292bd1553cee46884a98f4959933b55bb12) -* Diminish buffer `*Bug Help*` as default (cef9be24f401405fe58aed4496e6cac52099487b) +* Add new package `sideline-blame` ([`c471339`](../../commit/c4713396e8937da498083bd3730f28bc114e3b47)) +* Add new package `sideline-flymake` ([`322b5bb`](../../commit/322b5bb5123a60c5dbdcb11458d2c7eca92fe9a0)) +* Add new package `echo-bar` ([`26c0bf7`](../../commit/26c0bf7c657a29368486aac112439a8507927b21)) +* Change modeline color while debugging ([`c4f224f`](../../commit/c4f224fe926400089d8896f3a89fe545e12e66a2)) +* Add new package `company-dockerfile` ([`ebb3556`](../../commit/ebb3556e9cb79f66f191e39dee8738d2cd1d33bc)) +* Add new package `company-powershell` ([`3929062`](../../commit/39290625a468462d2ebaccc6a7d8cf4f13851311)) +* Add new package `company-cmd` ([`b7ed059`](../../commit/b7ed05973c8b8b02a729734d1303ed1291dccba4)) +* Add new package `company-makefile` ([`0e1d62a`](../../commit/0e1d62adddfb8babf9ab1478af58e1519d1f7a28)) +* Add new package `company-autoconf` ([`cec8940`](../../commit/cec8940857a8bb434ecf0a37188cd6840602b70c)) +* Add new package `company-coffee` ([`74e5a42`](../../commit/74e5a42eebaf812f266a4a508d059bed33c7986f)) +* Refactor to use default function to get `*Messages*` buffer instead of declaring another variable explicitly in the global scope ([`ac7f079`](../../commit/ac7f0791c1f1e3de16a14831d07280957b77e244)) +* Use default function to get `*scratch*` buffer ([`b6909cc`](../../commit/b6909ccb5f9f4fa6af211ac1e9bb0fd50afc7255)) +* Replace built-in progress reporter with external library `prt` ([`aa0f6d8`](../../commit/aa0f6d8bbfe882e2ba4f783e6eca431b392c04cc)) +* Use built-in `scratch-buffer` function instead ([`5a0957f`](../../commit/5a0957f214aa786b2ea82e41a2aff3052c63eda3)) +* Fix function name `startup--get-buffer-create-scratch` to get scratch buffer `get-scratch-buffer-create` ([`8788c30`](../../commit/8788c3015561faf13c46e12a9e5febc5b1a983c2)) +* Drop support for Emacs 28.x ([`7fa6129`](../../commit/7fa61292bd1553cee46884a98f4959933b55bb12)) +* Diminish buffer `*Bug Help*` as default ([`cef9be2`](../../commit/cef9be24f401405fe58aed4496e6cac52099487b)) ## 8.2.0 > Released Jun 21, 2022 -* Drop support for Emacs 27.x (7fa61292bd1553cee46884a98f4959933b55bb12) -* Prevent whitespace cleanup for `text-mode` (56dca1ac48ef4e613c777b82bac1247513e6c024) -* Remove development package `ert-runner` (84ffcde033cab6073b3b2624b1c6f40260322a64) -* Remove development package `el-mock` (8fcc72f1ec5fb723b3262070ad87095d42fea852) -* Fix bug for newly added packages from archives (6a92be2c8800b478bfb120a4489a7b1930235db0) -* Add new package `flycheck-eask`. (cd94bbabe3bb5e3878384afea030cb203e0e5050) -* Move minibuffer flx to external package [vertico-flx](https://github.com/jcs-elpa/vertico-flx) (151d8f20e2d5539add95deb892acfbb0f1638df7) -* Show `helpful` message while describing things at point (a06c8d1edbb2380cf449a554dda0d10c3433ae3a) -* Add new package `suggest` (913f278afa145d46924cde5322506cd13dd43e9f) -* Inhibit redisplay on startup to speed up the startup time (9922190f2e53ccc9a400943140a3c5e6462bde5f) -* Add new package `company-shell` (6b5d79a65d889222e42343325cf59790c78d97af) -* Add new package `company-glsl` (122b4a1b541acf7a810253d986d423e216a92ceb) -* Add new package `arduino-mode` (d4ffb8c6b5ca99619c601c26c85aa6063d6c1806) -* Add new package `on` and configured to improve startup speed (8c9f797492a74cdb30ba9ff6f7ee483c0683def5) -* Move init delay to `on-init-ui-hook` (705afe9744fc3efb2ee005beb8db85e0a08b6fbe) -* Add new package `qml-mode` (e383783356143f9cb25ad315be6227823a7b44d7) -* Add new package `coffee-mode` (d7a9a999e9dbd8c47fc3e2ac559517b776c0ac31) -* Add new package `crystal-mode` (72c3dba1d496fd85e96ea8f80da1caa3a56b2e06) -* Add new package `d-mode` (8bbb6fdce8351cccf22b59e08efa6a5969d8586e) -* Add new package `feature-mode` (76f0696c15f60c44aced2a6c58a3039d7d214fcf) -* Add new package `git-assembler-mode`, `graphql-mode`, and `hexo` (444fd96c9a5ebbdab04f74ae18f3a31978b3acfa) -* Add new package `recentf-excl` (1fde6265b338d17efa5f47b908ad4b30c159d9da) -* Add new package `javap-mode` (6e6f53f1f2cc05cef2f0065ad214f6d58d65eaa3) -* Fix conflict between `company-box-doc` and `dashboard` refresh (d49a0310c3a28e1edabb6ba11436b046c701e63f) -* Fix popup tip showing previous/last description (45451bb3460f0ffabb6af35c989bb3e6290e594c) -* Fix bury buffer proceed before `diminish-buffer-mode` will jump to unwanted buffer (184ba39015b1b26342c13f8b107b69c389f0aeed) -* Add new packages `phpt-mode` and `robots-txt-mode` (eb4714b8280490fbf9c6f570479e6f3ba1a3a690) -* Remove package `blamer` and add new package `vc-msg` (067cfb98a52263754b7d4c4222d2bd9c8c4d0601) -* Improve `jcs-advice-add` macro (3ec7e943ab0d035610ce6391e7f9d8ed8ff58cb1) -* Improve `jcs-add-hook` macro (48abd848fba1b2cefa6c7086ca73ac679c3f83ec) -* Add new package `protobuf-mode` (6e4f27587b5a54a0a7bddc5e0a8cba2e008f1463) -* Remove tab and spaces converting util functions (5c92fa525f486ef46e2e309ee5d47f48f5fef66a) -* Move built-in `multiple-cursors` functions to external package `vsc-multiple-cursors` (d12f928aeb4f7765772576d6d0cf6329ffb081b6) -* Configure `multiple-cursors` for mouse click (454933b94926bab40c09810d49533c3eb3290239) -* Add new package `gcmh` (39e381d56f12ba9866c71d1e7b2f31775ee25ed2) -* Disable `page-break-lines` in `emacs-lisp-compilation-mode` (b337b4505ad14c8b756e810e9b1f7b65a598f786) -* Add new package `sideline-flycheck` (18cdd626331297f77255a8faa922f5dd199bc416) -* Add new package `docker` (bb0fbb611cce10a1ea4438b9bb0ab95110dd49cc) -* Configure compilation previous/next error keys (919a84801aef3631fa7dc496a8b997acaeeca0d2) -* Add new package `sideline-lsp` (b7b7c4ed9359412709f4fc0197005043b6d19fca) +* Drop support for Emacs 27.x ([`7fa6129`](../../commit/7fa61292bd1553cee46884a98f4959933b55bb12)) +* Prevent whitespace cleanup for `text-mode` ([`56dca1a`](../../commit/56dca1ac48ef4e613c777b82bac1247513e6c024)) +* Remove development package `ert-runner` ([`84ffcde`](../../commit/84ffcde033cab6073b3b2624b1c6f40260322a64)) +* Remove development package `el-mock` ([`8fcc72f`](../../commit/8fcc72f1ec5fb723b3262070ad87095d42fea852)) +* Fix bug for newly added packages from archives ([`6a92be2`](../../commit/6a92be2c8800b478bfb120a4489a7b1930235db0)) +* Add new package `flycheck-eask`. ([`cd94bba`](../../commit/cd94bbabe3bb5e3878384afea030cb203e0e5050)) +* Move minibuffer flx to external package [vertico-flx](https://github.com/jcs-elpa/vertico-flx) ([`151d8f2`](../../commit/151d8f20e2d5539add95deb892acfbb0f1638df7)) +* Show `helpful` message while describing things at point ([`a06c8d1`](../../commit/a06c8d1edbb2380cf449a554dda0d10c3433ae3a)) +* Add new package `suggest` ([`913f278`](../../commit/913f278afa145d46924cde5322506cd13dd43e9f)) +* Inhibit redisplay on startup to speed up the startup time ([`9922190`](../../commit/9922190f2e53ccc9a400943140a3c5e6462bde5f)) +* Add new package `company-shell` ([`6b5d79a`](../../commit/6b5d79a65d889222e42343325cf59790c78d97af)) +* Add new package `company-glsl` ([`122b4a1`](../../commit/122b4a1b541acf7a810253d986d423e216a92ceb)) +* Add new package `arduino-mode` ([`d4ffb8c`](../../commit/d4ffb8c6b5ca99619c601c26c85aa6063d6c1806)) +* Add new package `on` and configured to improve startup speed ([`8c9f797`](../../commit/8c9f797492a74cdb30ba9ff6f7ee483c0683def5)) +* Move init delay to `on-init-ui-hook` ([`705afe9`](../../commit/705afe9744fc3efb2ee005beb8db85e0a08b6fbe)) +* Add new package `qml-mode` ([`e383783`](../../commit/e383783356143f9cb25ad315be6227823a7b44d7)) +* Add new package `coffee-mode` ([`d7a9a99`](../../commit/d7a9a999e9dbd8c47fc3e2ac559517b776c0ac31)) +* Add new package `crystal-mode` ([`72c3dba`](../../commit/72c3dba1d496fd85e96ea8f80da1caa3a56b2e06)) +* Add new package `d-mode` ([`8bbb6fd`](../../commit/8bbb6fdce8351cccf22b59e08efa6a5969d8586e)) +* Add new package `feature-mode` ([`76f0696`](../../commit/76f0696c15f60c44aced2a6c58a3039d7d214fcf)) +* Add new package `git-assembler-mode`, `graphql-mode`, and `hexo` ([`444fd96`](../../commit/444fd96c9a5ebbdab04f74ae18f3a31978b3acfa)) +* Add new package `recentf-excl` ([`1fde626`](../../commit/1fde6265b338d17efa5f47b908ad4b30c159d9da)) +* Add new package `javap-mode` ([`6e6f53f`](../../commit/6e6f53f1f2cc05cef2f0065ad214f6d58d65eaa3)) +* Fix conflict between `company-box-doc` and `dashboard` refresh ([`d49a031`](../../commit/d49a0310c3a28e1edabb6ba11436b046c701e63f)) +* Fix popup tip showing previous/last description ([`45451bb`](../../commit/45451bb3460f0ffabb6af35c989bb3e6290e594c)) +* Fix bury buffer proceed before `diminish-buffer-mode` will jump to unwanted buffer ([`184ba39`](../../commit/184ba39015b1b26342c13f8b107b69c389f0aeed)) +* Add new packages `phpt-mode` and `robots-txt-mode` ([`eb4714b`](../../commit/eb4714b8280490fbf9c6f570479e6f3ba1a3a690)) +* Remove package `blamer` and add new package `vc-msg` ([`067cfb9`](../../commit/067cfb98a52263754b7d4c4222d2bd9c8c4d0601)) +* Improve `jcs-advice-add` macro ([`3ec7e94`](../../commit/3ec7e943ab0d035610ce6391e7f9d8ed8ff58cb1)) +* Improve `jcs-add-hook` macro ([`48abd84`](../../commit/48abd848fba1b2cefa6c7086ca73ac679c3f83ec)) +* Add new package `protobuf-mode` ([`6e4f275`](../../commit/6e4f27587b5a54a0a7bddc5e0a8cba2e008f1463)) +* Remove tab and spaces converting util functions ([`5c92fa5`](../../commit/5c92fa525f486ef46e2e309ee5d47f48f5fef66a)) +* Move built-in `multiple-cursors` functions to external package `vsc-multiple-cursors` ([`d12f928`](../../commit/d12f928aeb4f7765772576d6d0cf6329ffb081b6)) +* Configure `multiple-cursors` for mouse click ([`454933b`](../../commit/454933b94926bab40c09810d49533c3eb3290239)) +* Add new package `gcmh` ([`39e381d`](../../commit/39e381d56f12ba9866c71d1e7b2f31775ee25ed2)) +* Disable `page-break-lines` in `emacs-lisp-compilation-mode` ([`b337b45`](../../commit/b337b4505ad14c8b756e810e9b1f7b65a598f786)) +* Add new package `sideline-flycheck` ([`18cdd62`](../../commit/18cdd626331297f77255a8faa922f5dd199bc416)) +* Add new package `docker` ([`bb0fbb6`](../../commit/bb0fbb611cce10a1ea4438b9bb0ab95110dd49cc)) +* Configure compilation previous/next error keys ([`919a848`](../../commit/919a84801aef3631fa7dc496a8b997acaeeca0d2)) +* Add new package `sideline-lsp` ([`b7b7c4e`](../../commit/b7b7c4ed9359412709f4fc0197005043b6d19fca)) ## 8.1.0 > Released Apr 7, 2022 -* Fix move file/directory with full path (f3f0c61deb7aa3cc1b437a104c767e10050a73ef) +* Fix move file/directory with full path ([`f3f0c61`](../../commit/f3f0c61deb7aa3cc1b437a104c767e10050a73ef)) * Add new package `nim-mode`. * Add new package `shift-number`. -* Moved custom face config for `markdown-mode` and `org-mode` to external packages (d92b57181b358574245c0ec6c15985b49e4b83ec) +* Moved custom face config for `markdown-mode` and `org-mode` to external packages ([`d92b571`](../../commit/d92b57181b358574245c0ec6c15985b49e4b83ec)) * Add basic support for Julia programming language. * Add new package `dotenv-mode`. * Add new package `docker-compose-mode`. @@ -295,21 +294,21 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * Add new package `shell-pop`. * Replace config built-in pop shell functionality with `shell-pop`. * Disable save file message by default. -* Improved reopen buffer command's message. (263244468533c95fcf340b4603b8bb0e3ed00f1e) +* Improved reopen buffer command's message. ([`2632444`](../../commit/263244468533c95fcf340b4603b8bb0e3ed00f1e)) * Limit lsp message to display in `*Messages*` buffer. -* Add file name when do `ffap` on `minibuffer` and `vertico`. (1df9e1b4467423dc278ac4963cfd9d42e8d53d28) +* Add file name when do `ffap` on `minibuffer` and `vertico`. ([`1df9e1b`](../../commit/1df9e1b4467423dc278ac4963cfd9d42e8d53d28)) * Add support for HLSL language. * Add new package `message-clean-mode`. * Add new package `buffer-menu-project`. * Add new package `buffer-menu-filter`. -* Default select first candidate (highest score) after sorting while using minibuffer completion. (eb6486a3a9031421127fda03f89ede01d38ba409) +* Default select first candidate (highest score) after sorting while using minibuffer completion. ([`eb6486a`](../../commit/eb6486a3a9031421127fda03f89ede01d38ba409)) * Add new package `electric-indent-sexp`. * Add new package `electric-cursor`. -* Remove implementation of `depends-mode` and `cross-mode`. (8a1500e4738453f757cb9d28a2c09136dedf6bcc) -* Remove file display function `jcs-html-preview` and `jcs-display-file` (bb47bcee49c2005c10c2b53bb62b923c74fb2741) -* Moved revert buffer module to external package, [vs-revbuf](https://github.com/emacs-vs/vs-revbuf). (73f88e137f7bf4155ff2a37d8b1c43248cf628c5) -* Add new package `whole-line-or-region`. (6a6678143c8d03ccbb6fa479d8f711fceccc3e42) -* Moved Visual Studio editing experience to external package, [vs-edit-mode](https://github.com/emacs-vs/vs-edit-mode) (2db994dbb567d40ccbcd987b09c5a5806db89ed5) +* Remove implementation of `depends-mode` and `cross-mode`. ([`8a1500e`](../../commit/8a1500e4738453f757cb9d28a2c09136dedf6bcc)) +* Remove file display function `jcs-html-preview` and `jcs-display-file` ([`bb47bce`](../../commit/bb47bcee49c2005c10c2b53bb62b923c74fb2741)) +* Moved revert buffer module to external package, [vs-revbuf](https://github.com/emacs-vs/vs-revbuf). ([`73f88e1`](../../commit/73f88e137f7bf4155ff2a37d8b1c43248cf628c5)) +* Add new package `whole-line-or-region`. ([`6a66781`](../../commit/6a6678143c8d03ccbb6fa479d8f711fceccc3e42)) +* Moved Visual Studio editing experience to external package, [vs-edit-mode](https://github.com/emacs-vs/vs-edit-mode) ([`2db994d`](../../commit/2db994dbb567d40ccbcd987b09c5a5806db89ed5)) ## 8.0.1 > Released Jan 29, 2022 @@ -331,9 +330,9 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * Installed new package `flx-style` for `completion-styles`. * Installed new package `blamer`. * Installed new package `mwim`. -* Change default `completion-styles` to `partial-completion`, so it goes easy on `company-mode` (132d4bc2de4f89cc37ebed2d8c9ff7617fcb26f4) -* Fix `undo-tree` jumping dedicated window after kill (bbf04f799eeae8ceb7a7b8a891b459cebca0f2ec) -* Use `flx` for minibuffer `completion-styles` (e8041b1b5e9d2dd440894530ab908cff7d7b0354) +* Change default `completion-styles` to `partial-completion`, so it goes easy on `company-mode` ([`132d4bc`](../../commit/132d4bc2de4f89cc37ebed2d8c9ff7617fcb26f4)) +* Fix `undo-tree` jumping dedicated window after kill ([`bbf04f7`](../../commit/bbf04f799eeae8ceb7a7b8a891b459cebca0f2ec)) +* Use `flx` for minibuffer `completion-styles` ([`e8041b1`](../../commit/e8041b1b5e9d2dd440894530ab908cff7d7b0354)) ## 8.0.0 > Released Jan 6, 2022 From fe41de18eec9101184b289faeffbc8b88d4802f9 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Fri, 11 Jul 2025 09:44:30 -0700 Subject: [PATCH 316/334] Update CHANGELOG.md --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 58f2601f..5b3e8908 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -348,7 +348,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * Remove package `flycheck-popup-tip`. * Remove package `flycheck-pos-tip`. * Disable logging when printing out error messages from `flycheck`. -* Move entire directory to `.emacs.d`. ([`#32`](../../pull/32)) +* Move entire directory to `.emacs.d`. ([#32](../../pull/32)) ## 7.1.0 > Released Dec 27, 2021 @@ -573,7 +573,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how ## 6.4.0 > Released Dec 22, 2020 -* Fixed recording recent files while installing issue. (#23) +* Fixed recording recent files while installing issue. ([#23](../../pull/23)) * Added generic buffer list filter utility function. * Added Emacs Lisp project load path for future Emacs Lisp Project Development. * Enabled always defer from `use-package` as default behaviour. @@ -1489,7 +1489,7 @@ using `jit-lock-register` function. * Fixed `50%` of config compile issues. * Enable compile version of this config. * Fixed `helm` theme inconsistent to the `vs-light` theme. -* Fixed `right-click-context` package's bug #2 and #7 issues. +* Fixed `right-click-context` package's. ([#2](../../pull/2) and [#7](../../pull/7)) * Removed package `pdf-tools`. * Implemented automatically enable `read-only-mode` when view source or library files. * Removed package `floobits`. From 9a4b6e399e2a7f856f4dcb5cacfcc56097e4d32b Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Wed, 16 Jul 2025 23:30:40 +0800 Subject: [PATCH 317/334] feat: Add elvish mode --- lisp/jcs-package.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index 8de22cf0..fcaa0b3b 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -176,6 +176,7 @@ elisp-demos elixir-mode elm-mode + elvish-mode emoji-github emp envrc From 0acf5b6cd347b88dd82c3e1792811088847fb595 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Wed, 16 Jul 2025 23:30:56 +0800 Subject: [PATCH 318/334] feat: feat: Add load module for elvish --- lisp/jcs-module.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/jcs-module.el b/lisp/jcs-module.el index 96546b4f..1e29c0e7 100644 --- a/lisp/jcs-module.el +++ b/lisp/jcs-module.el @@ -169,7 +169,8 @@ (ssass-mode . "lang/sass") (scala-mode . "lang/scala") (scheme-mode . "lang/scheme") - (( sh-script fish-mode nushell-mode envrc) + (( sh-script elvish-mode fish-mode nushell-mode + envrc) . "lang/sh") (sql . "lang/sql") (swift-mode . "lang/swift") From 7d3a90dee2b16498d9ca943881aa0958b7b237f1 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Wed, 16 Jul 2025 23:31:15 +0800 Subject: [PATCH 319/334] fix: config for other shell modes --- modules/lang/sh/config.el | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/lang/sh/config.el b/modules/lang/sh/config.el index a826cd72..7632ae5d 100644 --- a/modules/lang/sh/config.el +++ b/modules/lang/sh/config.el @@ -51,14 +51,16 @@ ;; (@* "Hook" ) ;; -(jcs-add-hook '( sh-mode-hook fish-mode-hook nushell-mode-hook - envrc-mode-hook) +(jcs-add-hook '( sh-mode-hook) (company-fuzzy-backend-add-before 'company-shell 'company-dabbrev) - (add-hook 'before-save-hook #'jcs-sh--before-save nil t) + (add-hook 'before-save-hook #'jcs-sh--before-save nil t)) +(jcs-add-hook '( sh-mode-hook elvish-mode-hook fish-mode-hook nushell-mode-hook + envrc-mode-hook) ;; File Header (jcs-insert-header-if-valid '("[.]sh" + "[.]elv" "[.]fish" "[.]nu" "[.]envrc") From 926ab74755cbfd1373ba1dd029ffb7730d678094 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Wed, 16 Jul 2025 10:36:39 -0700 Subject: [PATCH 320/334] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b3e8908..14ba1d40 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * feat(lang): Add support for `Magik` language ([`5ab68e5`](../../commit/5ab68e5a9deb1671a55c36ca81ea866217f2cfd2)) * feat(lang): Add `Odin` support ([`a69d5c1`](../../commit/a69d5c11fb3707c92c47bbe29470e7a3eae8bce3)) * feat(core): Add `back-button` ([`4da8f3d`](../../commit/4da8f3dbcb3ade1598643e2de1ffae5c42b00a4f)) +* feat(lang): Add elvish mode ([`9a4b6e3`](../../commit/9a4b6e399e2a7f856f4dcb5cacfcc56097e4d32b)) ## 9.1.0 > Released Jun 19, 2024 From d07a75dec810a76341abcbddbe30125c10436757 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Wed, 16 Jul 2025 10:38:55 -0700 Subject: [PATCH 321/334] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 14ba1d40..4e79d3d9 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,7 +34,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * feat(lang): Add support for `Magik` language ([`5ab68e5`](../../commit/5ab68e5a9deb1671a55c36ca81ea866217f2cfd2)) * feat(lang): Add `Odin` support ([`a69d5c1`](../../commit/a69d5c11fb3707c92c47bbe29470e7a3eae8bce3)) * feat(core): Add `back-button` ([`4da8f3d`](../../commit/4da8f3dbcb3ade1598643e2de1ffae5c42b00a4f)) -* feat(lang): Add elvish mode ([`9a4b6e3`](../../commit/9a4b6e399e2a7f856f4dcb5cacfcc56097e4d32b)) +* feat(lang): Add `elvish` mode ([`9a4b6e3`](../../commit/9a4b6e399e2a7f856f4dcb5cacfcc56097e4d32b)) ## 9.1.0 > Released Jun 19, 2024 From 2346542012b66789f0c6fcad65ce9332ff90d7af Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Thu, 17 Jul 2025 03:44:04 +0800 Subject: [PATCH 322/334] Add direnv config --- modules/tools/direnv/config.el | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 modules/tools/direnv/config.el diff --git a/modules/tools/direnv/config.el b/modules/tools/direnv/config.el new file mode 100644 index 00000000..6c2fa928 --- /dev/null +++ b/modules/tools/direnv/config.el @@ -0,0 +1,13 @@ +;;; tools/direnv/config.el -*- lexical-binding: t; -*- + +(require 'sh-script) +(require 'envrc) + +;; +;; (@* "Hook" ) +;; + +(jcs-add-hook '( envrc-file-mode-hook) + ;; File Header + (jcs-insert-header-if-valid '("[.]envrc") + 'jcs-insert-sh-template)) From be5e7ab54f4abd38d880478d14462b6a22140cc4 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Thu, 17 Jul 2025 03:44:21 +0800 Subject: [PATCH 323/334] split envrc file --- modules/lang/sh/config.el | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/modules/lang/sh/config.el b/modules/lang/sh/config.el index 7632ae5d..1ea3f9ea 100644 --- a/modules/lang/sh/config.el +++ b/modules/lang/sh/config.el @@ -2,7 +2,6 @@ (require 'sh-script) (require 'fish-mode) -(require 'envrc) ;; ;; (@* "Line Endings" ) @@ -56,14 +55,13 @@ (add-hook 'before-save-hook #'jcs-sh--before-save nil t)) -(jcs-add-hook '( sh-mode-hook elvish-mode-hook fish-mode-hook nushell-mode-hook - envrc-mode-hook) +(jcs-add-hook '( sh-mode-hook + elvish-mode-hook fish-mode-hook nushell-mode-hook) ;; File Header (jcs-insert-header-if-valid '("[.]sh" "[.]elv" "[.]fish" - "[.]nu" - "[.]envrc") + "[.]nu") 'jcs-insert-sh-template)) ;; From 963d1980f19d0534b65b970b4036e75e7898111d Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Thu, 17 Jul 2025 03:45:31 +0800 Subject: [PATCH 324/334] feat: active envrc mode --- lisp/jcs-hook.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-hook.el b/lisp/jcs-hook.el index df318b3d..b237bb4f 100755 --- a/lisp/jcs-hook.el +++ b/lisp/jcs-hook.el @@ -99,6 +99,7 @@ (jcs-add-hook 'on-first-file-hook (auto-read-only-mode 1) + (envrc-global-mode 1) (npm-global-mode 1) (global-tree-sitter-mode 1) (global-so-long-mode 1) From 0b9aa34d0b5091739923700880bca2421d99a9bb Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Thu, 17 Jul 2025 03:46:36 +0800 Subject: [PATCH 325/334] chore: load direnv module --- lisp/jcs-module.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/jcs-module.el b/lisp/jcs-module.el index 1e29c0e7..19cc6a20 100644 --- a/lisp/jcs-module.el +++ b/lisp/jcs-module.el @@ -57,6 +57,7 @@ (autoconf-mode . "tools/autoconf") (csv-mode . "tools/csv") ((edebug dap-mode) . "tools/debugger") + (envrc . "tools/direnv") (dockerfile-mode . "tools/dockerfile") (editorconfig . "tools/editorconfig") ((easky execrun quickrun) . "tools/eval") @@ -169,8 +170,7 @@ (ssass-mode . "lang/sass") (scala-mode . "lang/scala") (scheme-mode . "lang/scheme") - (( sh-script elvish-mode fish-mode nushell-mode - envrc) + (( sh-script elvish-mode fish-mode nushell-mode) . "lang/sh") (sql . "lang/sql") (swift-mode . "lang/swift") From ad14ee2a88265c8e8b077944bb9a832bff6186a6 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Wed, 16 Jul 2025 12:49:25 -0700 Subject: [PATCH 326/334] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e79d3d9..3464ea5c 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * feat(lang): Add `Odin` support ([`a69d5c1`](../../commit/a69d5c11fb3707c92c47bbe29470e7a3eae8bce3)) * feat(core): Add `back-button` ([`4da8f3d`](../../commit/4da8f3dbcb3ade1598643e2de1ffae5c42b00a4f)) * feat(lang): Add `elvish` mode ([`9a4b6e3`](../../commit/9a4b6e399e2a7f856f4dcb5cacfcc56097e4d32b)) +* feat(tools): Add `dirnenv` config ([`2346542`](../../commit/2346542012b66789f0c6fcad65ce9332ff90d7af)) ## 9.1.0 > Released Jun 19, 2024 From 0b7e91a56c34c5c3b4c74aa04dae029154899cb2 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Thu, 17 Jul 2025 22:32:47 +0800 Subject: [PATCH 327/334] feat: Use kill-current-buffer command instead --- CHANGELOG.md | 6 +++--- lisp/jcs-function.el | 4 ++-- lisp/jcs-key.el | 4 ++-- lisp/lib/jcs-edit.el | 10 +++++----- modules/emacs/hexl/config.el | 4 ++-- modules/emacs/vc/config.el | 2 +- modules/lang/swift/config.el | 2 +- modules/misc/browse-kill-ring/config.el | 2 +- modules/tools/eval/config.el | 2 +- 9 files changed, 18 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3464ea5c..8729c2d5 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -130,7 +130,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * Add clear filter key for `package-menu` mode ([`bf36721`](../../commit/bf36721805a48b6319bd5eb1b9064129af293560)) * Load `eask-api` when in valid Eask related project ([`5644b51`](../../commit/5644b5128cb1f132b9b552cc745377be8528b435)) * Add new package `editorconfig-generate` ([`afd3fa0`](../../commit/afd3fa07135fd9154b551fffb20822316cf4e3d7)) -* Bind key `C-M-k` to `kill-this-buffer` ([`758c464`](../../commit/758c464dfe76bad0053ce82f4064f382a1ae4ac3)) +* Bind key `C-M-k` to `kill-current-buffer` ([`758c464`](../../commit/758c464dfe76bad0053ce82f4064f382a1ae4ac3)) * Remove `buffer-menu` feature on display project name ([`74feaa9`](../../commit/74feaa938d4be1667bab1c1f68308f8c6a250208)) * Use macro to define `file-header` insertion functions ([`e5e2006`](../../commit/e5e200684f25325c70906a53a84f526328bc6fbf)) * Re-define file header source with utility macro ([`ca4d8e4`](../../commit/ca4d8e49ba80f78bd34ff610a442c8a8bf7bc097)) @@ -1769,7 +1769,7 @@ on the second window in the current frame. Notice this is only a temporary fixed * Ensure python tab width is 4 instead of default of 8. * Remove load todo, load log and insert-timeofday command functions. * Use defense programming in current char string util function. -* Added is-killed returned value to jcs-maybe-kill-this-buffer util function. +* Added is-killed returned value to jcs-maybe-kill-current-buffer util function. * Fixed jcs' count window util function. * Fixed re-builder's maybe kill this buffer function using is-killed variable. * Implements python return function => jcs-python-func.el. @@ -1812,7 +1812,7 @@ on the second window in the current frame. Notice this is only a temporary fixed value. * Added indent-info package and it's config. * Fixed insert header only when buffer-file-name variable available. -* Fixed bug by adding percise check => jcs-maybe-kill-this-buffer function +* Fixed bug by adding percise check => jcs-maybe-kill-current-buffer function in jcs-edit.el file. * Implements check how many times the same buffer shown in different windows => jcs-buffer-showns function in jcs-window.el file. diff --git a/lisp/jcs-function.el b/lisp/jcs-function.el index c64d8080..f75549f5 100755 --- a/lisp/jcs-function.el +++ b/lisp/jcs-function.el @@ -38,13 +38,13 @@ (interactive) (jcs-switch-to-buffer-other-window (messages-buffer))) -(defun jcs-messages-maybe-kill-this-buffer () +(defun jcs-messages-maybe-kill-current-buffer () "Erase the *Messages* buffer." (interactive) ;; Message one message to retrieve `*Message*' buffer prepare for next use. ;; Or else it some operation might prompt some issue that needed `*Message*' ;; buffer to be exists. - (when (jcs-maybe-kill-this-buffer) + (when (jcs-maybe-kill-current-buffer) (message ".") (jcs-messages-erase-buffer))) (defun jcs-messages-erase-buffer () diff --git a/lisp/jcs-key.el b/lisp/jcs-key.el index 5d23d5d5..d3a2dc70 100755 --- a/lisp/jcs-key.el +++ b/lisp/jcs-key.el @@ -118,7 +118,7 @@ ((kbd "C-b") . treemacs) ; `VS Code' ;;; File editing - ((kbd "M-k") . jcs-maybe-kill-this-buffer) + ((kbd "M-k") . jcs-maybe-kill-current-buffer) ((kbd "M-K") . jcs-reopen-this-buffer) ((kbd "C-M-k") . kill-current-buffer) @@ -402,7 +402,7 @@ ;; --- (jcs-key messages-buffer-mode-map - `(("\ek" . jcs-messages-maybe-kill-this-buffer) + `(("\ek" . jcs-messages-maybe-kill-current-buffer) ("\eK" . jcs-messages-erase-buffer))) (jcs-key minibuffer-local-map diff --git a/lisp/lib/jcs-edit.el b/lisp/lib/jcs-edit.el index 11a3215d..0130f1e9 100644 --- a/lisp/lib/jcs-edit.el +++ b/lisp/lib/jcs-edit.el @@ -339,16 +339,16 @@ ;; For instance, any `*helm-' buffers. (jcs-bury-diminished-buffer)) -(defun jcs-kill-this-buffer () +(defun jcs-kill-current-buffer () "Kill this buffer." (interactive) (jcs-lsp-maybe-shutdown) - (kill-this-buffer) + (kill-current-buffer) (jcs-project--track-open-projects) ;; If still in the buffer menu, try switch to the previous buffer. (when (jcs-buffer-menu-p) (switch-to-prev-buffer))) -(defun jcs-maybe-kill-this-buffer (&optional ecp-same) +(defun jcs-maybe-kill-current-buffer (&optional ecp-same) "Kill buffer if the current buffer is the only shown in one window. Otherwise just switch to the previous buffer to keep the buffer. @@ -369,10 +369,10 @@ other window." (jcs-bury-buffer) (when (and must-kill-p (not multiple-p)) (setq is-killed t) - (with-current-buffer cur-buf (kill-this-buffer)))) + (with-current-buffer cur-buf (kill-current-buffer)))) ;; (2) Else, we kill it! (t - (jcs-kill-this-buffer) + (jcs-kill-current-buffer) (setq is-killed t) ;; NOTE: After kill the buffer, if the buffer appear in multiple windows diff --git a/modules/emacs/hexl/config.el b/modules/emacs/hexl/config.el index 9be0377e..4ed3470e 100644 --- a/modules/emacs/hexl/config.el +++ b/modules/emacs/hexl/config.el @@ -2,9 +2,9 @@ (use-package hexl-mode :bind ( :map hexl-mode-map - ("M-k" . jcs-maybe-kill-this-buffer) + ("M-k" . jcs-maybe-kill-current-buffer) ("M-K" . jcs-reopen-this-buffer) - ("C-M-k" . kill-this-buffer) + ("C-M-k" . kill-current-buffer) ("C-k C-p" . package-list-packages) ("C-S-x" . package-list-packages))) diff --git a/modules/emacs/vc/config.el b/modules/emacs/vc/config.el index 005c71aa..92191f60 100644 --- a/modules/emacs/vc/config.el +++ b/modules/emacs/vc/config.el @@ -20,7 +20,7 @@ (jcs-add-hook 'diff-mode-hook (jcs-key-local - `(((kbd "M-k") . jcs-maybe-kill-this-buffer) + `(((kbd "M-k") . jcs-maybe-kill-current-buffer) ((kbd "M-K") . jcs-reopen-this-buffer)))) (jcs-add-hook '(gitattributes-mode-hook gitconfig-mode-hook gitignore-mode-hook) diff --git a/modules/lang/swift/config.el b/modules/lang/swift/config.el index 794a958f..bff973d6 100644 --- a/modules/lang/swift/config.el +++ b/modules/lang/swift/config.el @@ -19,7 +19,7 @@ 'jcs-insert-swift-template) (jcs-key-local - `(((kbd "M-k") . jcs-maybe-kill-this-buffer)))) + `(((kbd "M-k") . jcs-maybe-kill-current-buffer)))) ;; ;; (@* "Extensions" ) diff --git a/modules/misc/browse-kill-ring/config.el b/modules/misc/browse-kill-ring/config.el index e7f87836..6e24688a 100644 --- a/modules/misc/browse-kill-ring/config.el +++ b/modules/misc/browse-kill-ring/config.el @@ -2,4 +2,4 @@ (use-package browse-kill-ring :bind ( :map browse-kill-ring-mode-map - ("" . kill-this-buffer))) + ("" . kill-current-buffer))) diff --git a/modules/tools/eval/config.el b/modules/tools/eval/config.el index f0870a28..43a8532f 100644 --- a/modules/tools/eval/config.el +++ b/modules/tools/eval/config.el @@ -8,7 +8,7 @@ (use-package execrun :init - (setq execrun-kill-buffer-function #'jcs-maybe-kill-this-buffer) + (setq execrun-kill-buffer-function #'jcs-maybe-kill-current-buffer) (message-clean-mode-add-echo-commands '( execrun-compile))) From 295b6a7613478ad61a22602e97183eb607f6d3f9 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Thu, 17 Jul 2025 07:33:42 -0700 Subject: [PATCH 328/334] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8729c2d5..e43989ea 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * feat(core): Add `back-button` ([`4da8f3d`](../../commit/4da8f3dbcb3ade1598643e2de1ffae5c42b00a4f)) * feat(lang): Add `elvish` mode ([`9a4b6e3`](../../commit/9a4b6e399e2a7f856f4dcb5cacfcc56097e4d32b)) * feat(tools): Add `dirnenv` config ([`2346542`](../../commit/2346542012b66789f0c6fcad65ce9332ff90d7af)) +* feat: Use `kill-current-buffer` command instead ([`0b7e91a`](../../commit/0b7e91a56c34c5c3b4c74aa04dae029154899cb2)) ## 9.1.0 > Released Jun 19, 2024 From fe93807474f99528608e30fd32d58c20b8a2a3c6 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sat, 19 Jul 2025 01:23:33 +0800 Subject: [PATCH 329/334] feat(util): Add fill string --- lisp/lib/jcs-util.el | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lisp/lib/jcs-util.el b/lisp/lib/jcs-util.el index b5f3e7e6..4a4df669 100644 --- a/lisp/lib/jcs-util.el +++ b/lisp/lib/jcs-util.el @@ -644,5 +644,13 @@ or `suffix'." (jcs-current-point-face '(font-lock-string-face tree-sitter-hl-face:string))))) +(defun jcs-fill-string (str &optional column) + "Fill STR with COLUMN size." + (with-temp-buffer + (let ((fill-column (or column (frame-width)))) + (insert str) + (fill-region (point-min) (point-max)) + (buffer-string)))) + (provide 'jcs-util) ;;; jcs-util.el ends here From 9db9cb01ded4a01bb483a78b51a6b35f4ee21e2e Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sat, 19 Jul 2025 01:23:39 +0800 Subject: [PATCH 330/334] feat: config eldoc for elisp --- modules/lang/emacs-lisp/config.el | 60 +++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/modules/lang/emacs-lisp/config.el b/modules/lang/emacs-lisp/config.el index 536e840b..dd264d37 100644 --- a/modules/lang/emacs-lisp/config.el +++ b/modules/lang/emacs-lisp/config.el @@ -13,6 +13,61 @@ (file-header-defins jcs-insert-lisp-template "lisp" "default.txt" "Lisp file header format.") +;; +;; (@* "ElDoc" ) +;; + +(defun jcs--eldoc-remove-signature (str) + "Remove function signature from STR." + (with-temp-buffer + (insert str) + (goto-char (point-max)) + (when (jcs-current-char-equal-p ")") + (backward-sexp) + (delete-region (point) (point-max))) + (string-trim (buffer-string)))) + +(defun jcs--elisp-eldoc-var-docstring-with-value (callback &rest _) + "Edited from the function `elisp-eldoc-var-docstring-with-value'." + (when-let ((cs (elisp--current-symbol))) + (when (and (boundp cs) + ;; nil and t are boundp! + (not (null cs)) + (not (eq cs t))) + (funcall callback + (format "%.100S\n%s" + (symbol-value cs) + (let* ((doc (documentation-property + cs 'variable-documentation t)) + (more (- (length doc) 1000))) + (concat (propertize + (jcs-fill-string + (if (string= doc "nil") + "Undocumented." + doc)) + 'face 'font-lock-doc-face) + (when (> more 0) + (format "[%sc more]" more))))) + :thing cs + :face 'font-lock-variable-name-face)))) + +(defun jcs--elisp-eldoc-funcall (callback &rest _ignored) + "Edited from the function `elisp-eldoc-funcall'." + (let* ((sym-info (elisp--fnsym-in-current-sexp)) + (fn-sym (car sym-info)) + (doc (or (ignore-errors (documentation fn-sym t)) + "")) + (doc (jcs--eldoc-remove-signature doc)) + (doc (jcs-fill-string doc))) + (when fn-sym + (funcall callback (format "%s\n\n%s" + (apply #'elisp-get-fnsym-args-string sym-info) + (propertize doc 'face 'font-lock-doc-face)) + :thing fn-sym + :face (if (functionp fn-sym) + 'font-lock-function-name-face + 'font-lock-keyword-face))))) + ;; ;; (@* "Hooks" ) ;; @@ -25,6 +80,11 @@ (company-fuzzy-backend-add-before 'company-elisp-keywords 'company-dabbrev) + (add-hook 'eldoc-documentation-functions + #'jcs--elisp-eldoc-funcall nil t) + (add-hook 'eldoc-documentation-functions + #'jcs--elisp-eldoc-var-docstring-with-value nil t) + (eask-api-setup)) (jcs-add-hook 'emacs-lisp-compilation-mode-hook From 2a21c3297c8b4503c1db5dc95c68742f5b2882a1 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sat, 19 Jul 2025 01:36:19 +0800 Subject: [PATCH 331/334] fix: ensure function signature is presentable --- modules/lang/emacs-lisp/config.el | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/lang/emacs-lisp/config.el b/modules/lang/emacs-lisp/config.el index dd264d37..afa3b5a7 100644 --- a/modules/lang/emacs-lisp/config.el +++ b/modules/lang/emacs-lisp/config.el @@ -60,9 +60,10 @@ (doc (jcs--eldoc-remove-signature doc)) (doc (jcs-fill-string doc))) (when fn-sym - (funcall callback (format "%s\n\n%s" - (apply #'elisp-get-fnsym-args-string sym-info) - (propertize doc 'face 'font-lock-doc-face)) + (funcall callback + (if-let* ((sig (apply #'elisp-get-fnsym-args-string sym-info))) + (format "%s\n\n%s" sig (propertize doc 'face 'font-lock-doc-face)) + sig) :thing fn-sym :face (if (functionp fn-sym) 'font-lock-function-name-face From 271fa00f99fa6f6c972267a71ae3d74869c10920 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sat, 19 Jul 2025 01:38:11 +0800 Subject: [PATCH 332/334] chore: changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e43989ea..20a5e65a 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * feat(lang): Add `elvish` mode ([`9a4b6e3`](../../commit/9a4b6e399e2a7f856f4dcb5cacfcc56097e4d32b)) * feat(tools): Add `dirnenv` config ([`2346542`](../../commit/2346542012b66789f0c6fcad65ce9332ff90d7af)) * feat: Use `kill-current-buffer` command instead ([`0b7e91a`](../../commit/0b7e91a56c34c5c3b4c74aa04dae029154899cb2)) +* feat(lang): Config more `eldoc` for elisp ([`9db9cb0`](../../commit/9db9cb01ded4a01bb483a78b51a6b35f4ee21e2e)) ## 9.1.0 > Released Jun 19, 2024 From c95191db7faf4c645c94cb0a50a233d5df33dc8e Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sat, 19 Jul 2025 02:14:13 +0800 Subject: [PATCH 333/334] feat: Try eldoc-box --- lisp/jcs-package.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index fcaa0b3b..d8eb8a1e 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -164,6 +164,7 @@ ecukes editorconfig-generate el-mock + eldoc-box eldoc-cmake eldoc-diffstat eldoc-eask From 43afbc79417c0da620f8216fcdd218d8ea609972 Mon Sep 17 00:00:00 2001 From: Jen-Chieh Shen Date: Sat, 19 Jul 2025 02:14:29 +0800 Subject: [PATCH 334/334] chore: Remove eldoc-box --- lisp/jcs-package.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/jcs-package.el b/lisp/jcs-package.el index d8eb8a1e..fcaa0b3b 100755 --- a/lisp/jcs-package.el +++ b/lisp/jcs-package.el @@ -164,7 +164,6 @@ ecukes editorconfig-generate el-mock - eldoc-box eldoc-cmake eldoc-diffstat eldoc-eask