blob: 1f0e9ab49398adceedbf7a99f2d62ffd51f00deb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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
|