Fixed my "image display" bug
Turns out the global-svg-tab-mode was turning off the ability to view all PNG files, so now I just hooked the mode to certain major modes, and we are back in business. Also cleaned up a few visual bugs.
This commit is contained in:
		
							parent
							
								
									4a7771b48a
								
							
						
					
					
						commit
						cf7b81c576
					
				
					 4 changed files with 110 additions and 45 deletions
				
			
		|  | @ -214,10 +214,11 @@ For this, I use the =request= package, which is /asynchronous/ | ||||||
| ** Initial Settings and UI | ** Initial Settings and UI | ||||||
| Let's turn off the menu and other things: | Let's turn off the menu and other things: | ||||||
| #+BEGIN_SRC emacs-lisp | #+BEGIN_SRC emacs-lisp | ||||||
|  | (when (display-graphic-p) | ||||||
|   (tool-bar-mode -1) |   (tool-bar-mode -1) | ||||||
|   (scroll-bar-mode -1) |   (scroll-bar-mode -1) | ||||||
|   (horizontal-scroll-bar-mode -1) |   (horizontal-scroll-bar-mode -1) | ||||||
| (setq visible-bell 1) |   (setq visible-bell 1)) | ||||||
| #+END_SRC | #+END_SRC | ||||||
| I dislike forgetting to trim trailing white-space: | I dislike forgetting to trim trailing white-space: | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -746,7 +746,9 @@ To use, read a message and save a link to it with ~SPC o l~. Next, in an org doc | ||||||
| * Display Configuration | * Display Configuration | ||||||
| Using the [[https://github.com/seagle0128/doom-modeline][Doom Modeline]] to add notifications: | Using the [[https://github.com/seagle0128/doom-modeline][Doom Modeline]] to add notifications: | ||||||
| #+BEGIN_SRC emacs-lisp | #+BEGIN_SRC emacs-lisp | ||||||
|   (setq doom-modeline-mu4e t) |   (use-package doom-modeline | ||||||
|  |     :config | ||||||
|  |     (setq doom-modeline-mu4e t)) | ||||||
| #+END_SRC | #+END_SRC | ||||||
| * Technical Artifacts                                :noexport: | * Technical Artifacts                                :noexport: | ||||||
| Let's provide a name so that the file can be required: | Let's provide a name so that the file can be required: | ||||||
|  |  | ||||||
|  | @ -122,9 +122,13 @@ Next, we just need to change the header sizes: | ||||||
| While we are at it, let’s make sure the code blocks are using my fixed with font: | While we are at it, let’s make sure the code blocks are using my fixed with font: | ||||||
| #+BEGIN_SRC emacs-lisp | #+BEGIN_SRC emacs-lisp | ||||||
|   (when window-system |   (when window-system | ||||||
|     (dolist (face '(org-block org-code org-verbatim org-table org-drawer |     (dolist (face '(org-block org-code org-verbatim org-table org-drawer org-table org-formula | ||||||
|                     org-special-keyword org-property-value org-document-info-keyword)) |                     org-special-keyword org-property-value org-document-info-keyword)) | ||||||
|       (set-face-attribute face nil :inherit 'fixed-pitch))) |       (set-face-attribute face nil :inherit 'fixed-pitch))) | ||||||
|  | 
 | ||||||
|  |   (set-face-attribute 'org-table nil :height 1.0) | ||||||
|  |   (set-face-attribute 'org-formula nil :height 1.0) | ||||||
|  | 
 | ||||||
| #+END_SRC | #+END_SRC | ||||||
| Not sure why the above code removes the color of =org-verbatim=, so let’s make it stand out slightly: | Not sure why the above code removes the color of =org-verbatim=, so let’s make it stand out slightly: | ||||||
| #+BEGIN_SRC emacs-lisp | #+BEGIN_SRC emacs-lisp | ||||||
|  | @ -223,54 +227,110 @@ To make it more distinguishable, he also changed the colors: | ||||||
| While I'm intrigued with [[https://github.com/rougier][Nicolas P. Rougier]]'s [[https://github.com/rougier/notebook-mode][notebook project]], I really just want to steal their [[https://github.com/rougier/svg-lib][svg-lib project]] that allows me to create and display various SVG objects, namely tags, progress bars, progress pies and icons.  Each object fits nicely in a text buffer ensuring width is an integer multiple of character width. | While I'm intrigued with [[https://github.com/rougier][Nicolas P. Rougier]]'s [[https://github.com/rougier/notebook-mode][notebook project]], I really just want to steal their [[https://github.com/rougier/svg-lib][svg-lib project]] that allows me to create and display various SVG objects, namely tags, progress bars, progress pies and icons.  Each object fits nicely in a text buffer ensuring width is an integer multiple of character width. | ||||||
| 
 | 
 | ||||||
| #+BEGIN_SRC emacs-lisp | #+BEGIN_SRC emacs-lisp | ||||||
|   (use-package svg-lib |   (when (image-type-available-p 'svg) | ||||||
|     :straight (:type git :protocol ssh :host github :repo "rougier/svg-lib")) |     (use-package svg-lib | ||||||
|  |       :straight (:type git :protocol ssh :host github :repo "rougier/svg-lib")) | ||||||
| 
 | 
 | ||||||
|   (use-package svg-tag-mode |     (use-package svg-tag-mode | ||||||
|     :straight (:type git :protocol ssh :host github :repo "howardabrams/svg-tag-mode") |       ;; :straight (:type git :protocol ssh :host github :repo "rougier/svg-tag-mode") | ||||||
|     :config |       :straight (:type git :protocol ssh :host github :repo "howardabrams/svg-tag-mode") | ||||||
|     (setq svg-tag-tags |       :hook ((org-mode . svg-tag-mode) | ||||||
|           '(("TODO:" . ((lambda (tag) (svg-tag-make "TODO" :face 'org-todo |              (emacs-lisp-mode . svg-tag-mode) | ||||||
|                                                     :radius 2 :inverse t |              (python-mode . svg-tag-mode)) | ||||||
|                                                     :margin 0 :padding 0 :height 0.8)))) |       :config | ||||||
|             ("NOTE:" . ((lambda (tag) (svg-tag-make "NOTE" :face 'org-done |       (setq svg-tag-tags | ||||||
|                                                     :inverse nil :margin 0 :radius 2 :height 0.8)))) |             `(("NOTE:" . | ||||||
|             ("\\(:[A-Z-]+\\):[a-zA-Z#0-9]+:" . ((lambda (tag) |                ((lambda (tag) | ||||||
|                                                  (svg-tag-make tag :beg 1 :inverse t |                   (svg-tag-make "NOTE" :face 'org-done | ||||||
|                                                                :margin 0 :crop-right t)))) |                                 :inverse nil :margin 0 :radius 2)))) | ||||||
|             (":[A-Z-]+\\(:[a-zA-Z#0-9]+:\\)" . ((lambda (tag) |  | ||||||
|                                                  (svg-tag-make tag :beg 1 :end -1 |  | ||||||
|                                                                :margin 0 :crop-left t)))) |  | ||||||
|             ("\\(:[A-Z-]+:\\)[ \n]" . ((lambda (tag) (svg-tag-make tag :beg 1 :end -1 :margin 0)))) |  | ||||||
| 
 | 
 | ||||||
|             ; The notebook-mode overrides these: |               ;; ------------------------------------------------------------ | ||||||
|             ("#\\+BEGIN_SRC [a-zA-Z#0-9-]+" . ((lambda (tag) |               ;; Two definitions of TODO That include the single line message | ||||||
|                                                  (svg-tag-make "SRC" :face 'org-block-begin-line |               ;; ------------------------------------------------------------ | ||||||
|                                                                :height 0.6 |               (,(rx word-start "TODO" word-end) . | ||||||
|                                                                :inverse t :margin 0 :crop-right t)))) |                ((lambda (tag) | ||||||
|             ("#\\+BEGIN_SRC \\([a-zA-Z#0-9-]+\\)" . ((lambda (tag) |                   (svg-tag-make "TODO" :face 'org-todo | ||||||
|                                                  (svg-tag-make tag  :face 'org-block-begin-line |                                 :radius 2 :inverse t :margin 0 :padding 0 :crop-right t)))) | ||||||
|                                                                :height 0.6 |               (,(rx word-start "TODO" | ||||||
|                                                                :margin 0 :crop-left t)))) |                     (group (one-or-more space) (zero-or-more not-newline)) line-end) . | ||||||
|             ("#\\+END_SRC" . ((lambda (tag) |                     ((lambda (tag) | ||||||
|                                 (svg-tag-make "SRC"  :face 'org-block-end-line |                        (svg-tag-make tag :face 'org-todo | ||||||
|                                               :height 0.6 |                                      :radius 2 :margin 0 :padding 0 :crop-left t)))) | ||||||
|                                               :beg 0 :inverse t :margin 0)))) | 
 | ||||||
|             ("\\(#\\+[a-zA-Z#0-9-_]+:\\)" . ((lambda (tag) (svg-tag-make tag :face 'org-document-info-keyword |               ;; ------------------------------------------------------------ | ||||||
|                                               :beg 2 :end -1 :height 0.6)))))) |               ;; Two definitions of tag combo, like :TAG:foobar: | ||||||
|     (global-svg-tag-mode 1)) |               ;; ------------------------------------------------------------ | ||||||
|  |               ;; Where the first is inversed: | ||||||
|  |               ;; (,(rx (group ":" (one-or-more (any alpha "-")) ":") | ||||||
|  |               ;;       (one-or-more (any alphanumeric "-" "_")) ":") . | ||||||
|  |               ;;  ((lambda (tag) | ||||||
|  |               ;;     (svg-tag-make tag :beg 1 :end -1 :inverse t :margin 0 :crop-right t)))) | ||||||
|  |               ;; And the second is not: | ||||||
|  |               ;; (,(rx ":" (one-or-more (any alpha "-")) | ||||||
|  |               ;;       (group ":" (one-or-more (any alphanumeric "-" "_")) ":")) . | ||||||
|  |               ;;  ((lambda (tag) | ||||||
|  |               ;;     (svg-tag-make tag :beg 1 :end -1 :margin 0 :crop-left t)))) | ||||||
|  | 
 | ||||||
|  |               ;; ------------------------------------------------------------ | ||||||
|  |               ;; Org-mode :TAGS: shown as a box: | ||||||
|  |               ;; ------------------------------------------------------------ | ||||||
|  |               (,(rx (or line-start space) | ||||||
|  |                     (group ":" (one-or-more (any alpha "-")) ":") | ||||||
|  |                     (or space line-end)) . | ||||||
|  |                     ((lambda (tag) | ||||||
|  |                        (svg-tag-make tag :face 'org-drawer :beg 1 :end -1 :margin 0)))) | ||||||
|  | 
 | ||||||
|  |               ;; ------------------------------------------------------------ | ||||||
|  |               ;; Org-mode blocks #+BEGIN_SRC language ... #+END_SRC | ||||||
|  |               ;; ------------------------------------------------------------ | ||||||
|  |               (,(rx line-start (zero-or-more space) "#+BEGIN_SRC") . | ||||||
|  |                ((lambda (tag) | ||||||
|  |                   (svg-tag-make "RUN" :face 'org-block-begin-line | ||||||
|  |                                 :inverse t :margin 0 :crop-right t)) | ||||||
|  |                 (lambda () (interactive) (org-ctrl-c-ctrl-c)) | ||||||
|  |                 "Run this block of code")) | ||||||
|  |               (,(rx line-start (zero-or-more space) "#+BEGIN_SRC" | ||||||
|  |                     (1+ space) (group (one-or-more (any alpha "-"))) word-end) . | ||||||
|  |                     ((lambda (tag) | ||||||
|  |                        (svg-tag-make tag :face 'org-block-begin-line | ||||||
|  |                                      :margin 0 :crop-left t)) | ||||||
|  |                      (lambda () (interactive) (org-ctrl-c-ctrl-c)) | ||||||
|  |                      "Run this block of code")) | ||||||
|  |               (,(rx line-start (zero-or-more space) "#+END_SRC" word-end) . | ||||||
|  |                ((lambda (tag) | ||||||
|  |                   (svg-tag-make "END" :face 'org-block-end-line :inverse t)))) | ||||||
|  |               ("^#\\+RESULTS:" . | ||||||
|  |                ((lambda (tag) | ||||||
|  |                   (svg-tag-make "RESULTS" :face 'org-block-end-line :inverse t)))) | ||||||
|  | 
 | ||||||
|  |               (,(rx line-start (zero-or-more space) "#+ATTR" (zero-or-more (any alpha "_")) ":") . | ||||||
|  |                ((lambda (tag) | ||||||
|  |                   (svg-tag-make "ATTR" :face 'org-block-begin-line :inverse t)))) | ||||||
|  | 
 | ||||||
|  |               ("^#\\+NAME:"         . ((lambda (tag) (svg-tag-make "NAME" :face 'org-meta-line)))) | ||||||
|  |               ("^#\\+HEADER:"       . ((lambda (tag) (svg-tag-make "HEADER" :face 'org-meta-line)))) | ||||||
|  |               ("^#\\+BEGIN_EXAMPLE" . ((lambda (tag) (svg-tag-make "CODE" :face 'org-block-begin-line)))) | ||||||
|  |               ("^#\\+END_EXAMPLE"   . ((lambda (tag) (svg-tag-make "END" :face 'org-block-end-line)))) | ||||||
|  |               ("^#\\+begin_quote"   . ((lambda (tag) (svg-tag-make "“" :face 'org-block-begin-line)))) | ||||||
|  |               ("^#\\+end_quote"     . ((lambda (tag) (svg-tag-make "”" :face 'org-block-end-line)))) | ||||||
|  | 
 | ||||||
|  |               ;; ------------------------------------------------------------ | ||||||
|  |               ;; Things like #+OPTIONS: and property definitions | ||||||
|  |               ;; ------------------------------------------------------------ | ||||||
|  |               ("#\\+PROPERTY:" . ((lambda (tag) (svg-tag-make "PROPERTY" :face 'org-meta-line)))) | ||||||
|  |               ("#\\+OPTIONS:"  . ((lambda (tag) (svg-tag-make "OPTIONS" :face 'org-meta-line)))))))) | ||||||
| #+END_SRC | #+END_SRC | ||||||
| 
 | 
 | ||||||
| What does do? Here are some examples: | What does do? Here are some examples: | ||||||
|  - TODO: Marks comments for tasks (this can be in source files too). |   TODO Marks comments for tasks (this can be in source files too). | ||||||
|  - NOTE: Highlights comments and other notes. |   NOTE: Highlights comments and other notes. | ||||||
|  - :PROP:tag: are highlighted as two parts of the same tag |   :PROP:tag: are highlighted as two parts of the same tag | ||||||
|  - And :TAG: with colons are highlighted, which include :PROPERTY: drawers. |   And :TAG: with colons are highlighted, which include :PROPERTY: drawers. | ||||||
|  - Org-specific #+PROPERTY: entries are highlighted. |   Org-specific #+PROPERTY: entries are highlighted. | ||||||
| 
 | 
 | ||||||
| #+BEGIN_SRC emacs-lisp :tangle no | #+BEGIN_SRC emacs-lisp :tangle no | ||||||
|   (use-package notebook |   (use-package notebook | ||||||
|     :straight (:type git :protocol ssh :host github :repo "rougier/notebook") |     :straight (:type git :protocol ssh :host github :repo "rougier/notebook-mode") | ||||||
|     :after org |     :after org | ||||||
|     :hook (org-mode . notebook-mode)) |     :hook (org-mode . notebook-mode)) | ||||||
| #+END_SRC | #+END_SRC | ||||||
|  |  | ||||||
|  | @ -320,8 +320,10 @@ While my company is typically using =Rakefile= and =Makefile= in the top-level p | ||||||
| ** Display Configuration | ** Display Configuration | ||||||
| Using the [[https://github.com/seagle0128/doom-modeline][Doom Modeline]] to add notifications: | Using the [[https://github.com/seagle0128/doom-modeline][Doom Modeline]] to add notifications: | ||||||
| #+BEGIN_SRC emacs-lisp | #+BEGIN_SRC emacs-lisp | ||||||
| (setq doom-modeline-lsp t) |   (use-package doom-modeline | ||||||
| (setq doom-modeline-env-version t) |     :config | ||||||
|  |     (setq doom-modeline-lsp t | ||||||
|  |           doom-modeline-env-version t)) | ||||||
| #+END_SRC | #+END_SRC | ||||||
| * Languages | * Languages | ||||||
| Simple to configure languages go here. More advanced stuff will go in their own files… eventually. | Simple to configure languages go here. More advanced stuff will go in their own files… eventually. | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue