summaryrefslogtreecommitdiffhomepage
path: root/prog
diff options
context:
space:
mode:
authorjao <jao@gnu.org>2020-08-04 19:46:54 +0100
committerjao <jao@gnu.org>2020-08-04 19:47:33 +0100
commit7827e93cd050e0e2ef029ccc460ceb567aa25937 (patch)
treed3c32a33474f51619a4c4bcc45a482f7bf433454 /prog
parent5d9ecda7133b9186ae65779964591899420b2340 (diff)
downloadelibs-7827e93cd050e0e2ef029ccc460ceb567aa25937.tar.gz
elibs-7827e93cd050e0e2ef029ccc460ceb567aa25937.tar.bz2
jao-sloc moved
Diffstat (limited to 'prog')
-rw-r--r--prog/jao-sloc.el33
1 files changed, 33 insertions, 0 deletions
diff --git a/prog/jao-sloc.el b/prog/jao-sloc.el
new file mode 100644
index 0000000..1f0e9ab
--- /dev/null
+++ b/prog/jao-sloc.el
@@ -0,0 +1,33 @@
+;; sloc.el -- LOC utilities
+
+;;;###autoload
+(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