[Emacs] Move custom org functions in org configuration
Move `phundrak/toggle-org-src-window-split' to org configuration Add org emphasis functions and their keybindings
This commit is contained in:
		
							parent
							
								
									d3d5e12222
								
							
						
					
					
						commit
						ece09caca8
					
				@ -642,26 +642,6 @@ document.
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Custom-Elisp-Org-Functionsyshkel6184j0
 | 
			
		||||
:END:
 | 
			
		||||
*** Emphasize text                                               :noexport:
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Custom-Elisp-Org-Functions-Emphasize-textkilkel6184j0
 | 
			
		||||
:END:
 | 
			
		||||
| /        |    <c>    |      <c>       |
 | 
			
		||||
| Emphasis | Character | Character code |
 | 
			
		||||
|----------+-----------+----------------|
 | 
			
		||||
| Bold     |     ~*~     |       42       |
 | 
			
		||||
| Italic   |     ~/~     |       47       |
 | 
			
		||||
| Code     |     ~~~     |      126       |
 | 
			
		||||
 | 
			
		||||
#+begin_src emacs-lisp
 | 
			
		||||
(defun org-mode-emphasize-bold ()
 | 
			
		||||
  "Emphasize as bold the current region.
 | 
			
		||||
 | 
			
		||||
See also `org-emphasize'."
 | 
			
		||||
  (interactive)
 | 
			
		||||
  (org-emphasize 42))
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
*** Handle new windows
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Custom-Elisp-Org-Functions-Handle-new-windowst7pkel6184j0
 | 
			
		||||
@ -690,26 +670,6 @@ focus the new window immediately.
 | 
			
		||||
    (delete-window)))
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
*** ~phundrak/toggle-org-src-window-split~
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Custom-Elisp-Org-Functions-phundrak-toggle-org-src-window-splito2tkel6184j0
 | 
			
		||||
:END:
 | 
			
		||||
#+begin_src emacs-lisp
 | 
			
		||||
