diff options
Diffstat (limited to 'emacs.d/lib/funcs.el')
-rw-r--r-- | emacs.d/lib/funcs.el | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/emacs.d/lib/funcs.el b/emacs.d/lib/funcs.el new file mode 100644 index 0000000..18899f6 --- /dev/null +++ b/emacs.d/lib/funcs.el @@ -0,0 +1,100 @@ +;;; funcs.el --- functions for my own usage + +(defun fc/load-time (emacs-start-time) + "How long did it take to load the configuration." + (let ((load-time (float-time (time-subtract (current-time) emacs-start-time)))) + (message (format "Emacs loaded in %.3fs" load-time)))) + +(defun fc/system-info () + "Display system informations" + (format + (concat "### System information :\n" + "- OS: %s\n" + "- Emacs: %s") + system-type + emacs-version)) + +(defun fc/emacs-is-ready () + "Emacs is ready" + (message "Emacs is ready.")) + +;; font manipulation +(defun fc/scale-up-or-down-font-size (direction) + "Scale the font. If DIRECTION is positive or zero the font is scaled up, +otherwise it is scaled down." + (interactive) + (let ((scale 0.5)) + (if (eq direction 0) + (text-scale-set 0) + (if (< direction 0) + (text-scale-decrease scale) + (text-scale-increase scale))))) + +(defun fc/scale-up-font () + "Scale up the font." + (interactive) + (fc/scale-up-or-down-font-size 1)) + +(defun fc/scale-down-font () + "Scale up the font." + (interactive) + (fc/scale-up-or-down-font-size -1)) + +(defun fc/reset-font-size () + "Reset the font size." + (interactive) + (fc/scale-up-or-down-font-size 0)) + +;; jump to the scratch buffer +(defun fc/switch-to-scratch () + "Switch to scratch, grab the region if it's active." + (interactive) + (let ((contents + (and (region-active-p) + (buffer-substring (region-beginning) + (region-end))))) + (switch-to-buffer "*scratch*") + (if contents + (progn + (goto-char (buffer-end 1)) + (insert contents))))) + +(global-set-key (kbd "s-N") 'fc/switch-to-scratch) + +;; rename a buffer +(defun fc/rename-this-buffer-and-file () + "Renames current buffer and file it is visiting." + (interactive) + (let ((name (buffer-name)) + (filename (buffer-file-name)) + (read-file-name-function 'read-file-name-default)) + (if (not (and filename (file-exists-p filename))) + (error "Buffer '%s' is not visiting a file!" name) + (let ((new-name (read-file-name "New name: " filename))) + (cond ((get-buffer new-name) + (error "A buffer named '%s' already exists!" new-name)) + (t + (rename-file filename new-name 1) + (rename-buffer new-name) + (set-visited-file-name new-name) + (set-buffer-modified-p nil) + (message "File '%s' successfully renamed to '%s'" name (file-name-nondirectory new-name)))))))) + +;; create temporary files +(defun fc/start--file (path) + "Create a file at PATH, creating any containing directories as necessary. +Visit the file after creation." + (make-directory (file-name-directory path) t) + (find-file path)) + +(defun fc/start-tmp-file (file-name) + "Create a file in /tmp for the given file name." + (interactive "sName of temporary file: ") + (fc/start--file (expand-file-name (format "/tmp/%s" file-name)))) + +(defun fc/start-nest-tmp-file (file-name) + "Create a file in ~/tmp on nest for the give file name." + (interactive "sName of the temporary file: ") + (fc/start--file (expand-file-name (format "/nest:~/tmp/%s" file-name)))) + +(provide 'funcs) |