diff options
author | jao <jao@gnu.org> | 2014-11-29 03:08:47 +0100 |
---|---|---|
committer | jao <jao@gnu.org> | 2014-11-29 03:08:47 +0100 |
commit | 87b038689e687aab059ab6574d371da444987402 (patch) | |
tree | 5421745a5d95c803c8330912e575104a04edbf7a | |
parent | f077073c1dbcf38407a524450afa5ec65844acc6 (diff) | |
download | elibs-87b038689e687aab059ab6574d371da444987402.tar.gz elibs-87b038689e687aab059ab6574d371da444987402.tar.bz2 |
New SLOC function
-rw-r--r-- | misc/jao-sloc.el | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/misc/jao-sloc.el b/misc/jao-sloc.el new file mode 100644 index 0000000..9e38017 --- /dev/null +++ b/misc/jao-sloc.el @@ -0,0 +1,32 @@ +;; sloc.el -- LOC utilities + +(defun count-sloc-region (beg end kind) + "Count source lines of code in region (or (narrowed part of) + the buffer when no region is active). SLOC means that empty + lines and comment-only lines are not taken into consideration. + + (function by Stefan Monnier). + " + (interactive + (if (use-region-p) + (list (region-beginning) (region-end) 'region) + (list (point-min) (point-max) 'buffer))) + (save-excursion + (goto-char beg) + (let ((count 0)) + (while (< (point) end) + (cond + ((nth 4 (syntax-ppss)) ;; BOL is already inside a comment. + (let ((pos (point))) + (goto-char (nth 8 (syntax-ppss))) + (forward-comment (point-max)) + (if (< (point) pos) (goto-char pos)))) ;; Just paranoia + (t (forward-comment (point-max)))) + (setq count (1+ count)) + (forward-line)) + (when kind + (message "SLOC in %s: %s." kind count))))) + + +(provide 'jao-sloc) +;;; sloc.el ends here |