My emacs functions

Table of Contents

1. My emacs functions

These are some elisp functions I wrote.

1.1. cHelper

cHelper is a little project of mine. Until now it can only create .h files from .c files in some cases :). It has a little readme. cHelper

1.2. PC status

This is a function that displays a conky like minibuffer which contains some info about your battery status, time and so on.

(defun read-file (path)
  "reads a file and returns its content."
  (with-temp-buffer
    (insert-file-contents path)
    (buffer-string)))


(defun show-conky ()
  "prints some information about the current battery status, volume and so on"
  (interactive)
  (setq conky (shell-command-to-string "date"))
  (let  ((cmd (shell-command-to-string "amixer get Master")))
    (string-match "\[[0-9]*\%\]" cmd)
    (setq conky (concat conky "Sound: " (match-string 0 cmd) " "))
    (if (numberp (string-match "\\[on\\]" cmd))
	(setq conky (concat conky "on\n"))
      (setq conky (concat conky "off\n"))))
  (setq conky (concat conky "Battery: "
		      (comment-string-strip (read-file "/sys/class/power_supply/BAT1/capacity") t t) "% "))
  (setq conky (concat conky (read-file "/sys/class/power_supply/BAT1/status")))
  (message "%s" conky))

1.3. Backup

This is a little backup script I wrote. You should adjust /home/user to your home directory's path.

(defun create-backup-archive (destination)
  "DESTINATION is a device (e.g. /dev/sdb1) where the tar.gz file should be placed
it has the name bkp-Y-m-d.tar.gz.gpg"
  (let* ((archive-name (format-time-string "bkp-%Y-%m-%d.tar.gz"))
	 (tar-cmd (concat "tar cfz /tmp/" archive-name " /home/user")))
    (progn (shell-command tar-cmd)
	   (epa-encrypt-file (concat "/tmp/" archive-name) nil)
	   (let ((default-directory "/sudo::/"))
	     (progn (shell-command (concat "mount " destination " /mnt"))
		    ; I rather wanted to use (copy-file) but it gave me a permission denied error
		    ; this is my workaround.
		    (shell-command (concat "mv /tmp/" archive-name ".gpg /mnt/" archive-name ".gpg"))
		    (shell-command "umount /mnt"))))))

Author: eisbaer

Created: 2022-10-31 Mon 00:24

Validate