(defun phundrak/toggle-org-src-window-split ()
 | 
			
		||||
  "This function allows the user to toggle the behavior of
 | 
			
		||||
`org-edit-src-code'. If the variable `org-src-window-setup' has
 | 
			
		||||
the value `split-window-right', then it will be changed to
 | 
			
		||||
`split-window-below'. Otherwise, it will be set back to
 | 
			
		||||
`split-window-right'"
 | 
			
		||||
  (interactive)
 | 
			
		||||
  (if (equal org-src-window-setup 'split-window-right)
 | 
			
		||||
      (setq org-src-window-setup 'split-window-below)
 | 
			
		||||
    (setq org-src-window-setup 'split-window-right))
 | 
			
		||||
  (message "Org-src buffers will now split %s"
 | 
			
		||||
           (if (equal org-src-window-setup 'split-window-right)
 | 
			
		||||
               "vertically"
 | 
			
		||||
             "horizontally")))
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
* Package Management
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
@ -4170,6 +4130,7 @@ extended however we like!
 | 
			
		||||
  <<org-behavior-electric>>
 | 
			
		||||
  <<org-capture-target-files>>
 | 
			
		||||
  <<org-capture-templates>>
 | 
			
		||||
  <<org-create-emphasis-functions()>>
 | 
			
		||||
  <<org-babel-load-languages>>
 | 
			
		||||
  <<org-use-sub-superscripts>>
 | 
			
		||||
  <<org-latex-compiler>>
 | 
			
		||||
@ -4552,6 +4513,104 @@ The capture templates are set like so:
 | 
			
		||||
        <<org-capture-shortcuts-gen()>>))
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
*** Custom functions
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Packages-Configuration-Org-mode-Custom-functions-h3v07sl02ej0
 | 
			
		||||
:END:
 | 
			
		||||
**** Emphasize text
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Custom-Elisp-Org-Functions-Emphasize-textkilkel6184j0
 | 
			
		||||
:END:
 | 
			
		||||
Sometimes, I want to emphasize some text in my org-mode documents.
 | 
			
		||||
It’s very possible to just go to the begining of the chosen text, add
 | 
			
		||||
the marker, then go to the end of the text than needs emphasis and add
 | 
			
		||||
another marker, and I’m sure most people are fine with that. But I
 | 
			
		||||
also like being able to select a region and hit a keybind to emphasize
 | 
			
		||||
it that way. The table [[org-emphasis-character]] lists the emphasis
 | 
			
		||||
characters in org-mode, their role, and the character code of each
 | 
			
		||||
emphasis character. From that, creating functions that emphasize a
 | 
			
		||||
selected text is quite easy.
 | 
			
		||||
 | 
			
		||||
#+name: org-emphasis-character
 | 
			
		||||
| Emphasis       | Character | Character code |
 | 
			
		||||
|----------------+-----------+----------------|
 | 
			
		||||
| bold           | ~*~         |             42 |
 | 
			
		||||
| italic         | ~/~         |             47 |
 | 
			
		||||
| underline      | ~_~         |             95 |
 | 
			
		||||
| verbatim       | ~=~         |             61 |
 | 
			
		||||
| code           | ~~~         |            126 |
 | 
			
		||||
| strike-through | ~+~         |             43 |
 | 
			
		||||
 | 
			
		||||
#+name: org-create-emphasis-functions
 | 
			
		||||
#+header: :tangle no :exports results
 | 
			
		||||
#+header: :wrap "src emacs-lisp :tangle no :exports code"
 | 
			
		||||
#+begin_src emacs-lisp :var emphasis-list=org-emphasis-character
 | 
			
		||||
(mapconcat (lambda (emphasis)
 | 
			
		||||
             (let ((type (car emphasis))
 | 
			
		||||
                   (code (nth 2 emphasis)))
 | 
			
		||||
               (format "(defun org-emphasize-%s ()
 | 
			
		||||
  \"Emphasize as %s the current region.\"
 | 
			
		||||
  (interactive)
 | 
			
		||||
  (org-emphasize %s))"
 | 
			
		||||
                       type
 | 
			
		||||
                       type
 | 
			
		||||
                       code)))
 | 
			
		||||
           emphasis-list
 | 
			
		||||
           "\n")
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+RESULTS: org-create-emphasis-functions
 | 
			
		||||
#+begin_src emacs-lisp :tangle no :exports code
 | 
			
		||||
(defun org-emphasize-bold ()
 | 
			
		||||
  "Emphasize as bold the current region."
 | 
			
		||||
  (interactive)
 | 
			
		||||
  (org-emphasize 42))
 | 
			
		||||
(defun org-emphasize-italic ()
 | 
			
		||||
  "Emphasize as italic the current region."
 | 
			
		||||
  (interactive)
 | 
			
		||||
  (org-emphasize 47))
 | 
			
		||||
(defun org-emphasize-underline ()
 | 
			
		||||
  "Emphasize as underline the current region."
 | 
			
		||||
  (interactive)
 | 
			
		||||
  (org-emphasize 95))
 | 
			
		||||
(defun org-emphasize-verbatim ()
 | 
			
		||||
  "Emphasize as verbatim the current region."
 | 
			
		||||
  (interactive)
 | 
			
		||||
  (org-emphasize 61))
 | 
			
		||||
(defun org-emphasize-code ()
 | 
			
		||||
  "Emphasize as code the current region."
 | 
			
		||||
  (interactive)
 | 
			
		||||
  (org-emphasize 126))
 | 
			
		||||
(defun org-emphasize-strike-through ()
 | 
			
		||||
  "Emphasize as strike-through the current region."
 | 
			
		||||
  (interactive)
 | 
			
		||||
  (org-emphasize 43))
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
You can find the keybinds for these functions in the chapter
 | 
			
		||||
§[[#Packages-Configuration-Org-mode-Keybindingsv0e5fl6184j0]].
 | 
			
		||||
 | 
			
		||||
**** ~phundrak/toggle-org-src-window-split~
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Custom-Elisp-Org-Functions-phundrak-toggle-org-src-window-splito2tkel6184j0
 | 
			
		||||
:END:
 | 
			
		||||
#+begin_src emacs-lisp
 | 
			
		||||
(defun phundrak/toggle-org-src-window-split ()
 | 
			
		||||
  "This function allows the user to toggle the behavior of
 | 
			
		||||
`org-edit-src-code'. If the variable `org-src-window-setup' has
 | 
			
		||||
the value `split-window-right', then it will be changed to
 | 
			
		||||
`split-window-below'. Otherwise, it will be set back to
 | 
			
		||||
`split-window-right'"
 | 
			
		||||
  (interactive)
 | 
			
		||||
  (if (equal org-src-window-setup 'split-window-right)
 | 
			
		||||
      (setq org-src-window-setup 'split-window-below)
 | 
			
		||||
    (setq org-src-window-setup 'split-window-right))
 | 
			
		||||
  (message "Org-src buffers will now split %s"
 | 
			
		||||
           (if (equal org-src-window-setup 'split-window-right)
 | 
			
		||||
               "vertically"
 | 
			
		||||
             "horizontally")))
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
*** Exporters
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Packages-Configuration-Org-mode-File-exportik95fl6184j0
 | 
			
		||||
@ -4848,7 +4907,14 @@ Let’s now define some keybinds for inserting stuff in our org buffer:
 | 
			
		||||
| i         | nil                           | insert      |
 | 
			
		||||
| ib        | org-insert-structure-template |             |
 | 
			
		||||
| id        | org-insert-drawer             |             |
 | 
			
		||||
| ie        | org-set-effort                |             |
 | 
			
		||||
| ie        | nil                           | emphasis    |
 | 
			
		||||
| ieb       | org-emphasize-bold            |             |
 | 
			
		||||
| iec       | org-emphasize-code            |             |
 | 
			
		||||
| iei       | org-emphasize-italic          |             |
 | 
			
		||||
| ies       | org-emphasize-strike-through  |             |
 | 
			
		||||
| ieu       | org-emphasize-underline       |             |
 | 
			
		||||
| iev       | org-emphasize-verbatim        |             |
 | 
			
		||||
| iE        | org-set-effort                |             |
 | 
			
		||||
| if        | org-footnote-new              |             |
 | 
			
		||||
| ih        | org-insert-heading            |             |
 | 
			
		||||
| iH        | counsel-org-link              |             |
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user