summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJSDurand <mmemmew@gmail.com>2021-02-08 23:36:26 +0800
committerJSDurand <mmemmew@gmail.com>2021-02-08 23:36:26 +0800
commit393604e5bf4ce15df7342fdc094900fd1be2b39f (patch)
treed7b1e77cfe27b3ffa347fa2e9db632d97dfe7dc1
parentc8d4224e42a710b262e8ba67d720f6eff4e89fcb (diff)
Constantly growing
A lot of improvements.
-rw-r--r--abbrev_defs1
-rw-r--r--basic.el17
-rw-r--r--bongo.el7
-rw-r--r--common.el10
-rw-r--r--completion-conf.el48
-rw-r--r--dashboard.el59
-rw-r--r--desktop26
-rw-r--r--dired-conf.el6
-rw-r--r--eshell-conf.el271
-rw-r--r--init.el92
-rw-r--r--modeline.el28
-rw-r--r--org-conf.el28
-rw-r--r--pdf.el63
-rw-r--r--rime-conf.el3
-rw-r--r--tab-conf.el4
-rw-r--r--text-conf.el28
-rw-r--r--view-conf.el17
17 files changed, 597 insertions, 111 deletions
diff --git a/abbrev_defs b/abbrev_defs
new file mode 100644
index 0000000..64bee34
--- /dev/null
+++ b/abbrev_defs
@@ -0,0 +1 @@
+;;-*-coding: utf-8;-*-
diff --git a/basic.el b/basic.el
index 431c05a..c248296 100644
--- a/basic.el
+++ b/basic.el
@@ -140,7 +140,7 @@ This will maintain the frame's width and height as well."
(set-frame-width (selected-frame) width nil t)
(set-frame-height (selected-frame) height nil t)))
-(durand-hide-minor-mode buffer-face-mode face-remap "BF")
+(durand-hide-minor-mode buffer-face-mode face-remap " BF")
;;; disable line numbers, as that is a performace killer for me.
@@ -425,6 +425,18 @@ Don't ask me to confirm my choice. --- Durand"
(advice-add 'bookmark-completing-read :override #'durand-bookmark-completing-read)
+(define-key global-map (vector ?\s-Z) #'undo-only)
+
+;;; Save close
+
+;;;###autoload
+(defun durand-confirm-execute (fun &rest args)
+ "Ask for confirmation to execute FUN with ARGS."
+ (cond ((y-or-n-p (format "Sure to execute %S" this-command))
+ (apply fun args))
+ ((message "No need to thank me. :-)"))))
+
+(advice-add #'save-buffers-kill-terminal :around #'durand-confirm-execute)
;;; Package management
@@ -438,8 +450,7 @@ Don't ask me to confirm my choice. --- Durand"
The remaining CONFIGS are evaluated after the package is loaded."
(declare (indent 2) (debug defun))
`(progn
- (add-to-list 'load-path
- (expand-file-name ,package-path ,package-dir))
+ (add-to-list 'load-path (expand-file-name ,package-path ,package-dir))
(require ,package-name)
,@configs))
diff --git a/bongo.el b/bongo.el
index 1835973..7fa5375 100644
--- a/bongo.el
+++ b/bongo.el
@@ -21,11 +21,12 @@
(setq bongo-mode-line-indicator-mode nil)
(setq bongo-enabled-backends '(mpv))
(setq bongo-seek-electric-mode nil)
- ;; I still don't know how to make bongo automatically play a YouTube
- ;; link.
(setq bongo-custom-backend-matchers
'((mpv local-file "webm" "m4a")
- (mpv "https:" "youtube")))
+ ;; NOTE
+ ;; For a regular expression as a matcher, it is supposed to
+ ;; be a string, instead of a list of strings.
+ (mpv "https:" . "youtube")))
(setq-default bongo-next-action 'durand-bongo-play-next-or-first)
;; Bongo info path
diff --git a/common.el b/common.el
index 25b775d..3271da1 100644
--- a/common.el
+++ b/common.el
@@ -192,8 +192,14 @@ Require TO-REQUIRE so that we don't have errors.
Optional LIGHT means to use the lighter name instead of
completely hiding it."
- (cond (to-require (require to-require)))
- `(setcdr (assq ',minor minor-mode-alist) (list (or ,light ""))))
+ ;; (cond (to-require (require to-require)))
+ (cond
+ (to-require `(eval-after-load ',to-require
+ (quote
+ (setcdr
+ (assq ',minor minor-mode-alist)
+ (list (or ,light ""))))))
+ (`(setcdr (assq ',minor minor-mode-alist) (list (or ,light ""))))))
(provide 'common)
;;; common.el ends here.
diff --git a/completion-conf.el b/completion-conf.el
index 1ae21e2..ed28b06 100644
--- a/completion-conf.el
+++ b/completion-conf.el
@@ -31,7 +31,7 @@
(require 'minibuffer)
(require 'simple)
-(setq completion-styles '(initials substring partial-completion flex))
+(setq completion-styles '(initials substring partial-completion regex flex))
(setq completion-category-defaults nil)
(setq completion-flex-nospace nil)
(setq completion-pcm-complete-word-inserts-delimiters t)
@@ -88,6 +88,52 @@ minibuffer as usual."
(remove-hook 'minibuffer-setup-hook 'durand-headlong-minibuffer-setup-hook)
(remove-hook 'minibuffer-exit-hook 'durand-headlong-minibuffer-exit-hook))
+;;;###autoload
+(defun regex-try-completion (string table pred point &optional metadata)
+ "The function that tries to complete STRING using completion table \
+TABLE for the `regex' style.
+Only the elements that satisfy the predicate PRED are considered.
+
+POINT is the position of point within STRING.
+
+The return value is nil if there is no completion, and is t if
+STRING is the only possible completion. It is a pair
+
+\(NEWSTRING . NEWPOINT)
+
+otherwise, where NEWSTRING is the completed result and NEWPOINT
+is the new position for point."
+ (let* ((completion-regexp-list (cons string completion-regexp-list))
+ (result (try-completion "" table pred)))
+ (cond
+ ;; For nil values we don't have to return nil explicitly.
+ ((null result) nil)
+ ((eq result t))
+ ((stringp result) (cons result (length result))))))
+
+;;;###autoload
+(defun regex-all-completion (string table pred point &optional metadata)
+ "List the possible completions of STRING in completion table \
+TABLE for the style `regex'.
+Only the elements of TABLE that satisfy the predicate PRED are
+considered. POINT is the position of point within STRING.
+
+The return value is a list of completions and may contain the
+base-size in the last `cdr'."
+ (let ((completion-regexp-list (cons string completion-regexp-list)))
+ (all-completions "" table pred)))
+
+(let ((style-elements
+ (list #'regex-try-completion
+ #'regex-all-completion
+ "Simple regular expression completion.
+This considers the input as the regular expression itself." ))
+ (assoc-result (assoc 'regex completion-styles-alist)))
+ (cond
+ (assoc-result (setcdr assoc-result style-elements))
+ ((setq completion-styles-alist
+ (cons (cons 'regex style-elements) completion-styles-alist)))))
+
(provide 'completion-conf)
;;; completion-conf.el ends here
diff --git a/dashboard.el b/dashboard.el
index 0a4402e..c608b34 100644
--- a/dashboard.el
+++ b/dashboard.el
@@ -5,31 +5,55 @@
"The name of the buffer for the dashboard.")
;;;###autoload
+(defvar dashboard-cat-text
+ (list
+ " "
+ " /\\ "
+ " / \\ "
+ " / =\\= "
+ " / - \\=----- "
+ " / |.| / "
+ " \\\\ - - / "
+ " \\\\ |.| | "
+ " / \\\\ - / "
+ " / \\\\ / "
+ " ||==========| ========\\=| "
+ " ||==========| -- | "
+ " | || /==== | "
+ " == | / \\ \\ "
+ " | | \\ \\ "
+ " ==== ==== ")
+ "A clumsy text representation of a cute cat.")
+
+;;;###autoload
(defun dashboard ()
"Create the dashboard buffer."
(interactive)
(let ((dashboard-exists-p (get-buffer dashboard-buffer-name))
(dashboard (get-buffer-create dashboard-buffer-name)))
(cond
- (dashboard-exists-p
- (switch-to-buffer dashboard))
+ (dashboard-exists-p (switch-to-buffer dashboard))
(t
(with-current-buffer dashboard
- (let ((image (create-image "~/.doom.d/banners/default.png")))
- (insert
- (make-string 3 10)
- (center-string-in-width
- (propertize " " 'display image 'rear-nonsticky '(display))
- (round (- (window-body-width)
- (* (car (image-size image)) 0.7))))))
+ (cond
+ ((display-graphic-p)
+ (let ((image (create-image "~/.doom.d/banners/default.png")))
+ (insert
+ (make-string 3 10)
+ (center-string-in-width
+ (propertize " " 'display image 'rear-nonsticky '(display))
+ (round (- (window-body-width)
+ (* (car (image-size image)) 0.7)))))))
+ ((mapc (function
+ (lambda (str)
+ (insert
+ (center-string-in-width str (- (window-body-width) 13))
+ "\n")))
+ dashboard-cat-text)))
(newline 5)
- (insert
- (center-string-in-width
- "Dashboard"
- (window-body-width)))
+ (insert (center-string-in-width "Dashboard" (window-body-width)))
(read-only-mode 1)
- (set 'mode-line-format
- '("%e" (:eval (modeline-format-dashboard))))
+ (set 'mode-line-format '("%e" (:eval (modeline-format-dashboard))))
(view-mode 1))))
dashboard))
@@ -42,8 +66,9 @@
"Don't kill the dashboard buffer."
(cond
((eq (current-buffer) (get-buffer dashboard-buffer-name))
- (message "Don't kill the dashboard buffer.")
- nil)
+ ;; The function message returns the message, so applying not will
+ ;; produce nil as needed.
+ (not (message "Don't kill the dashboard buffer.")))
(t)))
(add-hook 'kill-buffer-query-functions 'dont-kill-dashboard-fn)
diff --git a/desktop b/desktop
index 848739b..0c2f05a 100644
--- a/desktop
+++ b/desktop
@@ -2,30 +2,18 @@
;; --------------------------------------------------------------------------
;; Desktop File for Emacs
;; --------------------------------------------------------------------------
-;; Created Thu Jan 14 00:50:58 2021
+;; Created Sun Feb 7 10:31:05 2021
;; Desktop file format version 208
-;; Emacs version 27.1
+;; Emacs version 27.1.90
;; Global section:
(setq desktop-saved-frameset nil)
(setq desktop-missing-file-warning nil)
(setq tags-file-name "/Users/durand/w.emacs.d/emacs/src/TAGS")
-(setq tags-table-list '("/Users/durand/w.emacs.d/emacs/src/TAGS"))
-(setq search-ring '(#("termi" 0 5 (isearch-regexp-function nil isearch-case-fold-search t)) #("safa" 0 4 (isearch-regexp-function nil isearch-case-fold-search t)) #("mu4e" 0 4 (isearch-regexp-function nil isearch-case-fold-search t)) #("before" 0 6 (isearch-regexp-function nil isearch-case-fold-search t)) #(".el" 0 3 (isearch-regexp-function nil isearch-case-fold-search t)) #("ain" 0 3 (isearch-regexp-function nil isearch-case-fold-search t)) #("length" 0 6 (isearch-regexp-function nil isearch-case-fold-search t)) #("thro" 0 4 (isearch-regexp-function nil isearch-case-fold-search t)) #("manu" 0 4 (isearch-regexp-function nil isearch-case-fold-search t)) #("*" 0 1 (isearch-regexp-function nil isearch-case-fold-search t)) #("ple" 0 3 (isearch-regexp-function nil isearch-case-fold-search t)) #("this" 0 4 (isearch-regexp-function nil isearch-case-fold-search t)) #("turn" 0 4 (isearch-regexp-function nil isearch-case-fold-search t)) #("packa" 0 5 (isearch-regexp-function nil isearch-case-fold-search t)) #("whose" 0 5 (isearch-regexp-function nil isearch-case-fold-search t)) #("orderless" 0 9 (isearch-regexp-function nil isearch-case-fold-search t))))
-(setq regexp-search-ring '(#("^ \\{2\\}c" 0 1 (isearch-case-fold-search t) 1 8 (isearch-case-fold-search t)) #("^ \\{2\\}d" 0 1 (isearch-case-fold-search t) 1 8 (isearch-case-fold-search t)) #("^ \\{2\\}o" 0 1 (isearch-case-fold-search t) 1 8 (isearch-case-fold-search t)) #("^ \\{2\\}-" 0 1 (isearch-case-fold-search t) 1 8 (isearch-case-fold-search t)) #("^ \\{2\\}-ll" 0 1 (isearch-case-fold-search t) 1 8 (isearch-case-fold-search t) 8 10 (isearch-case-fold-search t)) #("^ \\{2\\}n" 0 1 (isearch-case-fold-search t) 1 8 (isearch-case-fold-search t)) #("^ \\{2\\}m" 0 1 (isearch-case-fold-search t) 1 8 (isearch-case-fold-search t)) #("^ \\{2\\}e" 0 1 (isearch-case-fold-search t) 1 8 (isearch-case-fold-search t)) #("^ \\{2\\}r" 0 1 (isearch-case-fold-search t) 1 8 (isearch-case-fold-search t)) #(" \\{2\\}r" 0 7 (isearch-case-fold-search t)) #("\\s-\\{\\}" 0 7 (isearch-case-fold-search t)) #("comb/su.*el" 0 11 (isearch-regexp-function nil isearch-case-fold-search t)) #("obs.*1" 0 6 (isearch-case-fold-search t)) #("emacs.*bug" 0 10 (isearch-case-fold-search t)) #("emacs.*deve" 0 11 (isearch-case-fold-search t)) #("emacs.*bugs" 0 11 (isearch-case-fold-search t))))
-(setq register-alist (list '(102 . #(";;;###autoload\n(defface )" 0 3 (face font-lock-comment-delimiter-face fontified t) 3 6 (face font-lock-comment-face fontified t) 6 13 (face (font-lock-warning-face font-lock-warning-face) fontified t) 13 14 (face (font-lock-warning-face font-lock-warning-face) rear-nonsticky t fontified t) 14 15 (face font-lock-comment-face fontified t) 15 16 (fontified t) 16 23 (face font-lock-keyword-face fontified t) 23 24 (fontified t) 24 25 (fontified t))) '(65 . #("doom-modeline-input-method-alt" 0 30 (face font-lock-constant-face fontified t))) '(105 . #("(setq org-capture-templates\n '((\"m\" \"Account records\" entry\n (file+olp+datetree \"~/org/account/account.org\")\n \"* %(durand-org-capture-account-template)\"\n ;; \"* %^{ITEM|breakfast|brunch|brunverage|lunch|dinner|beverage|snack|fruit}\\n :PROPERTIES:\\n :cost: %(number-to-string (read-number \\\"COST:\\\" 0))\\n :FROM: %(completing-read \\\"FROM: \\\" '(\\\"Cash\\\" \\\"etique\\\"))\\n :RECORD_TIME: %U\\n :END:\\n %(durand-org-complete-capture-account)%?\"\n :jump-to-captured t)\n (\"d\" \"Record Diaries\" entry\n (file+olp+datetree \"~/org/diary.org\")\n \"* %?\\n :PROPERTIES:\\n :RECORD_TIME: %U\\n :END:\\n\\n\"\n :jump-to-captured t)\n (\"w\" \"Withdrawal records\" entry\n (file+headline \"~/org/wiki.org\" \"Money Withdrawal\")\n \"* WITHDRAW NTD %? %(org-insert-time-stamp (org-read-date nil t \\\"+0d\\\") nil nil)\\n\"\n :kill-buffer t)\n (\"l\" \"Store links\" entry\n (file \"/Users/durand/org/math_article_links.org\")\n \"* TO-THINK %? %(org-insert-time-stamp (org-read-date nil t \\\"+0d\\\") nil t)\\n%a\\n\" :kill-buffer t)\n (\"g\" \"GNUS\" entry\n (file \"~/org/notes.org\")\n \"* TO-THINK %:subject\\n :PROPERTIES:\\n :RECORD_TIME: %U\\n :END:\\n %:from\\n %:to\\n %a\\n %?\"\n :empty-lines 1\n :kill-buffer t)\n (\"L\" \"for storing webpages\" entry\n #'org-determine-link-file\n \"* PENDING %(org-filter-title) %(org-determine-tag)\\n :PROPERTIES:\\n :RECORD_TIME: %U\\n :END:\\n\\n %(org-filtered-link)\\n %i\\n %?\"\n :empty-lines 1\n :kill-buffer t\n :immediate-finish t)\n (\"t\" \"TODO\" entry\n (file \"~/org/aujourdhui.org\")\n \"* TODO %? %^{Date to do:}t\\n :PROPERTIES:\\n :RECORD_TIME: %U\\n :END:\\n\\n\"\n :kill-buffer t)\n (\"b\" \"Blog posts\" entry\n (file+headline \"~/org/notes.org\" \"Blog posts\")\n \"* %? %(org-insert-time-stamp (org-read-date nil t \\\"+0d\\\"))\\n%i\\n\")\n (\"a\" \"Abstractions\" entry\n (file+headline \"~/org/wiki.org\" \"Abstractions\")\n \"* ABSTRACT %?\\n :PROPERTIES:\\n :RECORD_TIME: %U\\n :END:\\n\\n\")\n (\"A\" \"Agenda\" entry\n (file+headline \"~/org/agenda.org\" \"Agenda\")\n \"* TODO %?\\n :PROPERTIES:\\n :RECORD_TIME: %U\\n :DURATION: %^{Date: }t\\n :END:\\n\\n\")\n (\"y\" \"YiFu\" entry\n (file+headline \"~/org/wiki.org\" \"Yi Fu Tips\")\n \"* MEMO %^{word}\\n :PROPERTIES:\\n :STORY: %\\\\2\\n :MEANING: %\\\\3\\n :END:\\n** Yi Fu story\\n %^{story}\\n** Meaning\\n %^{meaning}\"\n :kill-buffer t\n :immediate-finish t)\n (\"c\" \"Chansons\" entry\n (file+headline \"~/org/wiki.org\" \"Liste de Chansons\")\n \"* MEMO %^{title}\\n :PROPERTIES:\\n :RECORD_TIME: %U\\n :LINK: [[%^{link}][%^{description}]]\\n :END:\\n %?\"\n :jump-to-captured t)\n (\"f\" \"français\" entry\n (file+headline \"~/org/français/français.org\" \"Liste de mots français\")\n \"* MEMO %^{mot} :drill:\\n :PROPERTIES:\\n :DRILL_CARD_TYPE: français\\n :RECORD_TIME: %U\\n :MEANING: %^{ce qu'il veut dire}\\n :END:\\n\\n MEANING: %\\\\2\\n%?\"\n :jump-to-captured t)))" 0 1 (fontified t) 1 5 (fontified t face font-lock-keyword-face) 5 36 (fontified t) 36 37 (fontified t face font-lock-keyword-face) 37 39 (fontified t) 39 42 (fontified t face font-lock-string-face) 42 43 (fontified t) 43 60 (fontified t face font-lock-string-face) 60 97 (fontified t) 97 124 (fontified t face font-lock-string-face) 124 137 (fontified t) 137 179 (fontified t face font-lock-string-face) 179 191 (fontified t) 191 194 (fontified t face font-lock-comment-delimiter-face) 194 477 (fontified t face font-lock-comment-face) 477 488 (fontified t) 488 498 (fontified t face font-lock-builtin-face) 498 505 (fontified t face font-lock-builtin-face) 505 509 (fontified t) 509 520 (fontified t) 520 523 (fontified t face font-lock-string-face) 523 524 (fontified t) 524 540 (fontified t face font-lock-string-face) 540 577 (fontified t) 577 594 (fontified t face font-lock-string-face) 594 607 (fontified t) 607 662 (fontified t face font-lock-string-face) 662 674 (fontified t) 674 691 (fontified t face font-lock-builtin-face) 691 706 (fontified t) 706 709 (fontified t face font-lock-string-face) 709 710 (fontified t) 710 730 (fontified t face font-lock-string-face) 730 763 (fontified t) 763 779 (fontified t face font-lock-string-face) 779 780 (fontified t) 780 798 (fontified t face font-lock-string-face) 798 811 (fontified t) 811 895 (fontified t face font-lock-string-face) 895 907 (fontified t) 907 919 (fontified t face font-lock-builtin-face) 919 934 (fontified t) 934 937 (fontified t face font-lock-string-face) 937 938 (fontified t) 938 951 (fontified t face font-lock-string-face) 951 975 (fontified t) 975 1009 (fontified t face font-lock-string-face) 1009 1017 (fontified t face font-lock-string-face) 1017 1019 (fontified t) 1019 1030 (fontified t) 1030 1112 (fontified t face font-lock-string-face) 1112 1113 (fontified t) 1113 1125 (fontified t face font-lock-builtin-face) 1125 1140 (fontified t) 1140 1143 (fontified t face font-lock-string-face) 1143 1144 (fontified t) 1144 1150 (fontified t face font-lock-string-face) 1150 1174 (fontified t) 1174 1191 (fontified t face font-lock-string-face) 1191 1204 (fontified t) 1204 1301 (fontified t face font-lock-string-face) 1301 1313 (fontified t) 1313 1325 (fontified t face font-lock-builtin-face) 1325 1339 (fontified t) 1339 1351 (fontified t face font-lock-builtin-face) 1351 1366 (fontified t) 1366 1369 (fontified t face font-lock-string-face) 1369 1370 (fontified t) 1370 1392 (fontified t face font-lock-string-face) 1392 1410 (fontified t) 1410 1412 (fontified t face font-lock-keyword-face) 1412 1435 (fontified t face font-lock-constant-face) 1435 1447 (fontified t) 1447 1519 (fontified t face font-lock-string-face) 1519 1582 (fontified t face font-lock-string-face) 1582 1583 (fontified t) 1583 1594 (fontified t) 1594 1606 (fontified t face font-lock-builtin-face) 1606 1620 (fontified t) 1620 1632 (fontified t face font-lock-builtin-face) 1632 1646 (fontified t) 1646 1663 (fontified t face font-lock-builtin-face) 1663 1678 (fontified t) 1678 1681 (fontified t face font-lock-string-face) 1681 1682 (fontified t) 1682 1688 (fontified t face font-lock-string-face) 1688 1712 (fontified t) 1712 1734 (fontified t face font-lock-string-face) 1734 1747 (fontified t) 1747 1824 (fontified t face font-lock-string-face) 1824 1836 (fontified t) 1836 1848 (fontified t face font-lock-builtin-face) 1848 1863 (fontified t) 1863 1866 (fontified t face font-lock-string-face) 1866 1867 (fontified t) 1867 1879 (fontified t face font-lock-string-face) 1879 1912 (fontified t) 1912 1929 (fontified t face font-lock-string-face) 1929 1930 (fontified t) 1930 1942 (fontified t face font-lock-string-face) 1942 1955 (fontified t) 1955 2022 (fontified t face font-lock-string-face) 2022 2035 (fontified t) 2035 2038 (fontified t face font-lock-string-face) 2038 2039 (fontified t) 2039 2053 (fontified t face font-lock-string-face) 2053 2083 (fontified t) 2083 2086 (fontified t) 2086 2102 (fontified t face font-lock-string-face) 2102 2103 (fontified t) 2103 2117 (fontified t face font-lock-string-face) 2117 2119 (fontified t) 2119 2130 (fontified t) 2130 2194 (fontified t face font-lock-string-face) 2194 2207 (fontified t) 2207 2210 (fontified t face font-lock-string-face) 2210 2211 (fontified t) 2211 2219 (fontified t face font-lock-string-face) 2219 2252 (fontified t) 2252 2270 (fontified t face font-lock-string-face) 2270 2271 (fontified t) 2271 2279 (fontified t face font-lock-string-face) 2279 2292 (fontified t) 2292 2378 (fontified t face font-lock-string-face) 2378 2391 (fontified t) 2391 2394 (fontified t face font-lock-string-face) 2394 2395 (fontified t) 2395 2401 (fontified t face font-lock-string-face) 2401 2434 (fontified t) 2434 2450 (fontified t face font-lock-string-face) 2450 2451 (fontified t) 2451 2463 (fontified t face font-lock-string-face) 2463 2476 (fontified t) 2476 2610 (fontified t face font-lock-string-face) 2610 2619 (fontified t) 2619 2622 (fontified t) 2622 2634 (fontified t face font-lock-builtin-face) 2634 2637 (fontified t) 2637 2648 (fontified t) 2648 2665 (fontified t face font-lock-builtin-face) 2665 2680 (fontified t) 2680 2683 (fontified t face font-lock-string-face) 2683 2684 (fontified t) 2684 2694 (fontified t face font-lock-string-face) 2694 2727 (fontified t) 2727 2743 (fontified t face font-lock-string-face) 2743 2744 (fontified t) 2744 2763 (fontified t face font-lock-string-face) 2763 2776 (fontified t) 2776 2885 (fontified t face font-lock-string-face) 2885 2897 (fontified t) 2897 2914 (fontified t face font-lock-builtin-face) 2914 2929 (fontified t) 2929 2932 (fontified t face font-lock-string-face) 2932 2933 (fontified t) 2933 2943 (fontified t face font-lock-string-face) 2943 2976 (fontified t) 2976 3005 (fontified t face font-lock-string-face) 3005 3006 (fontified t) 3006 3030 (fontified t face font-lock-string-face) 3030 3043 (fontified t) 3043 3137 (fontified t face font-lock-string-face) 3137 3201 (fontified t face font-lock-string-face) 3201 3202 (fontified t) 3202 3213 (fontified t) 3213 3230 (fontified t face font-lock-builtin-face) 3230 3235 (fontified t))) '(103 . #("(gst-add-leaf-label tree nxt num (- position remain -1))" 0 1 (fontified t face font-lock-comment-face) 1 19 (fontified t face font-lock-comment-face) 19 34 (fontified t face font-lock-comment-face) 34 35 (fontified t face font-lock-comment-face) 35 56 (fontified t face font-lock-comment-face))) (desktop-list* 119 (record 'frameset-register (vector 'frameset 1 '(24569 44555 290847 0) 'register nil nil nil (list (list (list '(minibuffer . t) '(font-backend mac-ct) '(fontsize . 0) '(font . "-*-Droid Sans Mono for Powerline-normal-normal-normal-*-20-*-*-*-m-0-iso10646-1") '(border-width . 0) '(internal-border-width . 2) '(right-divider-width . 0) '(bottom-divider-width . 0) '(vertical-scroll-bars) '(horizontal-scroll-bars) '(foreground-color . "#ffffff") '(background-color . "#000000") '(line-spacing) '(left-fringe . 8) '(right-fringe . 8) '(no-special-glyphs) '(undecorated) '(ns-appearance . dark) '(ns-transparent-titlebar . t) '(parent-frame) '(z-group) '(no-focus-on-map) '(no-accept-focus) '(menu-bar-lines . 0) '(tool-bar-lines . 0) '(buffer-predicate) '(title) '(icon-type) '(auto-raise) '(auto-lower) '(cursor-type . box) '(scroll-bar-width . 15) '(scroll-bar-height . 15) '(alpha) '(fullscreen . maximized) '(window-system . ns) '(display-type . color) '(background-mode . dark) '(cursor-color . "#ffffff") '(environment) '(last-focus-update . t) (list 'tabs '(current-tab (name . "working") (explicit-name . t)) (list 'tab '(name . "default") '(explicit-name . t) '(time . 1610198531.271038) '(ws ((min-height . 4) (min-width . 10) (min-height-ignore . 3) (min-width-ignore . 4) (min-height-safe . 1) (min-width-safe . 2) (min-pixel-height . 96) (min-pixel-width . 120) (min-pixel-height-ignore . 72) (min-pixel-width-ignore . 48) (min-pixel-height-safe . 24) (min-pixel-width-safe . 24)) leaf (pixel-width . 1436) (pixel-height . 819) (total-width . 120) (total-height . 34) (normal-height . 1.0) (normal-width . 1.0) (buffer "durand" (selected . t) (hscroll . 0) (fringes 8 8 nil nil) (margins nil) (scroll-bars nil 0 t nil 0 t nil) (vscroll . 0) (dedicated) (point . 117) (start . 1)) (prev-buffers ("suffix-tree.el" 7617 8143) ("durand" 1 117))) '(wc . "Unprintable entity") (desktop-list* 'wc-point (let ((mk (make-marker))) (add-hook 'desktop-delay-hook (lambda nil (set-marker mk 117 (get-buffer "durand")))) mk)) '(wc-bl "Unprintable entity" "Unprintable entity" "Unprintable entity" "Unprintable entity" "Unprintable entity" "Unprintable entity" "Unprintable entity") '(wc-bbl "Unprintable entity" "Unprintable entity" "Unprintable entity" "Unprintable entity" "Unprintable entity" "Unprintable entity" "Unprintable entity") '(wc-history-back) '(wc-history-forward))) (list 'window-state '((min-height . 12) (min-width . 10) (min-height-ignore . 9) (min-width-ignore . 4) (min-height-safe . 3) (min-width-safe . 2) (min-pixel-height . 288) (min-pixel-width . 120) (min-pixel-height-ignore . 216) (min-pixel-width-ignore . 48) (min-pixel-height-safe . 72) (min-pixel-width-safe . 24)) 'vc '(pixel-width . 1436) '(pixel-height . 819) '(total-width . 120) '(total-height . 34) '(normal-height . 1.0) '(normal-width . 1.0) '(combination-limit) '(parameters (clone-of . "Unprintable entity")) (list 'vc '(pixel-width . 1436) '(pixel-height . 507) '(total-width . 120) '(total-height . 21) '(normal-height . 0.6172161172161172) '(normal-width . 1.0) '(combination-limit) '(parameters (clone-of . "Unprintable entity")) (list 'leaf '(pixel-width . 1436) '(pixel-height . 243) '(total-width . 120) '(total-height . 10) '(normal-height . 0.5) '(normal-width . 1.0) '(parameters (clone-of . "Unprintable entity")) (list 'buffer "Unprintable entity" '(selected . t) '(hscroll . 0) '(fringes 8 8 nil nil) '(margins nil) '(scroll-bars nil 0 t nil 0 t nil) '(vscroll . 0) '(dedicated) (desktop-list* 'point (let ((mk (make-marker))) (add-hook 'desktop-delay-hook (lambda nil (set-marker mk nil (get-buffer " *temp*")))) mk)) (desktop-list* 'start (let ((mk (make-marker))) (add-hook 'desktop-delay-hook (lambda nil (set-marker mk nil (get-buffer " *temp*")))) mk))) (list 'prev-buffers (list "Unprintable entity" (let ((mk (make-marker))) (add-hook 'desktop-delay-hook (lambda nil (set-marker mk nil (get-buffer " *temp*")))) mk) (let ((mk (make-marker))) (add-hook 'desktop-delay-hook (lambda nil (set-marker mk nil (get-buffer " *temp*")))) mk)) (list "Unprintable entity" (let ((mk (make-marker))) (add-hook 'desktop-delay-hook (lambda nil (set-marker mk nil (get-buffer " *temp*")))) mk) (let ((mk (make-marker))) (add-hook 'desktop-delay-hook (lambda nil (set-marker mk nil (get-buffer " *temp*")))) mk)) (list "Unprintable entity" (let ((mk (make-marker))) (add-hook 'desktop-delay-hook (lambda nil (set-marker mk nil (get-buffer " *temp*")))) mk) (let ((mk (make-marker))) (add-hook 'desktop-delay-hook (lambda nil (set-marker mk nil (get-buffer " *temp*")))) mk)))) (list 'leaf '(last . t) '(pixel-width . 1436) '(pixel-height . 264) '(total-width . 120) '(total-height . 11) '(normal-height . 0.5) '(normal-width . 1.0) '(parameters (clone-of . "Unprintable entity")) (list 'buffer "Unprintable entity" '(selected) '(hscroll . 0) '(fringes 8 8 nil nil) '(margins nil) '(scroll-bars nil 0 t nil 0 t nil) '(vscroll . 32.791666666666664) '(dedicated) (desktop-list* 'point (let ((mk (make-marker))) (add-hook 'desktop-delay-hook (lambda nil (set-marker mk nil (get-buffer " *temp*")))) mk)) (desktop-list* 'start (let ((mk (make-marker))) (add-hook 'desktop-delay-hook (lambda nil (set-marker mk nil (get-buffer " *temp*")))) mk))) (list 'prev-buffers (list "Unprintable entity" (let ((mk (make-marker))) (add-hook 'desktop-delay-hook (lambda nil (set-marker mk nil (get-buffer " *temp*")))) mk) (let ((mk (make-marker))) (add-hook 'desktop-delay-hook (lambda nil (set-marker mk nil (get-buffer " *temp*")))) mk))))) (list 'leaf '(last . t) '(pixel-width . 1436) '(pixel-height . 312) '(total-width . 120) '(total-height . 13) '(normal-height . 0.38278388278388276) '(normal-width . 1.0) '(parameters (clone-of . "Unprintable entity") (window-side . bottom) (window-slot . 1)) (list 'buffer "Unprintable entity" '(selected) '(hscroll . 0) '(fringes 8 8 nil nil) '(margins nil) '(scroll-bars nil 0 t nil 0 t nil) '(vscroll . 0) '(dedicated . side) (desktop-list* 'point (let ((mk (make-marker))) (add-hook 'desktop-delay-hook (lambda nil (set-marker mk nil (get-buffer " *temp*")))) mk)) (desktop-list* 'start (let ((mk (make-marker))) (add-hook 'desktop-delay-hook (lambda nil (set-marker mk nil (get-buffer " *temp*")))) mk))))) '(tab-bar-lines . 1) '(frameset--id . "30A3-30F0-BF57-BE59") '(frameset--mini t . t) '(height . 35) '(width . 118) '(modeline . t) '(unsplittable) '(buffer-list "Unprintable entity" "Unprintable entity" "Unprintable entity" "Unprintable entity" "Unprintable entity" "Unprintable entity" "Unprintable entity") '(buried-buffer-list "Unprintable entity" "Unprintable entity" "Unprintable entity" "Unprintable entity" "Unprintable entity" "Unprintable entity" "Unprintable entity") '(left . 0) '(top . 25) '(window-id . "1") '(icon-name) '(visibility . t) '(display . "MacBook-Pro-de-Severe.local") '(explicit-name) '(parent-id) '(tool-bar-position . top)) '((min-height . 8) (min-width . 10) (min-height-ignore . 6) (min-width-ignore . 4) (min-height-safe . 2) (min-width-safe . 2) (min-pixel-height . 192) (min-pixel-width . 120) (min-pixel-height-ignore . 144) (min-pixel-width-ignore . 48) (min-pixel-height-safe . 48) (min-pixel-width-safe . 24)) 'vc '(pixel-width . 1436) '(pixel-height . 819) '(total-width . 120) '(total-height . 34) '(normal-height . 1.0) '(normal-width . 1.0) '(combination-limit) '(leaf (pixel-width . 1436) (pixel-height . 723) (total-width . 120) (total-height . 30) (normal-height . 0.8809523809523809) (normal-width . 1.0) (buffer "suffix-tree.el" (selected . t) (hscroll . 0) (fringes 8 8 nil nil) (margins nil) (scroll-bars nil 0 t nil 0 t nil) (vscroll . 0) (dedicated) (point . 8143) (start . 7650)) (prev-buffers ("suffix-tree.el" 7617 8143) ("ST.cpp" 2563 2942))) '(leaf (last . t) (pixel-width . 1436) (pixel-height . 96) (total-width . 120) (total-height . 4) (normal-height . 0.11904761904761907) (normal-width . 1.0) (buffer "test ground" (selected) (hscroll . 0) (fringes 8 8 nil nil) (margins nil) (scroll-bars nil 0 t nil 0 t nil) (vscroll . 0) (dedicated) (point . 1) (start . 1)) (prev-buffers ("test ground" 1 1)))))) "30A3-30F0-BF57-BE59" (let ((mk (make-marker))) (add-hook 'desktop-delay-hook (lambda nil (set-marker mk nil (get-buffer " *temp*")))) mk))) '(112 . #("\\prod_{p\\in\\mathscr{A}}p^{v_p}" 0 5 (face font-lock-keyword-face fontified t) 5 6 (fontified t) 6 8 (face (subscript) fontified t display (raise -0.2)) 8 11 (face (font-lock-keyword-face subscript) fontified t display (raise -0.2)) 11 19 (face (font-lock-keyword-face subscript) fontified t display (raise -0.2)) 19 21 (face (subscript) fontified t display (raise -0.2)) 21 22 (face (subscript) fontified t display (raise -0.2) rear-nonsticky t) 22 23 (face (subscript) fontified t display (raise -0.2)) 23 25 (fontified t) 25 28 (face (superscript) fontified t display (raise 0.2)) 28 29 (face (superscript subscript) fontified t display (raise -0.2)) 29 30 (face (superscript) rear-nonsticky t fontified t display (raise 0.2)))) '(116 file-query "/Users/durand/Desktop/Centre/Introduction to algebra/Questions/semi-direct products/answer.tex" 2083) '(101 . "4249:") '(107 . #("(define-key embark-occur-mode-map (vector ?\\ ) )" 0 1 (fontified t) 1 11 (face font-lock-constant-face fontified t) 11 12 (fontified t) 12 33 (face font-lock-variable-name-face fontified t) 33 34 (fontified t) 34 35 (fontified t) 35 41 (face font-lock-constant-face fontified t) 41 45 (fontified t) 45 47 (fontified t) 47 48 (rear-nonsticky t fontified t))) '(115 . #(" (insert (format \"after character %c, the tree becomes\\n\" character))\n (insert (format \"string is %s\\n\" (substring str 0 position)))\n (st-print-tree tree (substring str 0 position))\n (insert \"\\n\\n\")" 0 6 (fontified t) 6 7 (fontified t) 7 13 (fontified t face font-lock-constant-face) 13 14 (fontified t) 14 15 (fontified t) 15 21 (face font-lock-constant-face fontified t) 21 22 (fontified t) 22 62 (face font-lock-string-face fontified t) 62 72 (fontified t) 72 73 (fontified t) 73 75 (fontified t) 75 81 (fontified t) 81 82 (fontified t) 82 88 (face font-lock-constant-face fontified t) 88 89 (fontified t) 89 90 (fontified t) 90 96 (face font-lock-constant-face fontified t) 96 97 (fontified t) 97 111 (face font-lock-string-face fontified t) 111 113 (face font-lock-string-face fontified t) 113 114 (fontified t) 114 115 (fontified t) 115 124 (face font-lock-constant-face fontified t) 124 125 (fontified t) 125 139 (fontified t) 139 140 (fontified t) 140 141 (fontified t) 141 142 (fontified t) 142 143 (fontified t) 143 149 (fontified t) 149 150 (fontified t) 150 163 (face font-lock-function-name-face fontified t) 163 169 (fontified t) 169 170 (fontified t) 170 179 (face font-lock-constant-face fontified t) 179 180 (fontified t) 180 194 (fontified t) 194 195 (fontified t) 195 196 (fontified t rear-nonsticky t) 196 197 (fontified t) 197 203 (fontified t) 203 204 (fontified t) 204 210 (face font-lock-constant-face fontified t) 210 211 (fontified t) 211 212 (face font-lock-string-face fontified t) 212 217 (face font-lock-string-face fontified t) 217 218 (fontified t))) '(114 . #("\\mathscr{A}" 0 8 (face tex-math fontified t) 8 11 (face tex-math fontified t))) '(108 file-query "/Users/durand/Desktop/emacs.d/org-conf.el" 11583) '(109 file-query "/Users/durand/Desktop/emacs.d/suffix tree/LCS.el" 1) '(100 . #(";;;###autoload\n(defun )" 0 3 (fontified t face font-lock-comment-delimiter-face) 3 6 (fontified t face font-lock-comment-face) 6 13 (fontified t face (font-lock-warning-face font-lock-warning-face)) 13 14 (fontified t rear-nonsticky t face (font-lock-warning-face font-lock-warning-face)) 14 15 (fontified t face font-lock-comment-face) 15 16 (fontified t) 16 21 (fontified t face font-lock-keyword-face) 21 22 (fontified t) 22 23 (fontified t))) '(118 . #(";;;###autoload\n(defvar )" 0 3 (fontified t face font-lock-comment-delimiter-face) 3 6 (fontified t face font-lock-comment-face) 6 13 (fontified t face (font-lock-warning-face font-lock-warning-face)) 13 14 (fontified t rear-nonsticky t face (font-lock-warning-face font-lock-warning-face)) 14 15 (fontified t face font-lock-comment-face) 15 16 (fontified t) 16 22 (fontified t face font-lock-keyword-face) 22 23 (fontified t) 23 24 (fontified t))) '(97 . #(";;;###autoload" 0 3 (fontified t face font-lock-comment-delimiter-face) 3 6 (fontified t face font-lock-comment-face) 6 13 (fontified t face (font-lock-warning-face font-lock-warning-face)) 13 14 (rear-nonsticky t fontified t face (font-lock-warning-face font-lock-warning-face))))))
-(setq file-name-history '("~/Desktop/emacs.d/suffix tree/suffix tree files.zip" "~/Desktop/emacs.d/suffix tree" "~/org/notes.org" "~/Desktop/emacs.d/suffix tree/LCS.el" "~/elisp_packages/magit/lisp/magit.el" "~/Desktop/emacs.d/suffix tree/generalized-suffix-tree.el" "~/Desktop/emacs.d/basic.el" "~/Desktop/emacs.d/suffix tree/basic.el" "~/Desktop/emacs.d/suffix tree/" "~/elisp_packages/hierarchy/" "~/Desktop/emacs.d/init.el" "~/Desktop/emacs.d/flymake-conf.el" "~/org/aujourdhui.org_archive" "aujourdhui.org_a" "~/Desktop/emacs.d/save-new" "gst test ground.txt" "~/Desktop/emacs.d/suffix tree/gst test ground.txt" "~/Desktop/emacs.d/suffix tree/lcs test ground.txt" "~/Desktop/emacs.d/.gitignore" "~/Desktop/emacs.d/rime" "~/elisp_packages/magit/lisp/" "~/elisp_packages/magit/lisp/magit-core.el" "~/elisp_packages/" "~/Desktop/emacs.d/" "~/elisp_packages/magit/Makefile" "~/Desktop/emacs.d/magit-conf.el" "~/.emacs.d/.local/straight/repos/magit" "~/Desktop/emacs.d/view-functions.el" "~/.doom.d/modules/lang/durand-org/config.el" "~/.doom.d/modules/lang/durand-org/" "~/.doom.d/" "~/Desktop/emacs.d/gnus-conf.el" "~/Desktop/emacs.d/comb/orderless-conf.el" "~/w.emacs.d/emacs/src/TAGS" "~/Desktop/emacs.d/dashboard.el" "~/Desktop/emacs.d/modes/modes.el" "~/Desktop/emacs.d/embark-conf.el" "~/Downloads/documents intéressants/Algorithms/Algorithms on Strings, Trees, and Sequences Computer Science and Computational Biology by Dan Gusfield (z-lib.org).pdf" "~/elisp_packages/pdf-tools/" "~/.emacs.d/.local/straight/build/pdf-tools/" "~/Desktop/emacs.d/org-conf.el" "~/Desktop/emacs.d/pdf.el" "/etc/passwd" "/usr/local/etc/dovecot/dovecot.passwd" "/usr/local/etc/dovecot/conf.d/10-master.conf" "/usr/local/etc/dovecot/conf.d/10-auth.conf" "/usr/local/etc/dovecot/conf.d/10-mail.conf" "/usr/local/etc/dovecot/dovecot.conf" "/usr/local/etc/dovecot/" "/usr/local/etc/dovecot/passwd.master" "/etc/shadow" "/usr/local/etc/dovecot/conf.d/10-ssl.conf" "~/" "/usr/local/var/run/dovecot/" "/usr/local/var/run/dovecot/dovecot.conf" "~/mbsync" "/usr/local/Cellar/dovecot/2.3.10.1/share/doc/dovecot/example-config/dovecot.conf" "/usr/local/Cellar/dovecot/2.3.10.1/share/doc/dovecot/example-config/conf.d/10-master.conf" "/usr/local/Cellar/dovecot/2.3.10.1/share/doc/dovecot/example-config/" "~/Desktop/emacs.d/suffix tree/suffix-tree files.zip" "~/Desktop/emacs.d/suffix tree/suffix-tree files" "~/.authinfo" "~/.authinfo.gpg" "~/.mbsyncrc" "~/Desktop/emacs.d/test.gpg" "~/Desktop/emacs.d/mail.el" "/usr/local/etc/openssl/gmail.crt" "/Users/durand/.mbsyncrc" "~/.doom.d/modules/email/durand-mu/" "~/w.emacs.d/emacs/src/lisp.h" "~/w.emacs.d/emacs/src/" "~/Desktop/emacs.d/org-pdftools.el" "~/Desktop/emacs.d/backups/" "~/elisp_packages/embark/" "~/Desktop/" "~/elisp_packages/orqura/tequela.el" "~/.emacs.d/.local/straight/repos/doom-modeline/doom-modeline-core.el" "~/.emacs.d/.local/straight/repos/doom-modeline/doom-modeline-env.el" "~/.emacs.d/.local/straight/repos/doom-modeline/doom-modeline-segments.el" "~/.emacs.d/modules/ui/modeline/config.el" "~/Desktop/emacs.d/modeline.el" "~/.emacs.d/.local/straight/repos/dash.el/" "~/.emacs.d/.local/straight/repos/emacs-rime/" "~/elisp_packages/rime/" "~/elisp_packages/librime/" "~/Desktop/emacs.d/rime-conf.el" "~/.doom.d/modules/" "~/.doom.d" "~/Desktop/emacs.d/suffix tree/test ground.txt" "~/Desktop/emacs.d/suffix tree/suffix tree test ground.txt" "test ground.txt" "suffix-tree.el" "~/Desktop/emacs.d/suffix tree/ST.cpp" "~/Desktop/emacs.d/suffix tree/suffix-tree.el" "~/Desktop/emacs.d/comb/reference geeks for geeks.txt" "~/Downloads/" "~/Desktop/emacs.d/comb/" "~/Desktop/emacs.d/comb/generalized-suffix-tree.el" "~/Desktop/emacs.d/comb/generalized suffix tree.el" "~/Desktop/emacs.d/comb/test ground.txt" "~/Desktop/emacs.d/comb/test ground (windows).txt" "~/Desktop/emacs.d/comb/test ground" "~/Desktop/emacs.d/comb/ST.cpp" "ST.cpp" "comb/pdf reading progress.txt" "~/Desktop/Centre/Introduction to algebra/Questions/semi-direct products/" "~/Desktop/Centre/Introduction to algebra/Questions/semi-direct products/answer.pdf" "~/Desktop/Centre/Introduction to algebra/Questions/groups of order 1575/groups of order 1575.tex" "~/Desktop/Centre/Introduction to algebra/Questions/semi-direct products/answer.tex" "~/Desktop/Centre/Introduction to algebra/Questions/semi-direct products" "~/Desktop/Centre/Introduction to algebra/" "~/Desktop/Centre/Introduction to algebra/Questions/question.pdf" "~/Desktop/emacs.d/comb/suffiex-tree.txt" "~/Desktop/emacs.d/center-buffer.el" "~/Desktop/emacs.d/comb" "~/Desktop/emacs.d/comb/pdf reading progress.txt" "~/Desktop/emacs.d/ibuffer.el" "~/Desktop/emacs.d/comb/suffix-tree.el" "~/elisp_packages/hierarchy/hierarchy.el" "~/elisp_packages" "~/elisp_packages/embark/embark.el" "~/elisp_packages/embark" "~/Desktop/nnmaildir+private:private" "~/.doom.d/modules/email/durand-gnus/README.org" "~/.doom.d/modules/email/durand-gnus/config.el" "~/Desktop/emacs.d/comb/*Summary nntp+news.gmane.io:gmane.emacs.devel*.ps" "~/Desktop/emacs.d/bongo.el" "~/elisp_packages/hierarchy" "~/.doom.d/modules/emacs/durand-ibuffer/config.el" "~/.doom.d/init.el" "~/.doom.d/modules/app/durand-bongo/autoload.el" "~/.doom.d/modules/app/durand-bongo/config.el" "~/Desktop/emacs.d/comb/comb.el" "~/.newsrc.eld" "~/.newsrc" "~/.nnmaildir/private" "~/.nnmaildir/" "~/.nnmaildir" "~/Desktop" "~/.gnus.el" "~/Desktop/emacs.d/GNU Emacs integrated computing environment | Protesilaos Stavrou.pdf" "/Users/durand/.gnus.el" "~/Desktop/Centre/Mes notes/casual notes/links.txt" "~/Desktop/Centre/Mes notes/casual notes" "~/Desktop/Centre/Mes notes/" "~/.doom.d/modules/editor/durand-evil/autoload.el" "~/.doom.d/modules/editor/durand-evil/config.el" "~/.doom.d/modules/editor/durand-evil/evil-setting.el" "~/.doom.d/autoload.el" "~/.doom.d/modules/email/durand-mu/autoload.el" "/Users/durand/.doom.d/modules/email/durand-mu/config.el" "~/Desktop/emacs.d/text-conf.el" "~/Desktop/emacs.d/modes/Concepts.txt" "~/Desktop/emacs.d/desktop-conf.el" "~/Desktop/emacs.d/backups" "~/Downloads/documents intéressants/Algorithms/On-line Construction Of Suffix Tree by Ukkonen in 1995.pdf" "~/Downloads/documents intéressants/Algorithms/algorithm 2.png" "~/Downloads/documents intéressants/Algorithms/" "~/Downloads/documents intéressants/Algorithms/overall algorithm in Ukkonen paper.png" "~/Desktop/emacs.d/comb/suffix-tree.txt" "/Users/durand/Downloads/documents intéressants/Algorithms/update procedure in Ukkonen paper.png" "/Users/durand/Downloads/documents intéressants/Algorithms/overall algorithm in Ukkonen paper.png" "/Users/durand/Downloads/documents intéressants/Algorithms/Algorithm 1 from Ukkonen paper.png" "~/Downloads/documents intéressants/Algorithms/overall algorithm in Ukkonen pdf.png" "~/Downloads/documents intéressants/Algorithms/update procedure in Ukkonen pdf.png" "~/Downloads/documents intéressants/Algorithms/Algorithm 1 from Ukkonen pdf.png" "~/Desktop/emacs.d/tab-conf.el" "~/Downloads/documents intéressants/Algorithms/Ukkonen power point.pdf" "~/Downloads" "~/Desktop/Centre/Musique/Chansons/Blama/文殊師利菩薩祈請文・多識仁波切 譯 ᴴᴰ དཔེ་སྐྲུན་ཁང་། ・Praise of Manjushri Bodhisattva.mp3" "/stackoverflow.com/questions/9452701/" "~/w.emacs.d/emacs/lisp/minibuffer.el" "~/Desktop/screen shot.png" "~/Desktop/Centre/Musique/Chansons/Chinois/辞洛 - Cover 一生獨一 -GY8130qPqW8.mkv" "~/Desktop/Centre/Musique/Chansons/Chinois/程響 - 世界這麼大還是遇見你 -wRmedql89Ro.webm" "~/Desktop/emacs.d/dired-conf.el" "~/Desktop/emacs.d/common.el" "~/Desktop/emacs.d/recentf-conf.el" "~/Desktop/test.png" "~/Desktop/Centre/PDF/" "~/Downloads/Algorithms on Strings, Trees, and Sequences Computer Science and Computational Biology by Dan Gusfield (z-lib.org).djvu"))
+(setq tags-table-list '("/Users/durand/elisp_packages/suffix array/sais-lite-2.4.1/TAGS" "/Users/durand/w.emacs.d/emacs/src/TAGS"))
+(setq search-ring '(#("cdr" 0 3 (isearch-regexp-function nil isearch-case-fold-search t)) #("pdf-tools" 0 9 (isearch-regexp-function nil isearch-case-fold-search t)) #("size" 0 4 (isearch-regexp-function nil isearch-case-fold-search t)) #("image-dis" 0 9 (isearch-case-fold-search t isearch-regexp-function nil)) #("floor" 0 5 (isearch-regexp-function nil isearch-case-fold-search t)) #("?d" 0 2 (isearch-regexp-function nil isearch-case-fold-search t)) #("insi" 0 4 (isearch-regexp-function nil isearch-case-fold-search t)) #("view-i" 0 6 (isearch-regexp-function nil isearch-case-fold-search t)) #("?j" 0 2 (isearch-regexp-function nil isearch-case-fold-search t)) #("raise" 0 5 (isearch-regexp-function nil isearch-case-fold-search t)) #("C-x C-c" 0 7 (isearch-regexp-function nil isearch-case-fold-search nil)) #("sais" 0 4 (isearch-regexp-function nil isearch-case-fold-search t)) #("&rest" 0 5 (isearch-case-fold-search t isearch-regexp-function nil)) #("mark" 0 4 (isearch-case-fold-search t isearch-regexp-function nil)) #("position-to-" 0 12 (isearch-case-fold-search t isearch-regexp-function nil)) #("jump" 0 4 (isearch-case-fold-search t isearch-regexp-function nil))))
+(setq regexp-search-ring '(#("save" 0 4 (isearch-case-fold-search t)) #("n" 0 1 (isearch-case-fold-search t)) #("head" 0 4 (isearch-case-fold-search t)) #("directory" 0 9 (isearch-case-fold-search t)) #("starts" 0 6 (isearch-case-fold-search t)) #(")$" 0 2 (isearch-case-fold-search t)) #("int" 0 3 (isearch-case-fold-search t)) #("nano_multiplier" 0 15 (isearch-case-fold-search t)) #("h\"" 0 2 (isearch-case-fold-search t)) #("^l" 0 2 (isearch-case-fold-search t)) #("intb" 0 4 (isearch-case-fold-search t)) #("inta" 0 4 (isearch-case-fold-search t)) #("durand-search-replace-symbol" 0 28 (isearch-case-fold-search t)) #("^e" 0 2 (isearch-case-fold-search t)) #("^install" 0 8 (isearch-case-fold-search t)) #("^ \\{2\\}\\$" 0 1 (isearch-case-fold-search t) 1 9 (isearch-case-fold-search t))))
+(setq register-alist '((109 file-query "/Users/durand/elisp_packages/suffix array/sais.el" 14600) (102 . #(";;;###autoload\n(defface )" 0 3 (face font-lock-comment-delimiter-face) 3 6 (face font-lock-comment-face) 6 13 (face (font-lock-warning-face font-lock-warning-face)) 13 14 (rear-nonsticky t face (font-lock-warning-face font-lock-warning-face)) 14 15 (face font-lock-comment-face) 16 23 (face font-lock-keyword-face))) (100 . #(";;;###autoload\n(defun )" 0 3 (fontified t face font-lock-comment-delimiter-face) 3 6 (fontified t face font-lock-comment-face) 6 13 (fontified t face (font-lock-warning-face font-lock-warning-face)) 13 14 (fontified t rear-nonsticky t face (font-lock-warning-face font-lock-warning-face)) 14 15 (fontified t face font-lock-comment-face) 15 16 (fontified t) 16 21 (fontified t face font-lock-keyword-face) 21 22 (fontified t) 22 23 (fontified t))) (118 . #(";;;###autoload\n(defvar )" 0 3 (fontified t face font-lock-comment-delimiter-face) 3 6 (fontified t face font-lock-comment-face) 6 13 (fontified t face (font-lock-warning-face font-lock-warning-face)) 13 14 (fontified t rear-nonsticky t face (font-lock-warning-face font-lock-warning-face)) 14 15 (fontified t face font-lock-comment-face) 15 16 (fontified t) 16 22 (fontified t face font-lock-keyword-face) 22 23 (fontified t) 23 24 (fontified t))) (97 . #(";;;###autoload" 0 3 (fontified t face font-lock-comment-delimiter-face) 3 6 (fontified t face font-lock-comment-face) 6 13 (fontified t face (font-lock-warning-face font-lock-warning-face)) 13 14 (rear-nonsticky t fontified t face (font-lock-warning-face font-lock-warning-face))))))
+(setq file-name-history '("~/.doom.d/modules/config/durand-ideal/autoload.el" "~/.doom.d/modules/tools/durand-pdf/autoload.el" "~/.doom.d/modules/tools/durand-pdf/" "modules/tools/durand-pdf/README.org" "~/.doom.d/config.el" "~/.doom.d/" "~/Desktop/Centre/PDF/Pas encore lu/" "~/.emacs.d/basic.el" "~/elisp_packages/suffix array/sais-lite-2.4.1/is_orig.c" "~/elisp_packages/suffix array/" "~/elisp_packages/suffix array/Permuted Longest Common Prefix Array by Kärkkäinen et al.pdf" "~/elisp_packages/suffix array/Dynamic LCA Queries on Trees by Richard Cole & Ramesh Hariharan.pdf" "~/Downloads/" "~/elisp_packages/suffix array/Inducing the LCP Array by Johannes Fischer.pdf" "~/elisp_packages/pdf-tools/server/" "~/elisp_packages/pdf-tools/" "~/elisp_packages/pdf-tools/lisp/pdf-isearch.el" "~/elisp_packages/pdf-tools/lisp/pdf-macs.el" "~/.emacs.d/init.el" "~/.emacs.d/pdf.el" "~/elisp_packages/pdf-tools/lisp/pdf-outline.el" "~/elisp_packages/pdf-tools/lisp/pdf-history.el" "~/elisp_packages/pdf-tools/lisp/pdf-virtual.el" "~/elisp_packages/pdf-tools/lisp/pdf-links.el" "~/Desktop/Centre/Mes notes/Les Notes/About Stacks Project/splitting principle.pdf" "~/Desktop/Centre/PDF/Pas encore lu/composition of roofs in derived category.pdf" "~/elisp_packages/rlist/" "~/elisp_packages/rlist/README.org" "~/elisp_packages/rlist/.gitignore" "~/elisp_packages/rlist/patch 4.patch" "~/elisp_packages/rlist/patch 3.patch" "/Users/durand/elisp_packages/rlist/patch 1.patch" "~/elisp_packages/rlist/patch 2.patch" "~/elisp_packages/rlist/rlist.el" "~/elisp_packages/rlist/patche 1.patch" "~/.emacs.d/gnus-conf.el" "~/org/math_article_links.org" "~/elisp_packages/emacs-rime/lib.c" "~/.emacs.d/rime-conf.el" "~/.emacs.d/rime/" "~/.emacs.d/rime" "~/elisp_packages/emacs-rime/" "~/elisp_packages/librime/" "~/elisp_packages/rfi/" "~/elisp_packages/suffix tree/" "~/elisp_packages/durand-simple/" "~/.emacs.d/org-conf.el" "~/.emacs.d/magit-conf.el" "~/elisp_packages/" "~/elisp_packages/suffix tree/LCS.el" "~/elisp_packages/suffix tree/generalized-suffix-tree.el" "/Applications/Org Protocol Handler.app/Contents/Resources/" "/Applications/Org Protocol Handler.app/Contents/Resources/Scripts/main.scpt" "/Applications/Org Protocol Handler.app/Contents/Resources/parse.py" "~/org/youtube_links.org" "/Users/durand/w.emacs.d/emacs/doc/misc/calc.pdf" "~/elisp_packages/suffix array/development diary.txt" "/Users/durand/elisp_packages/suffix array/development diary.txt" "~/elisp_packages/suffix array/.gitignore" "~/elisp_packages/suffix array/developpement diary.txt" "~/.emacs.d/ibuffer.el" "~/elisp_packages/rlist/ChangeLog.txt" "~/.emacs.d/" "~/.emacs.d/completion-conf.el" "~/.emacs.d/dired-conf.el" "~/.doom.d/banners/default.png" "~/.emacs.d/dashboard.el" "~/.emacs.d/bongo.el" "~/tree/master" "~/Desktop" "/usr/local/share/info/" "~/.emacs.d/abbrev_defs" "~/elisp_packages/temp" "~/elisp_packages/rlist" "~/elisp_packages/durand-simple/durand-simple.el" "~/.emacs.d/desktop" "~/.emacs.d/register-conf.el" "~/w.emacs.d/emacs/src/" "/usr/local/share/emacs/27.1.90/lisp/hippie-exp.el.gz" "/var/folders/66/5zmyxj_11fjcgnzw1pc9lz800000gn/T/docview501/" "/usr/local/bin/gs" "/Users/durand/Desktop/Centre/A propos de programmes/C/for loop question/question.txt" "~/Desktop/Centre/A propos de programmes/C/for loop question/" "~/Desktop/" "~/Desktop/Prop 5.15.png" "~/.doom.d/banners/" "~/.doom.d/banner" "~/Desktop/Centre/" "~/.emacs.d" "~/Desktop/Centre/A propos de programmes/C/for loop question/question.c" "~/Desktop/Centre/A propos de programmes/C/" "~/.emacs.d/*el" "~/.emacs.d/*/*.el" "~/Desktop/Centre/A propos de programmes/C/for loop question/back.c" "/usr/local/share/emacs/27.1.90/lisp/" "~/.emacs.d/view-conf.el" "/usr/local/" "~/.emacs.d/backups" "~/Desktop/Centre/A propos de programmes/C/for loop question/C file.zip" "~/elisp_packages/suffix array/sais-lite-2.4.1/test.c" "/usr/local/share/emacs/27.1.90/lisp/eshell/" "~/.emacs.d/eshell-conf.el" "~/Desktop/a style.el" "~/.emacs.d/eshell" "~/.marks/" "~/.emacs.d/eshell/" "~/elisp_packages/suffix array/sais-lite-2.4.1/tags" "~/elisp_packages/suffix array/sais.el" "~/Desktop/Centre/Documents partout/Articles politiques/On platformarchs, the demi-state, and deplatforming.txt" "~/.emacs.d/center-buffer.el" "~/elisp_packages/olivetti/" "~/Desktop/doom.emacs.d/.local/straight/repos/olivetti/" "~/Desktop/doom.emacs.d/.local/straight/repos/olivetti/olivetti.el" "~/.doom.d/modules/app/durand-bongo/autoload.el" "~/elisp_packages/suffix array/sais-lite-2.4.1/sais.c" "~/Desktop/Centre/Musique/Chansons/Anglais/Jada Facer/Jada Facer - cover of Faded by Alan Walker.webm" "~/Desktop/Centre/Musique/Chansons/Pure/" "/www.youtube.com/watch?v=9U0XVdvQwAI" "~/.emacs.d/org-pdftools.el" "~/.emacs.d/.gitignore" "~/Desktop/emacs.d/" "~/.emacs.d/bookmarks" "~/Desktop/emacs.d/view-conf.el" "~/Desktop/emacs.d/basic.el" "~/.doom.d/modules/editor/durand-evil/autoload.el" "~/.doom.d/modules/editor/durand-evil/evil-setting.el" "~/.doom.d/modules/ui/durand-dashboard/autoload.el" "~/.doom.d/modules/lang/durand-org/autoload.el" "/Users/durand/.doom.d/" "//org-protocol:/capture?template=L&url=http:/www.t66y.com/htm_data/2101/15/4301994.html&title=[HD/3.0G] 390JAC-076 超ハメ潮連発×なまなか6連発 超バドミントン部あかりちゃん 23歳 潮吹き部長 - 亞洲有碼原創區 | 草榴社區 - t66y.com&selection=" "~/Desktop/emacs.d/org-conf.el" "~/elisp_packages/suffix array/sais-lite-2.4.1/sais.hxx" "~/elisp_packages/suffix array/sais-lite-2.4.1/sais.hyy" "~/elisp_packages/suffix array/sais-lite-2.4.1/durand.c" "~/elisp_packages/suffix array/Linear Suffix Array Construction by Almost Pure Induced-Sorting.pdf" "~/Downloads/documents intéressants/p-adiques/crystalline/Complexe de de Rham Witt et cohomologie crystalline.pdf" "~/Desktop/Centre/Documents partout/Articles politiques/" "~/Desktop/Centre/Documents partout/Articles politiques" "~/Desktop/On platformarchs, the demi-state, and deplatforming.txt" "~/Desktop/test.txt" "~/Desktop/emacs.d/init.el" "~/Desktop/emacs.d/tab-conf.el" "~/Desktop/emacs.d/common.el" "~/Desktop/emacs.d/gnus-conf.el" "//org-protocol:/capture?template=L&url=https:/www.youtube.com/watch?v=9KAp_zWeI34&title=Automating Everything in Linux with ENTR! - YouTube&selection=" "~/elisp_packages/suffix array/sais-lite-2.4.1/" "/Users/durand/Desktop/donut.c" "~/elisp_packages/suffix array/sais-lite-2.4.1/README" "~/Desktop/emacs.d/embark-conf.el" "/Users/durand/elisp_packages/suffix array/sais-lite-2.4.1/sais.hxx" "~/elisp_packages/suffix array/sais-lite-2.4.1/Makefile" "~/" "~/elisp_packages/suffix array/sa.el" "~/Desktop/Centre/Vidéos/Vlog - Emacs is my 'favourite Emacs package'-RiXK7NALgRs.mkv" "~/elisp_packages/transpose-frame/transpose-frame.el" "~/elisp_packages/transpose-frame" "~/.emacs.d/.local/straight/repos/emacs-libvterm/vterm.el" "~/.emacs.d/.local/straight/repos/emacs-libvterm/vterm-module.h" "/Users/durand/.emacs.d/.local/straight/repos/emacs-libvterm/emacs-module.h" "~/elisp_packages/suffix array/Induced Sorting.pdf" "~/Downloads/Induced Sorting.pdf" "~/elisp_packages/suffix array/Building suffix arrays.pdf" "~/Downloads/Small04.pdf" "~/elisp_packages/suffix array/sais-lite-2.4.1/suftest.c" "~/elisp_packages/suffix array/sais-lite-2.4.1/sais.h" "~/Desktop/emacs.d/modeline.el" "~/Desktop/emacs.d/ibuffer.el" "~/elisp_packages/suffix array" "~/Desktop/emacs.d/modes/modes.el" "~/Desktop/emacs.d/completion-conf.el" "~/Desktop/emacs.d/comb/orderless-conf.el" "~/org/notes.org" "~/org/grec/vocab.org" "~/org/aujourdhui.org" "~/elisp_packages/suffix tree/LCA.el" "Algorithms on Strings, Trees, and Sequences Computer Science and Computational Biology by Dan Gusfield (z-lib.org).pdf" "~/Downloads/documents intéressants/grec/" "~/Desktop/Centre/Tibetan/" "~/Downloads/documents intéressants/AG/" "~/Downloads/documents intéressants/Algorithms/" "~/elisp_packages/suffix tree/test.el" "LCS.el" "~/.doom.d/modules/completion/durand-completion/autoload.el" "~/elisp_packages/protesilaos/prot-simple.el" "~/w.emacs.d/emacs/" "~/Desktop/emacs.d/dashboard.el" "~/elisp_packages/suffix tree/README.org" "~/Desktop/Centre/Musique/Chansons/Chinois" "~/Desktop/Centre/Musique/Chansons/Chinois/" "~/Desktop/emacs.d/bongo.el" "/usr/share/info/" "/usr/share/info/dir" "~/elisp_packages/bongo/" "~/elisp_packages/bongo/bongo.info" "/usr/local/share/info" "/Users/durand/elisp_packages/bongo/" "/usr/local/share/info/bongo.info" "/usr/local/share/info/dir" "/usr/local/share/info/ccmode.info.gz" "/usr/local/share/info/elisp.info.gz" "~/elisp_packages/bongo/bongo.texi" "~/elisp_packages/suffix tree/.gitignore" "~/Downloads/kmismatches.ppt" "~/Desktop/Centre/A propos de programmes/C" "~/Desktop/Centre/A propos de programmes/Extreme C Taking You To The Limit In Concurrency, OOP, And The Most Advanced Capabilities Of C by Kamran Amini (z-lib.org).pdf" "~/Desktop/Centre/A propos de programmes/" "~/Downloads/Extreme C Taking You To The Limit In Concurrency, OOP, And The Most Advanced Capabilities Of C by Kamran Amini (z-lib.org).pdf" "~/Desktop/emacs.d/magit-conf.el" "~/elisp_packages/protesilaos/modus-themes/" "~/Desktop/emacs.d/text-conf.el" "~/Desktop/emacs.d/center-buffer.el" "~/Desktop/emacs.d/modes/Concepts.txt" "~/w.emacs.d/emacs/src/TAGS" "~/Downloads/TARelfectionReport_Chinese.odt" "~/.doom.d/autoload.el" "~/.doom.d" "~/Desktop/Centre/A propos de programmes/CPP/breakout/" "~/elisp_packages/suffix tree/Changelog" "~/elisp_packages/dired-subtree/dired-subtree.el" "~/org/aujourdhui.org_archive" "~/org/agenda.org" "~/Downloads/Guide-of-report.pdf" "~/Desktop/grades.csv" "~/org/notes(1).org_archive" "~/org/notes.org_archive" "~/Desktop/emacs.d/eww-bookmarks" "~/Desktop/emacs.d/.gitignore" "~/Desktop/emacs.d/search-conf.el" "~/Desktop/emacs.d/eww-conf.el" "~/Desktop/emacs.d/init" "~/Desktop/emacs.d/basic" "~/elisp_packages/durand-simple" "~/Desktop/emacs.d/elisp.el" "~/Downloads/camarades/Kuei You/" "~/Downloads/camarades/" "~/Downloads/emacs_.emacs.d_straight_repos_prot-lisp_prot-simple.el" "/www.monodoncoffee.com/products/drip-coffee-gift-box-30-pack" "~/elisp_packages/suffix tree/Archives" "~/Desktop/emacs.d/comb/pdf reading progress.txt" "~/w.emacs.d/emacs/src/xdisp.c" "~/w.emacs.d/emacs/src/dispextern.h" "~/elisp_packages/suffix tree/suffiex-tree.txt" "~/Desktop/emacs.d/dired-conf.el" "~/Desktop/emacs.d/rime-conf.el" "~/Desktop/emacs.d/org-pdftools.el" "~/elisp_packages/pdf-tools/lisp/pdf-occur.el" "~/elisp_packages/pdf-tools/Cask" "/Users/durand/elisp_packages/pdf-tools/server/Makefile" "/Users/durand/elisp_packages/pdf-tools/server/autogen.sh" "/Users/durand/elisp_packages/pdf-tools/Cask" "/Users/durand/elisp_packages/pdf-tools/Makefile" "~/Downloads/documents intéressants/Algorithms/Algorithms on Strings, Trees, and Sequences Computer Science and Computational Biology by Dan Gusfield (z-lib.org).pdf" "~/org/roam/2020-10-04--09-34-57-pseudo_coherent_complexes_of_modules_over_rings.org" "/Users/durand/w.emacs.d/emacs/nextstep/README" "/Users/durand/w.emacs.d/emacs/Makefile" "/Users/durand/w.emacs.d/emacs/src/Makefile" "~/w.emacs.d/emacs/nextstep/INSTALL" "/Users/durand/w.emacs.d/emacs/INSTALL" "/Users/durand/w.emacs.d/emacs/README" "basic.el" "/usr/local/Cellar/emacs-plus@27/27.1/share/emacs/27.1/lisp/" "~/Desktop/emacs.d/testing" "/Users/durand/elisp_packages/suffix tree/" "~/.doom.d/modules/config/durand-ideal/config.el" "~/Desktop/Centre/Échecs/" "~/Desktop/Centre/TeX/" "~/Desktop/Centre/Pour thèse/" "~/Desktop/Centre/À propos de NTU/" "~/Desktop/Centre/Mes notes/" "~/Desktop/Centre/LaTeX temporaire/" "~/elisp_packages/durand-chercher-pdf/LICENSE" "~/elisp_packages/durand-chercher-pdf/durand-chercher-pdf.el" "~/elisp_packages/durand-chercher-pdf" "~/Desktop/Centre/Musique" "~/Desktop/Centre/Musique/playlists/" "/Users/durand/Desktop/Centre/Musique/Chansons/Chinois/言奕、陳華 - OUR CHANNEL COVER 鄧福如 - 如果有如果.mkv" "~/.emacs.d/.local/straight/repos/olivetti/olivetti.el" "~/Desktop/emacs.d/a/suffix tree/suffix-tree.el" "~/Desktop/emacs.d/a/suffix tree/suffix tree test ground.txt" "~/Desktop/emacs.d/a/suffix tree/suffiex-tree.txt" "~/Desktop/emacs.d/a/suffix tree/lcs test ground.txt" "~/Desktop/emacs.d/a/suffix tree/gst test ground.txt" "~/Desktop/emacs.d/a/suffix tree/gst test ground (2).txt" "~/Desktop/emacs.d/a/suffix tree/gst debugging platform.txt" "~/Desktop/emacs.d/a/suffix tree/generalized-suffix-tree.el" "~/Desktop/emacs.d/a/suffix tree/ST.cpp" "~/Desktop/emacs.d/a/suffix tree/LCS.el" #("/dev/null" 0 9 (fontified nil)) "~/Desktop/emacs.d/suffix tree/" "/Users/durand/w.emacs.d/emacs/BUGS" "~/org/" "~/w.emacs.d/emacs/ChangeLog.3" "/Users/durand/w.emacs.d/emacs/ChangeLog.1" "~/w.emacs.d/emacs" "~/Desktop/emacs.d/theme.el" "~/Desktop/emacs.d/suffix tree/suffiex-tree.txt" "~/Desktop/emacs.d/suffix tree/generalized-suffix-tree.el" "~/w.emacs.d/emacs/etc/" "~/w.emacs.d/" "~/Desktop/emacs.d/a/view-functions.el" "~/elisp_packages/protesilaos/" "~/Desktop/emacs.d/suffix tree/LCS.el" "~/Desktop/suffix tree/" "~/Desktop/suffix tree/generalized-suffix-tree.el" "~/Desktop/suffix tree/LCS.el" "/Users/durand/elisp_packages/" "~/Desktop/emacs.d/suffix tree/gst debugging platform.txt" "~/Desktop/emacs.d/suffix tree/ST.cpp" "suffiex-tree.txt" "~/Desktop/emacs.d/suffix tree/su- txt" "suffix-tree.el" "~/Desktop/emacs.d/suffix tree/gst test ground (2).txt" "~/Downloads/documents intéressants/Algorithms/Algorithm 1 from Ukkonen paper.png" "~/Downloads/documents intéressants/Algorithms/On-line Construction Of Suffix Tree by Ukkonen in 1995.pdf" "~/Desktop/emacs.d/view-functions.el" "~/Desktop/Centre/A propos de programmes/CPP/donut" "~/Desktop/Centre/A propos de programmes/CPP" "~/Desktop/Centre/Introduction to algebra/Final/" "~/Desktop/Centre/Introduction to algebra/Final/Introduction_to_Algebra_I__Final (2).pdf" "~/Desktop/Centre/Introduction to algebra/Final/Introduction_to_Algebra_I__Final (1).pdf" "~/Desktop/Centre/Introduction to algebra/Final" "~/Desktop/Centre/Introduction to algebra/" "~/Desktop/Centre/Introduction to algebra/Introduction_to_Algebra_I__Final (1).pdf" "~/Desktop/Centre/Introduction to algebra/Introduction_to_Algebra_I__Final.pdf" "~/Desktop/emacs.d/desktop" "~/Desktop/emacs.d/suffix tree/save-new" "~/Desktop/emacs.d/suffix tree/suffix tree files.zip" "~/Desktop/emacs.d/suffix tree/gst test ground.txt" "~/Desktop/emacs.d/suffix tree" "~/elisp_packages/magit/lisp/magit.el" "~/Desktop/emacs.d/suffix tree/basic.el" "~/elisp_packages/hierarchy/" "~/Desktop/emacs.d/flymake-conf.el" "aujourdhui.org_a" "~/Desktop/emacs.d/save-new" "gst test ground.txt" "~/Desktop/emacs.d/suffix tree/lcs test ground.txt" "~/Desktop/emacs.d/rime" "~/elisp_packages/magit/lisp/" "~/elisp_packages/magit/lisp/magit-core.el" "~/elisp_packages/magit/Makefile" "~/.emacs.d/.local/straight/repos/magit" "~/.doom.d/modules/lang/durand-org/config.el" "~/.doom.d/modules/lang/durand-org/" "~/.emacs.d/.local/straight/build/pdf-tools/" "~/Desktop/emacs.d/pdf.el" "/etc/passwd" "/usr/local/etc/dovecot/dovecot.passwd" "/usr/local/etc/dovecot/conf.d/10-master.conf" "/usr/local/etc/dovecot/conf.d/10-auth.conf" "/usr/local/etc/dovecot/conf.d/10-mail.conf" "/usr/local/etc/dovecot/dovecot.conf" "/usr/local/etc/dovecot/" "/usr/local/etc/dovecot/passwd.master" "/etc/shadow" "/usr/local/etc/dovecot/conf.d/10-ssl.conf" "/usr/local/var/run/dovecot/" "/usr/local/var/run/dovecot/dovecot.conf" "~/mbsync" "/usr/local/Cellar/dovecot/2.3.10.1/share/doc/dovecot/example-config/dovecot.conf" "/usr/local/Cellar/dovecot/2.3.10.1/share/doc/dovecot/example-config/conf.d/10-master.conf" "/usr/local/Cellar/dovecot/2.3.10.1/share/doc/dovecot/example-config/" "~/Desktop/emacs.d/suffix tree/suffix-tree files.zip" "~/Desktop/emacs.d/suffix tree/suffix-tree files" "~/.authinfo" "~/.authinfo.gpg" "~/.mbsyncrc" "~/Desktop/emacs.d/test.gpg" "~/Desktop/emacs.d/mail.el" "/usr/local/etc/openssl/gmail.crt" "/Users/durand/.mbsyncrc" "~/.doom.d/modules/email/durand-mu/" "~/w.emacs.d/emacs/src/lisp.h" "~/Desktop/emacs.d/backups/" "~/elisp_packages/embark/" "~/elisp_packages/orqura/tequela.el" "~/.emacs.d/.local/straight/repos/doom-modeline/doom-modeline-core.el" "~/.emacs.d/.local/straight/repos/doom-modeline/doom-modeline-env.el" "~/.emacs.d/.local/straight/repos/doom-modeline/doom-modeline-segments.el" "~/.emacs.d/modules/ui/modeline/config.el" "~/.emacs.d/.local/straight/repos/dash.el/" "~/.emacs.d/.local/straight/repos/emacs-rime/" "~/elisp_packages/rime/" "~/.doom.d/modules/" "~/Desktop/emacs.d/suffix tree/test ground.txt" "~/Desktop/emacs.d/suffix tree/suffix tree test ground.txt" "test ground.txt" "~/Desktop/emacs.d/suffix tree/suffix-tree.el" "~/Desktop/emacs.d/comb/reference geeks for geeks.txt" "~/Desktop/emacs.d/comb/" "~/Desktop/emacs.d/comb/generalized-suffix-tree.el" "~/Desktop/emacs.d/comb/generalized suffix tree.el" "~/Desktop/emacs.d/comb/test ground.txt" "~/Desktop/emacs.d/comb/test ground (windows).txt" "~/Desktop/emacs.d/comb/test ground" "~/Desktop/emacs.d/comb/ST.cpp" "ST.cpp" "comb/pdf reading progress.txt" "~/Desktop/Centre/Introduction to algebra/Questions/semi-direct products/" "~/Desktop/Centre/Introduction to algebra/Questions/semi-direct products/answer.pdf" "~/Desktop/Centre/Introduction to algebra/Questions/groups of order 1575/groups of order 1575.tex" "~/Desktop/Centre/Introduction to algebra/Questions/semi-direct products/answer.tex" "~/Desktop/Centre/Introduction to algebra/Questions/semi-direct products" "~/Desktop/Centre/Introduction to algebra/Questions/question.pdf" "~/Desktop/emacs.d/comb/suffiex-tree.txt" "~/Desktop/emacs.d/comb" "~/Desktop/emacs.d/comb/suffix-tree.el" "~/elisp_packages/hierarchy/hierarchy.el" "~/elisp_packages" "~/elisp_packages/embark/embark.el" "~/elisp_packages/embark" "~/Desktop/nnmaildir+private:private" "~/.doom.d/modules/email/durand-gnus/README.org" "~/.doom.d/modules/email/durand-gnus/config.el" "~/Desktop/emacs.d/comb/*Summary nntp+news.gmane.io:gmane.emacs.devel*.ps" "~/elisp_packages/hierarchy" "~/.doom.d/modules/emacs/durand-ibuffer/config.el" "~/.doom.d/init.el" "~/.doom.d/modules/app/durand-bongo/config.el" "~/Desktop/emacs.d/comb/comb.el" "~/.newsrc.eld" "~/.newsrc" "~/.nnmaildir/private" "~/.nnmaildir/" "~/.nnmaildir" "~/.gnus.el" "~/Desktop/emacs.d/GNU Emacs integrated computing environment | Protesilaos Stavrou.pdf" "/Users/durand/.gnus.el" "~/Desktop/Centre/Mes notes/casual notes/links.txt" "~/Desktop/Centre/Mes notes/casual notes" "~/.doom.d/modules/editor/durand-evil/config.el" "~/.doom.d/modules/email/durand-mu/autoload.el" "/Users/durand/.doom.d/modules/email/durand-mu/config.el" "~/Desktop/emacs.d/desktop-conf.el" "~/Desktop/emacs.d/backups" "~/Downloads/documents intéressants/Algorithms/algorithm 2.png" "~/Downloads/documents intéressants/Algorithms/overall algorithm in Ukkonen paper.png" "~/Desktop/emacs.d/comb/suffix-tree.txt" "/Users/durand/Downloads/documents intéressants/Algorithms/update procedure in Ukkonen paper.png" "/Users/durand/Downloads/documents intéressants/Algorithms/overall algorithm in Ukkonen paper.png" "/Users/durand/Downloads/documents intéressants/Algorithms/Algorithm 1 from Ukkonen paper.png" "~/Downloads/documents intéressants/Algorithms/overall algorithm in Ukkonen pdf.png" "~/Downloads/documents intéressants/Algorithms/update procedure in Ukkonen pdf.png" "~/Downloads/documents intéressants/Algorithms/Algorithm 1 from Ukkonen pdf.png" "~/Downloads/documents intéressants/Algorithms/Ukkonen power point.pdf" "~/Downloads" "~/Desktop/Centre/Musique/Chansons/Blama/文殊師利菩薩祈請文・多識仁波切 譯 ᴴᴰ དཔེ་སྐྲུན་ཁང་། ・Praise of Manjushri Bodhisattva.mp3" "/stackoverflow.com/questions/9452701/" "~/w.emacs.d/emacs/lisp/minibuffer.el" "~/Desktop/screen shot.png" "~/Desktop/Centre/Musique/Chansons/Chinois/辞洛 - Cover 一生獨一 -GY8130qPqW8.mkv" "~/Desktop/Centre/Musique/Chansons/Chinois/程響 - 世界這麼大還是遇見你 -wRmedql89Ro.webm" "~/Desktop/emacs.d/recentf-conf.el" "~/Desktop/test.png" "~/Desktop/Centre/PDF/" "~/Downloads/Algorithms on Strings, Trees, and Sequences Computer Science and Computational Biology by Dan Gusfield (z-lib.org).djvu"))
;; Buffer section -- buffers listed in same order as in buffer list:
-(desktop-create-buffer 208
- "/Users/durand/.newsrc-dribble"
- ".newsrc-dribble"
- 'fundamental-mode
- '(magit-file-mode)
- 1918
- '(nil nil)
- nil
- nil
- '((buffer-display-time) (buffer-file-coding-system . utf-8-unix))
- '((mark-ring nil)))
-
diff --git a/dired-conf.el b/dired-conf.el
index 861b57e..636fcb6 100644
--- a/dired-conf.el
+++ b/dired-conf.el
@@ -4,7 +4,7 @@
(require 'dired-x)
(require 'files)
(set 'insert-directory-program "gls")
-(set 'dired-listing-switches "-alh --group-directories-first")
+(set 'dired-listing-switches "-alh --dired --group-directories-first")
(setq dired-dwim-target t)
(require 'dired-aux)
@@ -17,3 +17,7 @@
(setq wdired-allow-to-change-permissions t)
(setq wdired-create-parent-directories t)
+
+(require 'image-dired)
+
+(setq image-dired-external-viewer "open")
diff --git a/eshell-conf.el b/eshell-conf.el
new file mode 100644
index 0000000..8d2951e
--- /dev/null
+++ b/eshell-conf.el
@@ -0,0 +1,271 @@
+;;; eshell-conf.el --- My configurations for Eshell -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2021 李俊緯
+
+;; Author: 李俊緯 <mmemmew@gmail.com>
+;; Keywords: terminals, tools, convenience
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This is my configuration file for Eshell, the shell emulation
+;; written in Emacs Lisp.
+
+;;; Code:
+
+(eval-when-compile
+ (require 'cl-lib)
+ (require 'esh-mode)
+ (require 'eshell))
+(require 'esh-util)
+(require 'ring)
+
+;; Eshell sets the keymap in the major mode function...
+
+;;;###autoload
+(add-hook 'eshell-mode-hook #'durand-set-eshell-keys)
+
+;;;###autoload
+(defun durand-set-eshell-keys ()
+ "Set my key-bindings."
+ (define-key eshell-mode-map (vector #xf) ; C-o
+ (lambda ()
+ (interactive)
+ (delete-region eshell-last-output-end (point))
+ (insert "clear t")
+ (eshell-send-input))))
+
+;;;###autoload
+(defun eshell/j (&rest args)
+ "Implementation of `j'.
+See `eshell-j' for the actual functionality."
+ (eshell-eval-using-options
+ "j" args
+ '((?r "recent" 'exclusive use-recent-p "Find in recent directories instead of symbolic links.")
+ (?a "all" nil use-recent-p "Find both in recent directories and in symbolic links.")
+ (?h "help" nil nil "Print this help message.")
+ :usage "[-hra] [short-cut]")
+ (eshell-j args use-recent-p)))
+
+;;;###autoload
+(defun durand-eshell-delete-dups (sequence &rest args)
+ "Delete duplicate elements in SEQUENCE.
+If the keyword argument TEST is non-nil, it should be a function
+with two arguments which tests for equality of elements in the
+sequence. The default is the function `equal'.
+
+If the keyword argument KEY is non-nil, it should be a function
+with one argument which returns the key of the element in the
+sequence to be compared by the test function. The default is the
+function `identity'.
+
+Note that this function is not supposed to change global state,
+including match data, so the functions in TEST and KEY are
+supposed to leave the global state alone as well.
+
+\(fn SEQUENCE &key TEST KEY)"
+ (declare (pure t) (side-effect-free t))
+ (let* ((len (length sequence))
+ (temp-obarray (obarray-make len))
+ (valid-key-num (+ (cond ((plist-member args :key) 1) (0))
+ (cond ((plist-member args :test) 1) (0))))
+ (key (cond ((cadr (plist-member args :key)))
+ (#'identity)))
+ (test-fn (cond ((cadr (plist-member args :test)))
+ (#'equal)))
+ found-table result)
+ (cond ((or (= (mod (length args) 2) 1)
+ (> (length args) (* 2 valid-key-num)))
+ (user-error "Invalid keyword arguments. Only :key and :test are allowed, but got %S"
+ args)))
+ ;; Note: This just puts a property to the symbol.
+ (define-hash-table-test 'durand-delete-dups-test
+ test-fn (function (lambda (obj) (intern (format "%S" obj) temp-obarray))))
+ (setq found-table (make-hash-table :test 'durand-delete-dups-test :size len))
+ (mapc
+ (function
+ (lambda (element)
+ (cond ((gethash (funcall key element) found-table))
+ ;; Abuse the fact that `puthash' always returns VALUE.
+ ((puthash (funcall key element) t found-table)
+ (setq result (cons element result))))))
+ sequence)
+ (nreverse result)))
+
+;;;###autoload
+(defun eshell-j (&optional short-cut use-recent-p)
+ "Jump to SHORT-CUT.
+Where this jumps to is determined by the symbolic links in the
+directory '~/.marks'. If USE-RECENT-P is non-nil, then also
+include recent directories in the list of candidates. Moreover,
+if USE-RECENT-P is 'exclusive, then only list the recent
+directories as candidates, unless there are no recent
+directories, in which case it falls back to use the marks as the
+candidates."
+ (let* ((mark-directory (expand-file-name "~/.marks"))
+ (short-cut (eshell-flatten-and-stringify short-cut))
+ (links (delq nil
+ (mapcar
+ (function
+ (lambda (name)
+ (cond
+ ((or (string= "." (file-name-nondirectory name))
+ (string= ".." (file-name-nondirectory name)))
+ nil)
+ (name))))
+ (directory-files mark-directory t short-cut t))))
+ (candidates (cond
+ ((and use-recent-p
+ (not (eq use-recent-p 'exclusive))
+ (ring-p eshell-last-dir-ring)
+ (not (ring-empty-p eshell-last-dir-ring)))
+ (append (mapcar (function
+ (lambda (file)
+ (cons (file-name-nondirectory file)
+ file)))
+ links)
+ (cond
+ ((string-match-p short-cut mark-directory)
+ (list (cons mark-directory mark-directory))))
+ (mapcar (function (lambda (file) (cons file file)))
+ (ring-elements eshell-last-dir-ring))))
+ ((and use-recent-p
+ (eq use-recent-p 'exclusive)
+ (ring-p eshell-last-dir-ring)
+ (not (ring-empty-p eshell-last-dir-ring)))
+ (mapcar (function (lambda (file) (cons file file)))
+ (ring-elements eshell-last-dir-ring)))
+ ((append
+ (mapcar (function
+ (lambda (file)
+ (cons (file-name-nondirectory file)
+ file)))
+ links)
+ (cond
+ ((string-match-p short-cut mark-directory)
+ (list (cons mark-directory mark-directory))))))))
+ ;; Delete duplicate items
+ (candidates
+ (durand-eshell-delete-dups
+ candidates
+ :test #'string=
+ ;; In Haskell this woule be a simple function composition.
+ :key (function (lambda (ls) (file-truename (cdr ls)))))))
+ (cond
+ ((null candidates)
+ (user-error "No candidates matching %s found" short-cut))
+ ((null (cdr candidates))
+ ;; Only one candidate
+ (eshell/cd (file-truename (cdar candidates))))
+ ((eshell/cd (file-truename
+ (cdr
+ (assoc
+ (let ((completion-regexp-list
+ (cons short-cut completion-regexp-list)))
+ (completing-read "Choose a link: " candidates nil t))
+ candidates #'string=))))))))
+
+;;;###autoload
+(defun eshell/l (&rest args)
+ "Equivalent with ls -ahl ARGS.
+If called without ARGS, then use ./ instead."
+ (eshell/ls "-hal" (or args "./")))
+
+;;;###autoload
+(defun eshell/r (&rest args)
+ "Replace the last command by the specifications in ARGS."
+ (eshell-eval-using-options
+ "r" args
+ '((?h "help" nil nil "Print this help message")
+ (?n "number" t last-number "Which last command to replace")
+ :usage "[-n number] [replacement specifications...]
+REPLACEMENT SPECIFICATIONS are pairs of the form MATCH=REPLACE.
+This command will find the last command, or the last N-th command
+if given the option -n, and replace any match of MATCH by
+REPLACE."
+ :preserve-args
+ :parse-leading-options-only
+ :show-usage)
+ (eshell-r args last-number)))
+
+;;;###autoload
+(defun eshell-r (args &optional last-number)
+ "Replace the LAST-NUMBER th command by ARGS.
+ARGS are pairs of the form MATCH=REPLACE. This command will find
+the last command, or the LAST-NUMBER-th command if LAST-NUMBER is
+non-nil, and replace the first match of MATCH by REPLACE.
+
+LAST-NUMBER is passed to `prefix-numeric-value': If it is nil,
+then it means 1; if it is a minus sign, then it means -1; if it
+is a cons cell, and its `car' is an integer, then it means its
+`car'; if it is an integer, then it means that integer; and any
+other value means 1."
+ (let* ((last-number (prefix-numeric-value last-number))
+ (args (mapcar (lambda (pair)
+ (split-string pair "="))
+ args))
+ (nth-last-command (ring-ref eshell-history-ring last-number))
+ temp)
+ ;; Transform ARGS to the required format.
+
+ ;; NOTE; Using `mapc' is recommended by the manual.
+ (mapc
+ (function
+ (lambda (arg)
+ (cond
+ ((and (consp arg)
+ (= (length arg) 2)
+ (stringp (car arg))
+ (stringp (cadr arg)))
+ (setq temp (cons arg temp)))
+ ((and (consp arg)
+ (= (length arg) 1)
+ (stringp (car arg)))
+ (setq temp (cons
+ (list (caar temp)
+ (concat (cadar temp) (cons 32 nil) (car arg)))
+ (cdr temp))))
+ ((user-error "Wrong specification: MATCH=REPLACE required, but got %S" arg)))))
+ args)
+ (setq args (nreverse temp))
+ ;; Replace the command
+ (save-match-data
+ (while (consp args)
+ (setq temp (car args))
+ (cond
+ ;; Cannot use `string-match-p' here.
+ ((string-match (car temp) nth-last-command)
+ (setq nth-last-command (replace-match
+ (or (cadr temp) "")
+ t nil nth-last-command))))
+ (setq args (cdr args))))
+ ;; Let the user know what the result of substitution is.
+ (eshell-printn nth-last-command)
+ ;; Check we don't do another r command.
+ (cond
+ ((and (/= (length nth-last-command) 0)
+ (= (aref nth-last-command 0) ?r)
+ (or (= (length nth-last-command) 1)
+ (= (aref nth-last-command 1) 32)))
+ (user-error "Repeating a repeating command. This is probably not what you want")))
+ (eshell-command-result nth-last-command)))
+
+(add-to-list 'eshell-expand-input-functions
+ #'eshell-expand-history-references)
+
+(setq eshell-list-files-after-cd t)
+
+(provide 'eshell-conf)
+;;; eshell-conf.el ends here
diff --git a/init.el b/init.el
index 2cd1ac7..253fbf8 100644
--- a/init.el
+++ b/init.el
@@ -1,10 +1,28 @@
-;;; -*- lexical-binding: t; -*-
+;;; init.el --- My configurations for GNU Emacs -*- lexical-binding: t; -*-
-;;; garbage collection threshold maneuvre
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+
+;;; Code:
+
+;; Garbage collection threshold maneuvre
(setq gc-cons-threshold (* 512 1024 1024))
-;;; tell me the start time at start-up
+;;; Tell me the start time at start-up
;;;###autoload
(defun message-start-time ()
@@ -19,11 +37,14 @@
;;;###autoload
(defvar load-file-directory (cond ((stringp load-file-name) (file-name-directory load-file-name))
(t default-directory))
- "The directory to load files")
+ "The directory to load files.")
+
+;; If this is a `defmacro', then the start time will be very long...
;;;###autoload
(defsubst load-config (file-name)
- "Conviently load configuration files in the same directory as this file."
+ "Conviently load configuration file FILE-NAME in the same \
+directory as `load-file-directory'."
(load-file (expand-file-name file-name load-file-directory)))
;;;###autoload
@@ -33,7 +54,7 @@
;;;###autoload
(defmacro prepare-in-hook-once (entry-name hook file)
- "Define a function called ENTRY-NAME that loads FILE in HOOK once."
+ "Define a function called ENTRY-NAME to load FILE in HOOK once."
`(progn
(defun ,entry-name ()
(interactive)
@@ -45,17 +66,28 @@
(defmacro load-after-function (function-name file-path doc redefine-p &rest def)
"Load FILE-PATH after FUNCTION-NAME.
After loading, execute DEF.
-Finally if REDEFINE-P is non-nil,
+Finally if REDEFINE-P is non-nil,
then FUNCTION-NAME will be defined as DEF after loading.
-If FUNCTION-NAME is already a valid function, this won't do anything."
+If FUNCTION-NAME is already a valid function, this advices the
+function instead of redefining the function, and REDEFINE-P has
+no effect."
(cond
- ((fboundp function-name))
- (t
- `(defun ,function-name ()
+ ((fboundp function-name)
+ `(let ((advice-symbol (intern
+ (format "%s-advice"
+ (symbol-name ',function-name)))))
+ (defalias advice-symbol
+ (lambda (&rest _args)
+ ,(format "Advice for %s.\nThis is generated by `load-after-function'." function-name)
+ (advice-remove ',function-name advice-symbol)
+ (load-file (expand-file-name ,file-path load-file-directory))
+ ,@def))
+ (advice-add ',function-name :after advice-symbol)))
+ (`(defun ,function-name ()
,doc
(interactive)
- (load-config ,file-path)
+ (load-file (expand-file-name ,file-path load-file-directory))
,@def
,(cond
(redefine-p
@@ -134,17 +166,13 @@ If FUNCTION-NAME is already a valid function, this won't do anything."
;;; gnus
-(load-config "gnus-conf.el")
-
-;;; comb
+(load-after-function gnus "gnus-conf.el" "Fake function to load gnus." nil
+ (gnus))
-;; (load-config "comb/comb.el")
-;; (load-config "comb/comb-annotation.el")
+(define-key global-map (vector 3 ?g) #'gnus)
;;; Completion framework configurations
-;; TODO: Write my own completion styles library
-;; (load-config "comb/orderless-conf.el")
(load-config "completion-conf.el")
;;; dired configurations
@@ -152,13 +180,27 @@ If FUNCTION-NAME is already a valid function, this won't do anything."
(prepare-in-hook-once prepare-dired dired-mode-hook "dired-conf.el")
(add-hook 'dired-mode-hook 'dired-hide-details-mode)
+;;; Registers
+
+(use-package "rlist" 'rlist
+ (define-key global-map (vector ?\C-x ?r ?L) #'rlist-list-registers)
+ (setq rlist-expert t))
+
;;; ibuffer
(load-config "ibuffer.el")
-;;; center buffer
+;;; Olivetti mode
+
+(use-package "olivetti" 'olivetti
+ (durand-hide-minor-mode olivetti-mode olivetti " Oli")
+ (setq-default olivetti-body-width 80))
+;; (load-config "center-buffer.el")
+
+;;; Eshell
-(load-config "center-buffer.el")
+(load-after-function eshell "eshell-conf.el" "Load Eshell and launch it." nil
+ (eshell))
;;; tab configurations
@@ -172,10 +214,6 @@ If FUNCTION-NAME is already a valid function, this won't do anything."
(prepare-in-hook-once prepare-text text-mode-hook "text-conf.el")
-;;; embark
-
-;; (load-config "embark-conf.el")
-
;;; magit
(load-after-function magit "magit-conf.el" "Load magit and launch it." nil
@@ -224,3 +262,7 @@ If FUNCTION-NAME is already a valid function, this won't do anything."
;; ((server-start)))
(setq gc-cons-threshold (* 2 1024 1024))
+
+(provide 'init)
+
+;;; init.el ends here
diff --git a/modeline.el b/modeline.el
index 12893ea..6def3e3 100644
--- a/modeline.el
+++ b/modeline.el
@@ -327,19 +327,21 @@ W is the width, H is the height of the bar."
"The position of the cursor to be displayed in the mode line."
(cond
((derived-mode-p 'pdf-view-mode)
- (modeline-propertize
- (propertize
- (let ((current (pdf-view-current-page))
- (total (pdf-info-number-of-pages)))
- (concat
- "P."
- (number-to-string current)
- "/"
- (number-to-string total)))
- 'face (cond
- ((modeline-active-window-p) 'mode-line)
- (t 'mode-line-inactive)))
- nil "Current page / Total pages"))
+ (concat
+ (modeline-propertize
+ (propertize
+ (let* ((current (pdf-view-current-page))
+ (total (pdf-info-number-of-pages))
+ )
+ (concat
+ "P."
+ (number-to-string current)
+ "/"
+ (number-to-string total)))
+ 'face (cond
+ ((modeline-active-window-p) 'mode-line)
+ (t 'mode-line-inactive)))
+ nil "Current page / Total pages")))
(t
(modeline-propertize
(propertize
diff --git a/org-conf.el b/org-conf.el
index c9e2cf5..0170be3 100644
--- a/org-conf.el
+++ b/org-conf.el
@@ -10,6 +10,7 @@
(setq org-hide-emphasis-markers nil)
(setq org-hide-macro-markers nil)
(setq org-hide-leading-stars nil)
+(setq org-return-follows-link t)
;; tempo
@@ -260,7 +261,7 @@ in Lisp code use `org-set-tags' instead."
(format "%s\n :PROPERTIES:\n :cost: %s\n :FROM: %s\n :RECORD_TIME: %s\n :END: \n %s%%?"
which cost from inactive-time shop-and-items)))
-(require 'org-ptotocol)
+(require 'org-protocol)
(setq org-capture-templates
'(("d" "Record Diaries" entry
@@ -423,17 +424,18 @@ in Lisp code use `org-set-tags' instead."
;;;###autoload
(defun org-filtered-link ()
"Filter out some unnecessary parts in the link description"
- (let* ((link (plist-get org-store-link-plist :link))
- (title (plist-get org-store-link-plist :description))
- (filtered (cond ((string-match-p " - Mathematics Stack Exchange" title)
- (replace-match "" nil nil title))
- ((string-match-p " - YouTube" title)
- (replace-match "" nil nil title))
- ((string-match-p "\\(.*?\\)最新章节列表,\\1无弹窗_UU看书" title)
- (replace-match "\\1" nil nil title))
- (t
- title))))
- (org-make-link-string link filtered)))
+ (save-match-data
+ (let* ((link (plist-get org-store-link-plist :link))
+ (title (plist-get org-store-link-plist :description))
+ (filtered (cond ((string-match " - Mathematics Stack Exchange" title)
+ (replace-match "" nil nil title))
+ ((string-match " - YouTube" title)
+ (replace-match "" nil nil title))
+ ((string-match "\\(.*?\\)最新章节列表,\\1无弹窗_UU看书" title)
+ (replace-match "\\1" nil nil title))
+ (t
+ title))))
+ (org-link-make-string link filtered))))
;; Determine tag based upon the URL
;;;###autoload
@@ -468,7 +470,7 @@ If DESC is non-`nil', then it is the description of the new link."
(interactive)
;;; HACK: Refocus the selected frame.
;;; I was doing this in the applescript. But for some reason it is messed up. So
-;;; I let emacs gain focus by itself now.
+;;; I let Emacs gain focus by itself now.
(select-frame-set-input-focus (selected-frame))
(let* ((tags (completing-read "tag: " '("roman-ARCHIVE"
"web_link-ARCHIVE")
diff --git a/pdf.el b/pdf.el
index cd44664..82bcc2b 100644
--- a/pdf.el
+++ b/pdf.el
@@ -1,2 +1,61 @@
-(use-package "pdf-tools/lisp" 'pdf-view
- (define-key pdf-view-mode-map (vector ?y) #'pdf-view-previous-line-or-previous-page))
+(use-package "pdf-tools/lisp" 'pdf-view)
+
+;;;###autoload
+(defun pdf-view-down-half-page-or-previous-page ()
+ "Scroll down half page or go to the previous page."
+ (interactive)
+ (pdf-view-scroll-down-or-previous-page
+ (floor (window-body-height) 2)))
+
+;;;###autoload
+(defun pdf-view-up-half-page-or-next-page ()
+ "Scroll down half page or go to the previous page."
+ (interactive)
+ (pdf-view-scroll-up-or-next-page
+ (floor (window-body-height) 2)))
+
+;; If this information is shown in the mode line, then it will take a
+;; century to display a PDF page, probably because it uses such
+;; functions as `image-next-line', thus I bind a key to show this
+;; information when I want to acquire this information.
+
+;;;###autoload
+(defun pdf-view-page-position ()
+ (interactive)
+ "Show the current position in the page."
+ (let* ((edges (pdf-util-image-displayed-edges nil t))
+ (percent-floats (pdf-util-scale-pixel-to-relative
+ (cons (car edges) (cadr edges)) nil t))
+ (bottom-p
+ (cond ((= (window-vscroll nil pdf-view-have-image-mode-pixel-vscroll)
+ (image-next-line 1)))
+ ;; The return value of `image-previous-line' is not
+ ;; specified in its documentation string, but if
+ ;; `image-previous-line' returns a non-nil value, then
+ ;; this will return nil; if it returns nil, then this
+ ;; still returns nil.
+ ((image-previous-line 1) nil)))
+ (str
+ (cond
+ ((and bottom-p (= (cdr percent-floats) 0)) "All")
+ ((= (cdr percent-floats) 0) "Top")
+ (bottom-p "Bot")
+ ((format "%d%%%%" (* 100 (cdr percent-floats)))))))
+ (message str)))
+
+(define-key pdf-view-mode-map (vector ?j) #'pdf-view-next-line-or-next-page)
+(define-key pdf-view-mode-map (vector ?k) #'pdf-view-previous-line-or-previous-page)
+(define-key pdf-view-mode-map (vector ?y) #'pdf-view-previous-line-or-previous-page)
+(define-key pdf-view-mode-map (vector ?d) #'pdf-view-up-half-page-or-next-page)
+(define-key pdf-view-mode-map (vector ?u) #'pdf-view-down-half-page-or-previous-page)
+(define-key pdf-view-mode-map (vector 'tab) #'pdf-view-page-position)
+
+(use-package "pdf-tools/lisp" 'pdf-history)
+(use-package "pdf-tools/lisp" 'pdf-links)
+(use-package "pdf-tools/lisp" 'pdf-outline)
+(use-package "pdf-tools/lisp" 'pdf-sync)
+(use-package "pdf-tools/lisp" 'pdf-occur)
+(use-package "pdf-tools/lisp" 'pdf-annot)
+(use-package "pdf-tools/lisp" 'pdf-tools)
+(pdf-tools-install)
+
diff --git a/rime-conf.el b/rime-conf.el
index d3afae3..950feab 100644
--- a/rime-conf.el
+++ b/rime-conf.el
@@ -46,13 +46,16 @@
('prior 65365)
('next 65366)
('delete 65535)
+ ('return 10)
(_ key-raw))))
(mask (cdr parsed)))
+ (message "key: %S" key)
(unless (numberp key)
(error "Can't send this keybinding to librime"))
(rime-lib-process-key key mask)
(rime--redisplay)
(rime--refresh-mode-state)))
+
(advice-add 'rime-send-keybinding :override #'durand-rime-send-keybinding-a))
(provide 'rime-conf)
diff --git a/tab-conf.el b/tab-conf.el
index 99f423d..6fccb7b 100644
--- a/tab-conf.el
+++ b/tab-conf.el
@@ -20,9 +20,9 @@ If there are two tabs and ARG is not '(4) or '(16), just switch
between them.
If there are more than two tabs and if ARG is not '(4) or '(16),
-then use complting-read to ask for a tab to switch to.
+then use `completing-read' to ask for a tab to switch to.
-If ARG is '(16), then use completing-read to ask for a tab to
+If ARG is '(16), then use `completing-read' to ask for a tab to
delete. The default is the current tab. However, if there is only
one tab, create another one, prompting me for the buffer to
display in the new tab."
diff --git a/text-conf.el b/text-conf.el
index fdecb38..6cd0d14 100644
--- a/text-conf.el
+++ b/text-conf.el
@@ -2,11 +2,11 @@
(require 'text-mode)
-(declare-function #'center-buffer-on "center-buffer" nil)
-(declare-function #'center-buffer-off "center-buffer" nil)
-(declare-function #'center-buffer-toggle "center-buffer" nil)
+;; (declare-function #'center-buffer-on "center-buffer" nil)
+;; (declare-function #'center-buffer-off "center-buffer" nil)
+;; (declare-function #'center-buffer-toggle "center-buffer" nil)
-(define-key text-mode-map (vector 'f8) #'center-buffer-toggle)
+;; (define-key text-mode-map (vector 'f8) nil)
;;;###autoload
(defvar insert-section-heading-history nil
@@ -91,5 +91,25 @@ DESCRIPTION above the block."
(newline)
(insert fill-line))))
+;;;###autoload
+(defun durand-next-page (&optional arg)
+ "Move forward ARG pages and narrow to page.
+The only differences with `narrow-to-page' are that a nil
+argument means 1, and that after narrowing this moves the cursor
+to the beginning."
+ (interactive "p")
+ (narrow-to-page arg)
+ (goto-char (point-min)))
+
+;;;###autoload
+(defun durand-previous-page (&optional arg)
+ "Move backward ARG pages and narrow to page.
+Pass (- (prefix-numeric-value arg)) to `durand-next-page'."
+ (interactive "p")
+ (durand-next-page (- (prefix-numeric-value arg))))
+
+(define-key text-mode-map (vector ?\s-m) #'durand-previous-page)
+(define-key text-mode-map (vector ?\s-ù) #'durand-next-page)
+
(provide 'text-conf)
;;; text-conf.el ends here.
diff --git a/view-conf.el b/view-conf.el
index 0f0ef29..47ee35d 100644
--- a/view-conf.el
+++ b/view-conf.el
@@ -98,6 +98,8 @@ If ARG is '(16), view the battery information."
(define-key map (vector ?t) #'durand-view-timers-or-temps)
(define-key map (vector ?e) #'eshell)
(define-key map (vector ?p) #'durand-chercher-pdf)
+ (define-key map (vector ?o) #'olivetti-mode)
+ (define-key map (vector ?r) #'choose-recent-file)
map)
"The keymap that is related to my custom functions about viewing.")
@@ -106,6 +108,7 @@ If ARG is '(16), view the battery information."
(require 'view)
(define-key view-mode-map (vector 108) #'recenter-top-bottom)
+(define-key view-mode-map (vector 76) #'reposition-window)
(define-key view-mode-map (vector ?j) #'View-scroll-line-forward)
(define-key view-mode-map (vector ?k) #'View-scroll-line-backward)
@@ -119,7 +122,11 @@ If ARG is '(16), view the battery information."
"https://www.gmail.com"
"https://www.facebook.com"
"https://protesilaos.com"))
- (list "Terminal" "open" "-a" "Terminal" -1))
+ (list "Terminal" "open" "-a" "Terminal" (list
+ "/Users/durand/Desktop/Centre/Vidéos/"
+ "/Users/durand/Desktop/Centre/Musique/"
+ "/Users/durand/Downloads/"))
+ (list "Messenger" "open" "-a" "Messenger"))
"Targets to open by `durand-open-object'.
This is an association list whose elements have `car' equal to
@@ -132,7 +139,6 @@ targets.")
;;;###autoload
(defun durand-target-extra-arg (target)
"Determine if TARGET has room for extra arguments.
-
This returns the list of extra argument slots, or nil if there is
none."
(let (temp result)
@@ -140,7 +146,8 @@ none."
(setq temp (car target))
(setq target (cdr target))
(cond
- ((eq temp -1)
+ ;; We shall not test numbers by `eq'.
+ ((equal temp -1)
(setq result (cons -1 result)))
((consp temp)
(setq result (cons temp result)))))
@@ -149,7 +156,6 @@ none."
;;;###autoload
(defun durand-replace-extra-args (target extra-args)
"Replace slots for extra-args in TARGET by EXTRA-ARGS.
-
This does not check if the lengths match, though in theory they
should.
@@ -170,11 +176,10 @@ And this will delete any `nil' values from the result."
;;;###autoload
(defun durand-open-object (&optional arg)
"Open something.
-
What can be opened is controlled by the variable
`durand-open-targets'.
-If ARG is non-nil, and if the chosen target contains `-1' in the
+If ARG is non-nil, and if the chosen target contains -1 in the
command line options, then read a string to replace that -1. If
the chosen target has a sub-list, then use that sub-list as
options to choose from."