diff --git a/.emacs.d/init.el b/.emacs.d/init.el index c74f62e..0296816 100644 --- a/.emacs.d/init.el +++ b/.emacs.d/init.el @@ -151,8 +151,6 @@ (setq php-function-call-face 'font-lock-function-name-face) (setq php-mode-force-pear t) (setq pony-tpl-indent-moves t) -(setq pp^L-^L-string-function 'oni:pretty-control-l-function) -(setq pp^L-^L-string-pre nil) (setq rainbow-delimiters-max-face-count 12) (setq redisplay-dont-pause t) (setq send-mail-function 'smtpmail-send-it) diff --git a/.emacs.d/init.org b/.emacs.d/init.org index f4acfca..95b935f 100644 --- a/.emacs.d/init.org +++ b/.emacs.d/init.org @@ -216,95 +216,126 @@ '(python-pylint python-pyflakes)))) #+END_SRC -** Eshell +* pretty-control-l-mode - Add ~unison~ to the list of =eshell-visual-commands= because it - expects unbuffered input and eshell just doesn't give that. + Make the ~C-l~ look like a line of ~-~ up to =fill-column= or + =fci-rule-column= and remove the string displayed before the ~C-l~. - #+BEGIN_SRC emacs-lisp :tangle init2.el - (eval-after-load "em-term" - '(add-to-list 'eshell-visual-commands "unison")) - #+END_SRC + #+BEGIN_SRC emacs-lisp :tangle init2.el + (defun oni:pretty-control-l-function (win) + "Just make a string of either `fci-rule-column' or + `fill-column' length -1. Use the `-' character. WIN is ignored." + (make-string + (1- (if (boundp 'fci-rule-column) + fci-rule-column fill-column)) ?-)) - Don't let eshell highlight it's prompt, this way I can decide the - colors for it myself. + (setq pp^L-^L-string-function 'oni:pretty-control-l-function) + #+END_SRC - #+BEGIN_SRC emacs-lisp :tangle init2.el - (setq eshell-highlight-prompt nil) - #+END_SRC + Remove the string displayed before the ~C-l~. - In the prompt: + #+BEGIN_SRC emacs-lisp :tangle init2.el + (setq pp^L-^L-string-pre nil) + #+END_SRC - - Show the exit status of the last program/command run represented - by a green ~+~ and a red ~-~ sign. - - Show the current hostname with the =mode-line-buffer-id= face. - - Show an abbreviation of the current directory (as seen in ~fish~) - using the =font-lock-string-face= face. - - If we're in a git repository, show the current branch with the - =font-lock-function-name-face= face. - - Show the status of priviledges in blue. + Enable =pretty-control-l-mode= at startup and whenever a new frame is + created. - And set the =eshell-prompt-regexp= to + #+BEGIN_SRC emacs-lisp :tangle init2.el + (add-hook 'emacs-startup-hook 'pretty-control-l-mode) + (add-hook 'after-make-frame-functions + '(lambda (arg) (pretty-control-l-mode))) + #+END_SRC - #+BEGIN_SRC emacs-lisp :tangle init2.el - (defun oni:eshell-prompt-function () - "Show a pretty shell prompt." - (let ((status (if (zerop eshell-last-command-status) ?+ ?-)) - (hostname (shell-command-to-string "hostname")) - (dir (abbreviate-file-name (eshell/pwd))) - (branch - (shell-command-to-string - "git branch --contains HEAD 2>/dev/null | sed -e '/^[^*]/d'")) - (userstatus (if (zerop (user-uid)) ?# ?$))) - (concat - (propertize (char-to-string status) - 'face `(:foreground ,(if (= status ?+) - "green" - "red"))) - " " - (propertize (substring hostname 0 -1) 'face 'mode-line-buffer-id) - " " - (propertize (oni:shorten-dir dir) 'face 'font-lock-string-face) - " " - (when (not (string= branch "")) - (propertize - ;; Cut off "* " and "\n" - (substring branch 2 -1) - 'face 'font-lock-function-name-face)) - " \n" - (propertize (char-to-string userstatus) - 'face `(:foreground "blue")) - "> "))) +* Eshell - (setq eshell-prompt-function 'oni:eshell-prompt-function - eshell-prompt-regexp "^[#$]> ") - #+END_SRC + Add ~unison~ to the list of =eshell-visual-commands= because it + expects unbuffered input and eshell just doesn't give that. - Don't truncate lines in eshell, wrap them. + #+BEGIN_SRC emacs-lisp :tangle init2.el + (eval-after-load "em-term" + '(add-to-list 'eshell-visual-commands "unison")) + #+END_SRC - #+BEGIN_SRC emacs-lisp :tangle init2.el - (defun oni:eshell-mode-func () - "Function for `eshell-mode-hook'." - (setq truncate-lines nil)) + Don't let eshell highlight it's prompt, this way I can decide the + colors for it myself. - (add-hook 'eshell-mode-hook 'oni:eshell-mode-func) - #+END_SRC + #+BEGIN_SRC emacs-lisp :tangle init2.el + (setq eshell-highlight-prompt nil) + #+END_SRC - Bind the ~f8~ key to easily show eshell. + In the prompt: - #+BEGIN_SRC emacs-lisp :tangle init2.el - (defun oni:raise-eshell () - "Start or switch back to `eshell'. - Also change directories to current working directory." - (interactive) - (let ((dir (file-name-directory - (or (buffer-file-name) "~/"))) - (hasfile (not (eq (buffer-file-name) nil)))) - (eshell) - (if (and hasfile (eq eshell-process-list nil)) - (progn - (eshell/cd dir) - (eshell-reset))))) + - Show the exit status of the last program/command run represented + by a green ~+~ and a red ~-~ sign. + - Show the current hostname with the =mode-line-buffer-id= face. + - Show an abbreviation of the current directory (as seen in ~fish~) + using the =font-lock-string-face= face. + - If we're in a git repository, show the current branch with the + =font-lock-function-name-face= face. + - Show the status of priviledges in blue. - (global-set-key (kbd "") 'oni:raise-eshell) - #+END_SRC + And set the =eshell-prompt-regexp= to + + #+BEGIN_SRC emacs-lisp :tangle init2.el + (defun oni:eshell-prompt-function () + "Show a pretty shell prompt." + (let ((status (if (zerop eshell-last-command-status) ?+ ?-)) + (hostname (shell-command-to-string "hostname")) + (dir (abbreviate-file-name (eshell/pwd))) + (branch + (shell-command-to-string + "git branch --contains HEAD 2>/dev/null | sed -e '/^[^*]/d'")) + (userstatus (if (zerop (user-uid)) ?# ?$))) + (concat + (propertize (char-to-string status) + 'face `(:foreground ,(if (= status ?+) + "green" + "red"))) + " " + (propertize (substring hostname 0 -1) 'face 'mode-line-buffer-id) + " " + (propertize (oni:shorten-dir dir) 'face 'font-lock-string-face) + " " + (when (not (string= branch "")) + (propertize + ;; Cut off "* " and "\n" + (substring branch 2 -1) + 'face 'font-lock-function-name-face)) + " \n" + (propertize (char-to-string userstatus) + 'face `(:foreground "blue")) + "> "))) + + (setq eshell-prompt-function 'oni:eshell-prompt-function + eshell-prompt-regexp "^[#$]> ") + #+END_SRC + + Don't truncate lines in eshell, wrap them. + + #+BEGIN_SRC emacs-lisp :tangle init2.el + (defun oni:eshell-mode-func () + "Function for `eshell-mode-hook'." + (setq truncate-lines nil)) + + (add-hook 'eshell-mode-hook 'oni:eshell-mode-func) + #+END_SRC + + Bind the ~f8~ key to easily show eshell. + + #+BEGIN_SRC emacs-lisp :tangle init2.el + (defun oni:raise-eshell () + "Start or switch back to `eshell'. + Also change directories to current working directory." + (interactive) + (let ((dir (file-name-directory + (or (buffer-file-name) "~/"))) + (hasfile (not (eq (buffer-file-name) nil)))) + (eshell) + (if (and hasfile (eq eshell-process-list nil)) + (progn + (eshell/cd dir) + (eshell-reset))))) + + (global-set-key (kbd "") 'oni:raise-eshell) + #+END_SRC diff --git a/.emacs.d/site-lisp/oni.el b/.emacs.d/site-lisp/oni.el index 1afe1d6..a5ee2eb 100644 --- a/.emacs.d/site-lisp/oni.el +++ b/.emacs.d/site-lisp/oni.el @@ -369,13 +369,6 @@ When dealing with braces, add another line and indent that too." (setq-local fci-rule-column 80) (flycheck-mode)) -(defun oni:pretty-control-l-function (win) - "Just make a string of either `fci-rule-column' or -`fill-column' length -1. Use the `-' character. WIN is ignored." - (make-string - (1- (if (boundp 'fci-rule-column) - fci-rule-column fill-column)) ?-)) - (defun oni:prog-mode-func () "Function for `prog-mode-hook'." (rainbow-delimiters-mode)