Fixed bugs and made things more consistent, ha-
Making the Git menu more consistent as well.
This commit is contained in:
parent
3774244434
commit
f337048da3
3 changed files with 30 additions and 27 deletions
|
@ -705,9 +705,10 @@ To do this, we need a way to generate a string of the perspectives in alphabetic
|
||||||
number and NAMES is a list of strings."
|
number and NAMES is a list of strings."
|
||||||
(when names
|
(when names
|
||||||
(concat
|
(concat
|
||||||
(format " %d: %s" ; Shame that the following doesn't work:
|
(format " %d: %s%s" ; Shame that the following doesn't work:
|
||||||
num ; (propertize (number-to-string num) :foreground "#00a0")
|
num ; (propertize (number-to-string num) :foreground "#00a0")
|
||||||
(car names)) ; Nor does surrounding the number with underbars.
|
(car names) ; Nor does surrounding the number with underbars.
|
||||||
|
(if (equal (car names) (projectile-project-name)) "*" ""))
|
||||||
(ha--persp-label (1+ num) (cdr names)))))
|
(ha--persp-label (1+ num) (cdr names)))))
|
||||||
|
|
||||||
(defun ha-persp-labels ()
|
(defun ha-persp-labels ()
|
||||||
|
@ -730,9 +731,9 @@ Build the hydra as well as configure the =perspective= project.
|
||||||
Workspaces- %s(ha-persp-labels)
|
Workspaces- %s(ha-persp-labels)
|
||||||
_n_: new project _r_: rename _a_: add buffer _l_: load worksp
|
_n_: new project _r_: rename _a_: add buffer _l_: load worksp
|
||||||
_]_: next worksp _d_: delete _b_: goto buffer _s_: save worksp
|
_]_: next worksp _d_: delete _b_: goto buffer _s_: save worksp
|
||||||
_[_: previous _W_: init all _k_: remove buffer
|
_[_: previous _W_: init all _k_: remove buffer _`_: to last worksp "
|
||||||
"
|
|
||||||
("TAB" persp-switch)
|
("TAB" persp-switch)
|
||||||
|
("`" persp-switch-last)
|
||||||
("1" (persp-switch-by-number 1))
|
("1" (persp-switch-by-number 1))
|
||||||
("2" (persp-switch-by-number 2))
|
("2" (persp-switch-by-number 2))
|
||||||
("3" (persp-switch-by-number 3))
|
("3" (persp-switch-by-number 3))
|
||||||
|
@ -889,8 +890,8 @@ Can not live without [[https://magit.vc/][Magit]], a Git porcelain for Emacs. I
|
||||||
"g o" '(:ignore t :which-key "open")
|
"g o" '(:ignore t :which-key "open")
|
||||||
|
|
||||||
"g c" '(:ignore t :which-key "create")
|
"g c" '(:ignore t :which-key "create")
|
||||||
"g c r" '("Initialize repo" . magit-init)
|
"g c R" '("Initialize repo" . magit-init)
|
||||||
"g c R" '("Clone repo" . magit-clone)
|
"g c C" '("Clone repo" . magit-clone)
|
||||||
"g c c" '("Commit" . magit-commit-create)
|
"g c c" '("Commit" . magit-commit-create)
|
||||||
"g c f" '("Fixup" . magit-commit-fixup)
|
"g c f" '("Fixup" . magit-commit-fixup)
|
||||||
"g c b" '("Branch" . magit-branch-and-checkout)))
|
"g c b" '("Branch" . magit-branch-and-checkout)))
|
||||||
|
|
|
@ -33,27 +33,27 @@ Functions to help convert content from the operating system's clipboard into org
|
||||||
Each operating system as a different way of working with the clipboard, so let's create an operating-system abstraction:
|
Each operating system as a different way of working with the clipboard, so let's create an operating-system abstraction:
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(defun ha/get-clipboard ()
|
(defun ha-get-clipboard ()
|
||||||
"Returns a list where the first entry is the content type,
|
"Returns a list where the first entry is the content type,
|
||||||
either :html or :text, and the second is the clipboard contents."
|
either :html or :text, and the second is the clipboard contents."
|
||||||
(if (eq system-type 'darwin)
|
(if (eq system-type 'darwin)
|
||||||
(ha/get-mac-clipboard)
|
(ha-get-mac-clipboard)
|
||||||
(ha/get-linux-clipboard)))
|
(ha-get-linux-clipboard)))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
Let's define the clipboard for a Mac. The challenge here is that we need to binary unpack the data from a call to Applescript.
|
Let's define the clipboard for a Mac. The challenge here is that we need to binary unpack the data from a call to Applescript.
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(defun ha/get-mac-clipboard ()
|
(defun ha-get-mac-clipboard ()
|
||||||
"Returns a list where the first entry is the content type,
|
"Returns a list where the first entry is the content type,
|
||||||
either :html or :text, and the second is the clipboard contents."
|
either :html or :text, and the second is the clipboard contents."
|
||||||
(destructuring-bind (exit-code contents)
|
(destructuring-bind (exit-code contents)
|
||||||
(shell-command-with-exit-code "osascript" "-e" "the clipboard as \"HTML\"")
|
(shell-command-with-exit-code "osascript" "-e" "the clipboard as \"HTML\"")
|
||||||
(if (= 0 exit-code)
|
(if (= 0 exit-code)
|
||||||
(list :html (ha/convert-applescript-to-html contents))
|
(list :html (ha-convert-applescript-to-html contents))
|
||||||
(list :text (shell-command-to-string "osascript -e 'the clipboard'")))))
|
(list :text (shell-command-to-string "osascript -e 'the clipboard'")))))
|
||||||
|
|
||||||
(defun ha/convert-applescript-to-html (packed-contents)
|
(defun ha-convert-applescript-to-html (packed-contents)
|
||||||
"Applescript's clipboard returns the contents in a packed array.
|
"Applescript's clipboard returns the contents in a packed array.
|
||||||
Convert and return this encoding into a UTF-8 string."
|
Convert and return this encoding into a UTF-8 string."
|
||||||
(cl-flet ((hex-pack-bytes (tuple) (string-to-number (apply 'string tuple) 16)))
|
(cl-flet ((hex-pack-bytes (tuple) (string-to-number (apply 'string tuple) 16)))
|
||||||
|
@ -70,8 +70,8 @@ Convert and return this encoding into a UTF-8 string."
|
||||||
And define the same interface for Linux. Keep in mind, we need the exit code from calling a process, so I am going to define/use a helper function (that really should go into the piper project).
|
And define the same interface for Linux. Keep in mind, we need the exit code from calling a process, so I am going to define/use a helper function (that really should go into the piper project).
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(defun ha/get-linux-clipboard ()
|
(defun ha-get-linux-clipboard ()
|
||||||
"Return the clipbaard for a Unix-based system. See `ha/get-clipboard'."
|
"Return the clipbaard for a Unix-based system. See `ha-get-clipboard'."
|
||||||
(destructuring-bind (exit-code contents)
|
(destructuring-bind (exit-code contents)
|
||||||
(shell-command-with-exit-code "xclip" "-o" "-t" "text/html")
|
(shell-command-with-exit-code "xclip" "-o" "-t" "text/html")
|
||||||
(if (= 0 exit-code)
|
(if (= 0 exit-code)
|
||||||
|
@ -90,7 +90,7 @@ And define the same interface for Linux. Keep in mind, we need the exit code fro
|
||||||
We can assume that most non-HTML text could be Slack-like:
|
We can assume that most non-HTML text could be Slack-like:
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(defun ha/slack-to-markdown-buffer ()
|
(defun ha-slack-to-markdown-buffer ()
|
||||||
"Odd function that converts Slack’s version of Markdown (where
|
"Odd function that converts Slack’s version of Markdown (where
|
||||||
code is delimited with triple backticks) into a more formal
|
code is delimited with triple backticks) into a more formal
|
||||||
four-space indent markdown style."
|
four-space indent markdown style."
|
||||||
|
@ -123,29 +123,29 @@ four-space indent markdown style."
|
||||||
Let's work top-down at this point with the interactive function that inserts the clipboard into the current buffer:
|
Let's work top-down at this point with the interactive function that inserts the clipboard into the current buffer:
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(defun ha/org-yank-clipboard ()
|
(defun ha-org-yank-clipboard ()
|
||||||
"Yanks (pastes) the contents of the Apple Mac clipboard in an
|
"Yanks (pastes) the contents of the Apple Mac clipboard in an
|
||||||
org-mode-compatible format."
|
org-mode-compatible format."
|
||||||
(interactive)
|
(interactive)
|
||||||
(insert (ha/org-clipboard)))
|
(insert (ha-org-clipboard)))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
The heavy lifting, however is done by this function. Note that I will need another function to tidy up the output from =pandoc= that will be more to my liking.
|
The heavy lifting, however is done by this function. Note that I will need another function to tidy up the output from =pandoc= that will be more to my liking.
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(defun ha/org-clipboard ()
|
(defun ha-org-clipboard ()
|
||||||
"Return the contents of the clipboard in org-mode format."
|
"Return the contents of the clipboard in org-mode format."
|
||||||
(seq-let (type contents) (ha/get-clipboard)
|
(seq-let (type contents) (ha-get-clipboard)
|
||||||
(with-temp-buffer
|
(with-temp-buffer
|
||||||
(insert contents)
|
(insert contents)
|
||||||
(if (eq :html type)
|
(if (eq :html type)
|
||||||
(shell-command-on-region (point-min) (point-max) "pandoc -f html -t org" t t)
|
(shell-command-on-region (point-min) (point-max) "pandoc -f html -t org" t t)
|
||||||
(ha/slack-to-markdown-buffer)
|
(ha-slack-to-markdown-buffer)
|
||||||
(shell-command-on-region (point-min) (point-max) "pandoc -f markdown -t org" t t))
|
(shell-command-on-region (point-min) (point-max) "pandoc -f markdown -t org" t t))
|
||||||
(ha/html-paste-touchup)
|
(ha-html-paste-touchup)
|
||||||
(buffer-substring-no-properties (point-min) (point-max)))))
|
(buffer-substring-no-properties (point-min) (point-max)))))
|
||||||
|
|
||||||
(defun ha/html-paste-touchup ()
|
(defun ha-html-paste-touchup ()
|
||||||
"Attempts to fix the org produced by `pandoc'' that seems to plague us."
|
"Attempts to fix the org produced by `pandoc'' that seems to plague us."
|
||||||
(interactive)
|
(interactive)
|
||||||
(dolist (combo '((" (edited) " " ") ; Slack appends this phrase that is never needed
|
(dolist (combo '((" (edited) " " ") ; Slack appends this phrase that is never needed
|
||||||
|
@ -164,11 +164,11 @@ The heavy lifting, however is done by this function. Note that I will need anoth
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
* Keybinding to Paste into Org Files
|
* Keybinding to Paste into Org Files
|
||||||
We
|
We just need to bind it to the /local/ mode key sequence:
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(general-evil-define-key 'normal org-mode-map
|
(general-evil-define-key 'normal org-mode-map
|
||||||
:prefix "SPC m"
|
:prefix "SPC m"
|
||||||
"y" 'ha/org-yank-clipboard)
|
"y" 'ha-org-yank-clipboard)
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
* Technical Artifacts :noexport:
|
* Technical Artifacts :noexport:
|
||||||
|
|
|
@ -290,10 +290,12 @@ To make the snippets more context aware, this predicate
|
||||||
(plist-get (cadr (org-element-at-point)) :language)))
|
(plist-get (cadr (org-element-at-point)) :language)))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
** Keybindings
|
** Keybindings
|
||||||
Ugh
|
Keybindings specific to org files:
|
||||||
#+BEGIN_SRC emacs-lisp :tangle no
|
#+BEGIN_SRC emacs-lisp :tangle no
|
||||||
(ha-leader :keymaps 'org-mode-map
|
(general-evil-define-key 'normal org-mode-map
|
||||||
"m l" 'org-insert-link)
|
:prefix "SPC m"
|
||||||
|
"e" 'org-export-dispatch
|
||||||
|
"y" 'org-insert-link)
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
* Supporting Packages
|
* Supporting Packages
|
||||||
At this point, we assume that the =use-package= for org is complete, so we can close it and allow other projects to be loaded:
|
At this point, we assume that the =use-package= for org is complete, so we can close it and allow other projects to be loaded:
|
||||||
|
|
Loading…
Reference in a new issue