[Emacs] Better code style, replace macro with function
`if's that had one branch are replaced with `when', and `if's which only actual branch is the else branch are replaced by `unless'. `phundrak/eshell-git-status' no longer verifies whether its `$path' argument points to a git repository, that is now the role of the callee. `phundrak/eshell-prompt' now makes use of more variables to make the code more readable. Some documentation is now formatted correctly
This commit is contained in:
parent
e8b206ef94
commit
72edabc4f1
@ -1380,19 +1380,19 @@
|
||||
`(propertize ,$str 'face (list ,@$properties)))
|
||||
#+END_SRC
|
||||
|
||||
*** ~phundrak/var-or-if-nill~
|
||||
*** ~phundrak/var-or-if-nil~
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: User_Configuration-Custom_functions_macros_and_variables-phundrakvar-or-if-nill-0d320f92
|
||||
:CUSTOM_ID: User-Configuration-Custom-functions-macros-and-variables_-phundrak-var-or-if-nil--5ed18c8f
|
||||
:END:
|
||||
This simple macro helps me return either the value ~var~ holds, or if it is
|
||||
~nil~ it will return the value ~value~ holds (or will return).
|
||||
This simple function helps me return either the value ~var~ holds, or if it
|
||||
is ~nil~ it will return the value ~value~ holds (or will return).
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(defmacro phundrak/var-or-if-nil ($var &rest $value)
|
||||
(defun phundrak/var-or-if-nil ($var $value)
|
||||
"Return the result yield by `$value' if `$var' is `nil', return
|
||||
`$var' otherwise"
|
||||
`(if (null ,$var)
|
||||
,@$value
|
||||
,$var))
|
||||
(if (null $var)
|
||||
$value
|
||||
$var))
|
||||
#+END_SRC
|
||||
|
||||
*** ~phundrak/abbr-path~
|
||||
@ -1459,8 +1459,8 @@
|
||||
element from `$elements' is already part of `$list', it will be
|
||||
ignored."
|
||||
(dolist ($e $elements)
|
||||
(if (not (member $e $list))
|
||||
(add-to-list '$list $e)))
|
||||
(unless (member $e $list)
|
||||
(add-to-list '$list $e)))
|
||||
$list)
|
||||
#+END_SRC
|
||||
|
||||
@ -1495,51 +1495,47 @@
|
||||
- `-': unpulled commits
|
||||
- `-': unpushed commits
|
||||
- `±': unpulled and unpushed commits"
|
||||
(if (magit-toplevel $path)
|
||||
(let* ((git-status-command (concat "cd " $path "; git status"))
|
||||
(git-stash-status-command (concat "cd " $path "; git stash list"))
|
||||
(status (eshell-command-result git-status-command))
|
||||
(stashstat (eshell-command-result git-stash-status-command))
|
||||
(detached (s-contains? "HEAD detached" status))
|
||||
(dirty (s-contains? "Changes not staged for commit" status))
|
||||
(staged (s-contains? "Changes to be committed" status))
|
||||
(untracked (s-contains? "Untracked files" status))
|
||||
(stash (not (null stashstat)))
|
||||
(pullable (s-contains? "git pull" status))
|
||||
(pushable (s-contains? "git push" status))
|
||||
(branch (replace-regexp-in-string "On Branch \\(.*\\)\n\\(.\\|\n\\)*" "\\1" status))
|
||||
(branch (if (or (string= "master" branch)
|
||||
(string= "main" branch))
|
||||
nil
|
||||
(if (s-contains? " " branch)
|
||||
nil
|
||||
branch))))
|
||||
(let ((prompt (concat " "
|
||||
(if detached ">" "")
|
||||
(if branch (concat " " branch " "))
|
||||
(if dirty "*")
|
||||
(if staged "~")
|
||||
(if untracked "…")
|
||||
(cond ((and pullable pushable) "±")
|
||||
(pullable "-")
|
||||
(pushable "+"))
|
||||
(if stash "$")
|
||||
" "))
|
||||
(accent (cond
|
||||
(dirty phundrak/nord11)
|
||||
(staged phundrak/nord13)
|
||||
(t phundrak/nord14)))
|
||||
(background (phundrak/var-or-if-nil $background-color
|
||||
phundrak/nord0)))
|
||||
(concat (with-face ""
|
||||
:background accent
|
||||
:foreground background)
|
||||
(with-face prompt
|
||||
:background accent
|
||||
:foreground (if dirty phundrak/nord6 background))
|
||||
(with-face ""
|
||||
:background background
|
||||
:foreground accent))))))
|
||||
(let* ((git-status-command (concat "cd " $path "; git status"))
|
||||
(git-stash-status-command (concat "cd " $path "; git stash list"))
|
||||
(status (eshell-command-result git-status-command))
|
||||
(stashstat (eshell-command-result git-stash-status-command))
|
||||
(detached (s-contains? "HEAD detached" status))
|
||||
(dirty (s-contains? "Changes not staged for commit" status))
|
||||
(staged (s-contains? "Changes to be committed" status))
|
||||
(untracked (s-contains? "Untracked files" status))
|
||||
(pullable (s-contains? "git pull" status))
|
||||
(pushable (s-contains? "git push" status))
|
||||
(branch (replace-regexp-in-string "On Branch \\(.*\\)\n\\(.\\|\n\\)*" "\\1" status))
|
||||
(branch (unless (or (string= "master" branch)
|
||||
(string= "main" branch)
|
||||
detached)
|
||||
branch)))
|
||||
(let ((prompt (concat " "
|
||||
(if detached ">" "")
|
||||
(when branch (concat " " branch " "))
|
||||
(when dirty "*")
|
||||
(when staged "~")
|
||||
(when untracked "…")
|
||||
(cond ((and pullable pushable) "±")
|
||||
(pullable "-")
|
||||
(pushable "+"))
|
||||
(when stashstat "$")
|
||||
" "))
|
||||
(accent (cond
|
||||
(dirty phundrak/nord11)
|
||||
(staged phundrak/nord13)
|
||||
(t phundrak/nord14)))
|
||||
(background (phundrak/var-or-if-nil $background-color
|
||||
phundrak/nord0)))
|
||||
(concat (with-face ""
|
||||
:background accent
|
||||
:foreground background)
|
||||
(with-face prompt
|
||||
:background accent
|
||||
:foreground (if dirty phundrak/nord6 background))
|
||||
(with-face ""
|
||||
:background background
|
||||
:foreground accent)))))
|
||||
#+END_SRC
|
||||
|
||||
*** ~phundrak/fill-paragraph~
|
||||
@ -1605,10 +1601,10 @@
|
||||
(defun phundrak/is-dir-a-git-repo ($path)
|
||||
"Return `t' if `$path' points to a git repository or one of its
|
||||
subdirectories"
|
||||
(cond
|
||||
((null $path) nil)
|
||||
((f-dir? (concat $path "/.git")) t)
|
||||
(t (phundrak/is-dir-a-git-repo (f-parent $path)))))
|
||||
(when $path
|
||||
(if (f-dir? (concat $path "/.git"))
|
||||
t
|
||||
(phundrak/is-dir-a-git-repo (f-parent $path)))))
|
||||
#+END_SRC
|
||||
|
||||
*** ~phundrak/yas-rust-new-assignments~
|
||||
@ -1993,25 +1989,24 @@
|
||||
Finally, a lambda character is displayed, either in blue or in
|
||||
red depending on if the last eshell command was a success or a
|
||||
failure respectively."
|
||||
(let* ((header-bg phundrak/nord0)
|
||||
($path (phundrak/abbr-path (eshell/pwd)))
|
||||
($abbr-path (phundrak/abbr-path $path phundrak/prompt--abbreviate))
|
||||
($background phundrak/nord1))
|
||||
(concat (with-face " " :background $background)
|
||||
(with-face $abbr-path
|
||||
:foreground phundrak/nord14
|
||||
(let* ((header-bg phundrak/nord0)
|
||||
($path (phundrak/abbr-path (eshell/pwd)))
|
||||
($abbr-path (phundrak/abbr-path $path phundrak/prompt--abbreviate))
|
||||
($background phundrak/nord1)
|
||||
($foreground phundrak/nord14)
|
||||
($success phundrak/nord10)
|
||||
($error phundrak/nord11))
|
||||
(concat (with-face (concat " " $abbr-path " ")
|
||||
:foreground $foreground
|
||||
:background $background)
|
||||
;; add git status if it exists
|
||||
(with-face " " :background $background)
|
||||
(if (phundrak/is-dir-a-git-repo $path)
|
||||
(phundrak/eshell-git-status $path $background))
|
||||
(with-face " " :background $background)
|
||||
(with-face "λ"
|
||||
(when (phundrak/is-dir-a-git-repo $path)
|
||||
(concat (phundrak/eshell-git-status $path $background)
|
||||
(with-face " " :background $background)))
|
||||
(with-face "λ "
|
||||
:foreground (if (zerop eshell-last-command-status)
|
||||
phundrak/nord10
|
||||
phundrak/nord11)
|
||||
$success
|
||||
$error)
|
||||
:background $background)
|
||||
(with-face " " :background $background)
|
||||
(with-face "" :foreground $background)
|
||||
" ")))
|
||||
#+END_SRC
|
||||
@ -2061,12 +2056,12 @@
|
||||
|
||||
An ID consists of two parts separated by a colon:
|
||||
- a prefix
|
||||
- a unique part that will be created according to
|
||||
- a unique part that will be created according to
|
||||
`org-id-method'.
|
||||
|
||||
PREFIX can specify the prefix, the default is given by the
|
||||
variable `org-id-prefix'. However, if PREFIX is the symbol
|
||||
`none', don't use any prefix even if `org-id-prefix' specifies
|
||||
PREFIX can specify the prefix, the default is given by the
|
||||
variable `org-id-prefix'. However, if PREFIX is the symbol
|
||||
`none', don't use any prefix even if `org-id-prefix' specifies
|
||||
one.
|
||||
|
||||
So a typical ID could look like \"Org-4nd91V40HI\"."
|
||||
@ -2074,8 +2069,8 @@
|
||||
""
|
||||
(concat (or prefix org-id-prefix)
|
||||
"-"))) unique)
|
||||
(if (equal prefix "-")
|
||||
(setq prefix ""))
|
||||
(when (equal prefix "-")
|
||||
(setq prefix ""))
|
||||
(cond
|
||||
((memq org-id-method
|
||||
'(uuidgen uuid))
|
||||
@ -2084,11 +2079,11 @@
|
||||
(setq unique (org-id-uuid))))
|
||||
((eq org-id-method 'org)
|
||||
(let* ((etime (org-reverse-string (org-id-time-to-b36)))
|
||||
(postfix (if org-id-include-domain
|
||||
(progn
|
||||
(require 'message)
|
||||
(concat "@"
|
||||
(message-make-fqdn))))))
|
||||
(postfix (when org-id-include-domain
|
||||
(progn
|
||||
(require 'message)
|
||||
(concat "@"
|
||||
(message-make-fqdn))))))
|
||||
(setq unique (concat etime postfix))))
|
||||
(t (error "Invalid `org-id-method'")))
|
||||
(concat prefix (car (split-string unique "-")))))
|
||||
@ -3793,7 +3788,7 @@
|
||||
(cond ((char-or-string-p $input-string) (insert $input-string))
|
||||
((listp $input-string) (dolist (elem $input-string)
|
||||
(insert (format "%s\n" elem)))))
|
||||
(if (not $switchbuf)
|
||||
(unless $switchbuf
|
||||
(switch-to-buffer oldbuf))))
|
||||
#+END_SRC
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user