Default Settings
You can set some default settings.
;set the initial frame, different for each monitor
(setq initial-frame-alist '((left . 250) (top . 25) (height . 40) (width . 110)
(left-fringe . 6) (right-fringe . 6)))
;set default frame
(setq default-frame-alist (copy-alist initial-frame-alist))
;Auto refresh buffers including dired
(setq global-auto-revert-non-file-buffers t)
; Do not generate any messages (be quiet about refreshing Dired).
(setq auto-revert-verbose nil)
;Auto refresh buffers
(global-auto-revert-mode 1)
;encourage new frame over new window
(setq split-window-preferred-function nil)
;(setq split-window-preferred-function 'split-window-sensibly)
;two identical buffers get uniquely numbered names
(require 'uniquify)
;if window smaller 90 split below, over split beside
(setq split-width-threshold 90)
(setq uniquify-buffer-name-style 'forward)
;; Allow recursive minibuffers
(setq enable-recursive-minibuffers t)
;;show recursion depth in minibuffer
(minibuffer-depth-indicate-mode t)
;; Save minibuffer history
(savehist-mode 1)
(setq history-length 1000)
;Killing line deletes it
(setq kill-whole-line t)
;Down arrow won't add \n
(setq next-line-add-newlines t)
;newline required
;(setq require-final-newline t)
;Iterate through CamelCase words diminished
(with-eval-after-load 'subword
(diminish 'subword-mode))
(global-subword-mode +1)
; Don't break lines
(setq-default truncate-lines t)
Go to Line
; go to line with feedback
;quit-selection-here
(defun goto-line-with-feedback ()
"Show line numbers temporarily, while prompting for the line number input"
(interactive)
(unwind-protect
(progn
(display-line-numbers-mode 1)
(goto-line (read-number "Goto line: ")))
(display-line-numbers-mode 0)))
Append Lines
(defun append-lines ()
"add next line to current line"
(lambda ()
(interactive)
(join-line -1)))
Open File in Default App From Dired
(defun xah-open-in-external-app (&optional file)
"Open the current file or dired marked files in external app.
The app is chosen from your OS's preference."
(interactive)
(let ( doIt
(myFileList
(cond
((string-equal major-mode "dired-mode") (dired-get-marked-files))
((not file) (list (buffer-file-name)))
(file (list file)))))
(setq doIt (if (<= (length myFileList) 5)
t
(y-or-n-p "Open more than 5 files? ") ) )
(when doIt
(cond
((string-equal system-type "windows-nt")
(mapc (lambda (fPath) (w32-shell-execute "open" (replace-regexp-in-string "/" "\\" fPath t t)) ) myFileList))
((string-equal system-type "darwin")
(mapc (lambda (fPath) (shell-command (format "open \"%s\"" fPath)) ) myFileList) )
((string-equal system-type "gnu/linux")
(mapc (lambda (fPath) (let ((process-connection-type nil)) (start-process "" nil "xdg-open" fPath)) ) myFileList) ) ) ) ) )
Dates And Times
;; Date and time functions
(defvar current-date-time-format "%a %b %d %Y %H:%M:%S %Z "
"Format of date to insert with `insert-current-date-time' func
See help of `format-time-string' for possible replacements")
;
(defvar current-date-format "%d %b %Y "
"Format of date to insert with `insert-current-date-time' func
See help of `format-time-string' for possible replacements")
;
(defvar current-time-format "%a %H:%M:%S"
"Format of date to insert with `insert-current-time' func.
Note the weekly scope of the command's precision.")
;
(defun insert-current-date-time ()
"insert the current date and time into current buffer.
Uses `current-date-time-format' for the formatting the date/time."
(interactive)
; (insert (let () (comment-start)))
(insert (format-time-string current-date-time-format (current-time)))
)
;
(defun insert-current-date ()
"insert the current date and time into current buffer.
Uses `current-date-format' for the formatting the date/time."
(interactive)
; (insert (let () (comment-start)))
(insert (format-time-string current-date-format (current-time)))
)
;
(defun insert-current-time ()
"insert the current time (1-week scope) into the current buffer."
(interactive)
(insert (format-time-string current-time-format (current-time)))
)
(bind-key "\C-c\C-y" 'insert-current-date)
(bind-key "\C-c\C-t" 'insert-current-time)