[Emacs] Code style, prompt fix for Eshell
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				continuous-integration/drone/push Build is passing
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	continuous-integration/drone/push Build is passing
				
			A bug was introduced in b97bbf8 with the fix for Eshell, where the abbreviated path was not used anymore. This commit fixes it. This commit also introduces the new macro `phundrak/var-or-if-nil' which is documented in the code. It has replaced some code already. The coding style of some recent functions have been updated too, arguments names now begin with a dollar `$' sign. This is just stylistic and it has no influence on the code whatsoever. Finally, some nested `if's in `phundrak/abbr-pwd' were converted in a single `cond', which led to renaming two variables in order to avoid a collision between the variable and the function `push' – `pull' has been renamed accordingly.
This commit is contained in:
		
							parent
							
								
									e6bb054b7a
								
							
						
					
					
						commit
						9cfa1c1ac4
					
				@ -1375,8 +1375,21 @@
 | 
			
		||||
    create strings with faces defined as  properties to the string passed as the
 | 
			
		||||
    first argument. Here is how it is implemented:
 | 
			
		||||
    #+BEGIN_SRC emacs-lisp
 | 
			
		||||
       (defmacro with-face (str &rest properties)
 | 
			
		||||
         `(propertize ,str 'face (list ,@properties)))
 | 
			
		||||
      (defmacro with-face ($str &rest $properties)
 | 
			
		||||
        `(propertize ,$str 'face (list ,@$properties)))
 | 
			
		||||
    #+END_SRC
 | 
			
		||||
 | 
			
		||||
*** ~phundrak/var-or-if-nill~
 | 
			
		||||
    :PROPERTIES:
 | 
			
		||||
    :CUSTOM_ID: User_Configuration-Custom_functions,_macros,_and_variables-phundrakvar-or-if-nill-0d320f92
 | 
			
		||||
    :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).
 | 
			
		||||
    #+BEGIN_SRC emacs-lisp
 | 
			
		||||
      (defmacro phundrak/var-or-if-nil ($var &rest $value)
 | 
			
		||||
        `(if (null ,$var)
 | 
			
		||||
             ,@$value
 | 
			
		||||
           ,$var))
 | 
			
		||||
    #+END_SRC
 | 
			
		||||
 | 
			
		||||
*** ~phundrak/abbr-pwd~
 | 
			
		||||
@ -1388,21 +1401,21 @@
 | 
			
		||||
    path, but  leaves the current one  written in full. It  also abbreviates the
 | 
			
		||||
    equivalent of the ~$HOME~ (~/home/<username>/~) directory to a simple =~=.
 | 
			
		||||
    #+BEGIN_SRC emacs-lisp
 | 
			
		||||
      (defun phundrak/abbr-pwd (&optional abbreviate path abbreviating)
 | 
			
		||||
      (defun phundrak/abbr-pwd (&optional $abbreviate $path $abbreviating)
 | 
			
		||||
        (cond
 | 
			
		||||
         ((and (null path)
 | 
			
		||||
               abbreviating) "")
 | 
			
		||||
         ((and abbreviate
 | 
			
		||||
               (= 1 (length path)))
 | 
			
		||||
          (car path))
 | 
			
		||||
         ((and abbreviate path)
 | 
			
		||||
          (f-join (let* ((dir (car path))
 | 
			
		||||
         ((and (null $path)
 | 
			
		||||
               $abbreviating) "")
 | 
			
		||||
         ((and $abbreviate
 | 
			
		||||
               (= 1 (length $path)))
 | 
			
		||||
          (car $path))
 | 
			
		||||
         ((and $abbreviate $path)
 | 
			
		||||
          (f-join (let* ((dir (car $path))
 | 
			
		||||
                         (first-char (s-left 1 dir)))
 | 
			
		||||
                    (if (string= "." first-char)
 | 
			
		||||
                        (s-left 2 dir)
 | 
			
		||||
                      first-char))
 | 
			
		||||
                  (phundrak/abbr-pwd t (cdr path) t)))
 | 
			
		||||
         (abbreviate (f-short (phundrak/abbr-pwd t (f-split (phundrak/abbr-pwd)))))
 | 
			
		||||
                  (phundrak/abbr-pwd t (cdr $path) t)))
 | 
			
		||||
         ($abbreviate (f-short (phundrak/abbr-pwd t (f-split (phundrak/abbr-pwd)))))
 | 
			
		||||
         (t (f-short (eshell/pwd)))))
 | 
			
		||||
    #+END_SRC
 | 
			
		||||
 | 
			
		||||
@ -1446,7 +1459,7 @@
 | 
			
		||||
    build a git prompt  that will be inserted in my Eshell  prompt. And just for
 | 
			
		||||
    shit and giggles, I’ve made it so it is a powerline prompt.
 | 
			
		||||
    #+BEGIN_SRC emacs-lisp
 | 
			
		||||
      (defun phundrak/eshell-git-status ($path &optional background-color)
 | 
			
		||||
      (defun phundrak/eshell-git-status ($path &optional $background-color)
 | 
			
		||||
        "Returns a string indicating the status of the current
 | 
			
		||||
      repository if it exists. It should also append the name of the
 | 
			
		||||
      current branch if it is not `master' or `main'. The theme is
 | 
			
		||||
@ -1476,8 +1489,8 @@
 | 
			
		||||
                   (staged    (s-contains? "Changes to be committed" status))
 | 
			
		||||
                   (untracked (s-contains? "Untracked files" status))
 | 
			
		||||
                   (stash     (not (null stashstat)))
 | 
			
		||||
                   (pull      (s-contains? "git pull" status))
 | 
			
		||||
                   (push      (s-contains? "git push" 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    (if (or (string= "master" branch)
 | 
			
		||||
                                      (string= "main" branch))
 | 
			
		||||
@ -1491,16 +1504,17 @@
 | 
			
		||||
                                    (if dirty "*")
 | 
			
		||||
                                    (if staged "~")
 | 
			
		||||
                                    (if untracked "…")
 | 
			
		||||
                                    (if (and pull push) "±"
 | 
			
		||||
                                      (if pull "-"
 | 
			
		||||
                                        (if push "+")))
 | 
			
		||||
                                    (cond ((and pullable pushable) "±")
 | 
			
		||||
                                          (pullable "-")
 | 
			
		||||
                                          (pushable "+"))
 | 
			
		||||
                                    (if stash "$")
 | 
			
		||||
                                    " "))
 | 
			
		||||
                    (accent (cond
 | 
			
		||||
                             (dirty phundrak/nord11)
 | 
			
		||||
                             (staged phundrak/nord13)
 | 
			
		||||
                             (t phundrak/nord14)))
 | 
			
		||||
                    (background (if background-color background-color phundrak/nord0)))
 | 
			
		||||
                    (background (phundrak/var-or-if-nil $background-color
 | 
			
		||||
                                                        phundrak/nord0)))
 | 
			
		||||
                (concat (with-face ""
 | 
			
		||||
                                   :background accent
 | 
			
		||||
                                   :foreground background)
 | 
			
		||||
@ -1949,7 +1963,7 @@
 | 
			
		||||
                ($abbr-path (phundrak/abbr-pwd phundrak/prompt--abbreviate))
 | 
			
		||||
                ($background phundrak/nord1))
 | 
			
		||||
           (concat (with-face " " :background $background)
 | 
			
		||||
                   (with-face $path
 | 
			
		||||
                   (with-face $abbr-path
 | 
			
		||||
                              :foreground phundrak/nord14
 | 
			
		||||
                              :background $background)
 | 
			
		||||
                   ;; add git status if it exists
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user