summary refs log tree commit diff
path: root/emacs.d/lib/funcs.el
diff options
context:
space:
mode:
Diffstat (limited to 'emacs.d/lib/funcs.el')
-rw-r--r--emacs.d/lib/funcs.el100
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)