[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Emacs as a translator's tool

From: Emanuel Berg
Subject: Re: Emacs as a translator's tool
Date: Wed, 10 Jun 2020 03:02:44 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)

Marcin Borkowski wrote:

> Well, if that code works for you, then great.
> But it has two issues from my POV.
> 1. It is inefficient, in the sense that every
> overlay belongs to some buffer. No need to keep the
> variable `source-buffer'.

Ah, now I understand what I mean, well, I don't know
if it really makes it more efficient to extract it
every time (depends on definition of efficiency) but
maybe the code gets prettier that way, so OK:

;;; -*- lexical-binding: t -*-
;;; this file:

(defvar sentence-overlay nil)

(defun remove-highlight ()
  (when (overlayp sentence-overlay)
    (delete-overlay sentence-overlay) ))

(defun highlight-sentence ()
  (let ((beg (progn (forward-sentence)    (point)))
        (end (progn (forward-sentence -1) (point))) )
    (if (overlayp sentence-overlay)
        (move-overlay sentence-overlay beg end)
      (let ((overlay (make-overlay beg end)))
        (overlay-put overlay 'face 'font-lock-comment-face)
        (setq sentence-overlay overlay) ))))
(defalias 'hs-init #'highlight-sentence)

(defun highlight-sentence-move (next)
  (if (overlayp sentence-overlay)
      (with-current-buffer (overlay-buffer sentence-overlay)
        (forward-sentence (if next 1 -1))
        (highlight-sentence) )
    (highlight-sentence) ))

(defun highlight-sentence-next ()
  (highlight-sentence-move t) )

(defun highlight-sentence-prev ()
  (highlight-sentence-move nil) )

> BTW, I like the trick with negative one as argument
> to `forward-sentence'.

Right, its cool :)

underground experts united

reply via email to

[Prev in Thread] Current Thread [Next in Thread]