fix errors when trying to add linenumbers outside of a src-block
This commit is contained in:
parent
a2a5fbc140
commit
0aea302ff0
@ -41,24 +41,36 @@
|
|||||||
(remove-hook 'post-command-hook #'scimax-ob-add-line-numbers t))
|
(remove-hook 'post-command-hook #'scimax-ob-add-line-numbers t))
|
||||||
|
|
||||||
(defun scimax-ob-add-line-numbers ()
|
(defun scimax-ob-add-line-numbers ()
|
||||||
"Add line numbers to the current Org source block."
|
"Add line numbers to an org src-block."
|
||||||
(interactive)
|
(interactive)
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(let* ((src-block (org-element-context))
|
(let* ((src-block (org-element-context)))
|
||||||
(nlines (- (length (s-split "\n" (org-element-property :value src-block))) 1)))
|
(when (eq (org-element-type src-block) 'src-block)
|
||||||
|
;;iAdrian patch - fix 'wrong-type-argument stringp nil' coming from the 'org-element-property :value src-block => nil' when trying to add linenumbers outside of a src-block (see commented code below which is the original version)
|
||||||
|
(let* ((value (org-element-property :value src-block))
|
||||||
|
(nlines (if value (1- (length (s-split "\n" value))) 0)))
|
||||||
|
;; (let* ((src-block (org-element-context))
|
||||||
|
;; (nlines (- (length (s-split "\n" (org-element-property :value src-block))) 1)))
|
||||||
|
;; clear any existing overlays
|
||||||
(scimax-ob-remove-line-numbers)
|
(scimax-ob-remove-line-numbers)
|
||||||
|
|
||||||
(goto-char (org-element-property :begin src-block))
|
(goto-char (org-element-property :begin src-block))
|
||||||
|
;; the beginning may be header, so we move forward to get the #+BEGIN
|
||||||
|
;; line. Then jump one more to get in the code block
|
||||||
(while (not (looking-at "#\\+BEGIN"))
|
(while (not (looking-at "#\\+BEGIN"))
|
||||||
(forward-line))
|
(forward-line))
|
||||||
(forward-line)
|
(forward-line)
|
||||||
(cl-loop for i from 1 to nlines do
|
(cl-loop for i from 1 to nlines
|
||||||
|
do
|
||||||
(beginning-of-line)
|
(beginning-of-line)
|
||||||
(let ((ov (make-overlay (point) (point))))
|
(let ((ov (make-overlay (point) (point))))
|
||||||
(overlay-put ov 'before-string
|
(overlay-put
|
||||||
(propertize (format "%03s " i)
|
ov
|
||||||
|
'before-string (propertize
|
||||||
|
(format "%03s " (number-to-string i))
|
||||||
'font-lock-face '(:foreground "fg-main" :background "bg-main")))
|
'font-lock-face '(:foreground "fg-main" :background "bg-main")))
|
||||||
(push ov scimax-ob-number-line-overlays))
|
(push ov scimax-ob-number-line-overlays))
|
||||||
(forward-line))))
|
(forward-line))))))
|
||||||
(add-hook 'post-command-hook #'scimax-ob-add-line-numbers nil 'local))
|
(add-hook 'post-command-hook #'scimax-ob-add-line-numbers nil 'local))
|
||||||
|
|
||||||
(provide 'scimax-ob-line-numbers)
|
(provide 'scimax-ob-line-numbers)
|
||||||
|
|||||||
Loading…
Reference in New Issue
user.block.title