Skip to content

Commit

Permalink
Update semantic highlighting code in line with the update IDE protocol
Browse files Browse the repository at this point in the history
  • Loading branch information
Ohad Kammar committed Dec 8, 2021
1 parent 2e4b5c6 commit 8d69b70
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 7 deletions.
20 changes: 16 additions & 4 deletions idris-commands.el
Original file line number Diff line number Diff line change
Expand Up @@ -229,15 +229,27 @@ A prefix argument forces loading but only up to the current line."
for h in hs
do (pcase h
(`(((:filename ,fn)
(:start ,start-line ,start-col)
(:end ,end-line ,end-col))
(:start ,start-line-raw ,start-col-raw)
(:end ,end-line-raw ,end-col-raw))
,props)
(when (string= (file-name-nondirectory fn)
(file-name-nondirectory (buffer-file-name)))
(idris-highlight-input-region (current-buffer)
(let ((start-line (if (>=-protocol-version 2 1)
(+ 1 start-line-raw)
start-line-raw))
(start-col (if (>=-protocol-version 2 1)
(+ 1 start-col-raw)
start-col-raw))
(end-line (if (>=-protocol-version 2 1)
(+ 1 end-line-raw)
end-line-raw ))
(end-col (if (>= idris-protocol-version 2 1)
(+ 1 end-col-raw)
end-col-raw )))
(idris-highlight-input-region (current-buffer)
start-line start-col
end-line end-col
props))))))
props)))))))
(_ (idris-make-clean)
(idris-update-options-cache)

Expand Down
4 changes: 2 additions & 2 deletions idris-highlight-input.el
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,14 @@ See Info node `(elisp)Overlay Properties' to understand how ARGS are used."
(widen)
(if (or (> end-line start-line)
(and (= end-line start-line)
(>= end-col start-col)))
(> end-col start-col)))
(with-current-buffer buffer
(save-excursion
(goto-char (point-min))
(let* ((start-pos (+ (line-beginning-position start-line)
(idris-highlight-column start-col)))
(end-pos (+ (line-beginning-position end-line)
(idris-highlight-column (+ 1 end-col))))
(idris-highlight-column end-col)))
(highlight-overlay (make-overlay start-pos end-pos
(get-buffer buffer))))
(overlay-put highlight-overlay 'idris-source-highlight t)
Expand Down
9 changes: 8 additions & 1 deletion inferior-idris.el
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,18 @@
"The Idris connection.")

(defvar idris-protocol-version 0 "The protocol version")
(defvar idris-protocol-version-minor 0 "The protocol minor version")

(defun >=-protocol-version (major minor)
(or (> idris-protocol-version major)
(and (>= idris-protocol-version major)
(>= idris-protocol-version-minor minor))))

(defun idris-version-hook-function (event)
(pcase event
(`(:protocol-version ,version ,_target)
(`(:protocol-version ,version ,minor)
(setf idris-protocol-version version)
(setf idris-protocol-version-minor minor)
(remove-hook 'idris-event-hooks 'idris-version-hook-function)
t)))

Expand Down

0 comments on commit 8d69b70

Please sign in to comment.