From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Eric Abrahamsen Newsgroups: gmane.emacs.help Subject: Re: Emacs as a translator's tool Date: Sun, 07 Jun 2020 14:37:13 -0700 Message-ID: <87ftb6o8vq.fsf@ericabrahamsen.net> References: <871rn35lqc.fsf@mbork.pl> <87zh9r45ad.fsf@mbork.pl> <87h7vz2m5g.fsf@ebih.ebihd> <87d06k4rmg.fsf@mbork.pl> <87eeqzmanl.fsf@ebih.ebihd> <877dwmoboq.fsf@mbork.pl> <87bllypckg.fsf@ebih.ebihd> <87tuzpmnuo.fsf@mbork.pl> <87bllu4lx0.fsf@ebih.ebihd> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="69486"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Sun Jun 07 23:38:14 2020 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ji2ze-000HxG-HU for geh-help-gnu-emacs@m.gmane-mx.org; Sun, 07 Jun 2020 23:38:14 +0200 Original-Received: from localhost ([::1]:58812 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ji2zd-000664-IM for geh-help-gnu-emacs@m.gmane-mx.org; Sun, 07 Jun 2020 17:38:13 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:45172) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ji2z1-0005vQ-NB for help-gnu-emacs@gnu.org; Sun, 07 Jun 2020 17:37:35 -0400 Original-Received: from ericabrahamsen.net ([52.70.2.18]:58730 helo=mail.ericabrahamsen.net) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ji2yw-0001OZ-Vj for help-gnu-emacs@gnu.org; Sun, 07 Jun 2020 17:37:35 -0400 Original-Received: from localhost (c-73-254-86-141.hsd1.wa.comcast.net [73.254.86.141]) (Authenticated sender: eric@ericabrahamsen.net) by mail.ericabrahamsen.net (Postfix) with ESMTPSA id 8DD87FA12C for ; Sun, 7 Jun 2020 21:37:20 +0000 (UTC) In-Reply-To: <87bllu4lx0.fsf@ebih.ebihd> (Emanuel Berg via Users list for the's message of "Sun, 07 Jun 2020 23:15:55 +0200") Received-SPF: pass client-ip=52.70.2.18; envelope-from=eric@ericabrahamsen.net; helo=mail.ericabrahamsen.net X-detected-operating-system: by eggs.gnu.org: First seen = 2020/06/07 17:37:23 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.io gmane.emacs.help:123270 Archived-At: Emanuel Berg via Users list for the GNU Emacs text editor writes: > Marcin Borkowski wrote: > >> If you find a good way to refactor it so that it is >> more DRY, I'd love to see it. > > ;;; -*- lexical-binding: t -*- > ;;; > ;;; this file: > ;;; http://user.it.uu.se/~embe8573/emacs-init/incal-ecat.el > ;;; https://dataswamp.org/~incal/emacs-init/incal-ecat.el > > (defvar sentence-overlay nil) > > (defun remove-highlight () > (interactive) > (when (overlayp sentence-overlay) > (delete-overlay sentence-overlay) )) > > (defun highlight-sentence () > (interactive) > (remove-highlight) > (let ((overlay (make-overlay (progn (forward-sentence) (point)) > (progn (backward-sentence) (point)) ))) > (overlay-put overlay 'face 'font-lock-function-name-face) > (setq sentence-overlay overlay) )) You don't need to delete the overlay and make it again each time, just use `move-overlay'. You can also move an overlay that's been deleted, essentially recreating it, so long as you still have a reference to it. How do I know? Because this thread finally motivated me to finish the translation environment package I've been thinking of for a while, and I just wrote pretty much the same code a couple of days ago :)