Monday, August 11, 2008

Remove duplicated lines in region


(defun u:remove-duplicates (beg end)
(interactive "r")

(let* ((str (mapconcat 'identity
(remove-duplicates
(split-string (buffer-substring beg end) "[\n\r]+" t)
:test 'string=)
"\n")))

(delete-region beg end)
(insert str)))

Updated u:load-alternative


(defvar u:*dir-delim* "/")
(defvar u:*sfile-exts* '("mm" "m" "cpp" "cp" "c" ))

;; LOAD HEADER FROM SOURCE AND VICE VERSE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun u:load-alternate ()
(interactive)
(let ((fname (buffer-file-name))
(templ (format "\\(.*%s\\)?\\(\\(.*?\\)_\\(.*\\)\\|\\(.*\\)\\)\\.\\(.*\\)" u:*dir-delim*)))

(when (string-match templ fname)
(let* ((dir (match-string 1 fname))
(nam1 (match-string 3 fname))
(nam2 (match-string 4 fname))
(nam0 (or (match-string 5 fname)
(match-string 2 fname)))
(ext (match-string 6 fname))

(fname (cond
((member ext u:*sfile-exts*)
(dolist (name (list nam0 nam1))
(let ((fname (if dir
(format "%s%s.h" dir name)
(format "%s.h" name))))

(when (file-readable-p fname)
(return fname)))))

((string-equal ext "h")
(dolist (ext u:*sfile-exts*)
(let ((fname (if dir
(format "%s%s.%s" dir nam0 ext)
(format "%s.%s" nam0 ext))))
(when (file-readable-p fname)
(return fname))))))))

(when fname (find-file fname))))))

Thursday, August 7, 2008