From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Newsgroups: gmane.emacs.bugs Subject: bug#58839: [Patch] Re: bug#58839: 29.0.50; project-kill-buffer fails when Eglot is running Date: Wed, 02 Nov 2022 07:19:05 +0000 Message-ID: <87edulu8ly.fsf@gmail.com> References: <87sfj8umwb.fsf@posteo.net> <87ilk2x1si.fsf@gmail.com> <871qqq7l9p.fsf@posteo.net> <87eduqwekz.fsf@gmail.com> <87wn8invbx.fsf@posteo.net> <877d0iw8iq.fsf@gmail.com> <837d0hhlke.fsf@gnu.org> <46ff0065-5645-ef1e-2621-242fb6a73f98@yandex.ru> <87v8o0uxn5.fsf@gmail.com> <787a4362-7ff5-7dbb-9118-16e4bee5f328@yandex.ru> <87edunvhf2.fsf@gmail.com> <6d4d9e72-1bae-4d64-b7c1-c2b9c11e396f@yandex.ru> <87tu3jgdbv.fsf@posteo.net> <87h6zihq3q.fsf@posteo.net> <877d0ehlnb.fsf@posteo.net> <87edumg4fd.fsf@posteo.net> <874jvig2rp.fsf@posteo.net> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="26600"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: Eli Zaretskii , 58839@debbugs.gnu.org, Dmitry Gutov To: Philip Kaludercic Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Wed Nov 02 08:19:32 2022 Return-path: Envelope-to: geb-bug-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 1oq828-0006hK-Jc for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 02 Nov 2022 08:19:32 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oq81f-0000BA-RI; Wed, 02 Nov 2022 03:19:03 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oq81e-0000Aj-J7 for bug-gnu-emacs@gnu.org; Wed, 02 Nov 2022 03:19:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oq81e-0005xZ-An for bug-gnu-emacs@gnu.org; Wed, 02 Nov 2022 03:19:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1oq81e-0000j2-5g for bug-gnu-emacs@gnu.org; Wed, 02 Nov 2022 03:19:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 02 Nov 2022 07:19:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 58839 X-GNU-PR-Package: emacs Original-Received: via spool by 58839-submit@debbugs.gnu.org id=B58839.16673734842696 (code B ref 58839); Wed, 02 Nov 2022 07:19:02 +0000 Original-Received: (at 58839) by debbugs.gnu.org; 2 Nov 2022 07:18:04 +0000 Original-Received: from localhost ([127.0.0.1]:44795 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oq80i-0000hP-BO for submit@debbugs.gnu.org; Wed, 02 Nov 2022 03:18:04 -0400 Original-Received: from mail-wm1-f49.google.com ([209.85.128.49]:44584) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oq80f-0000gu-AX for 58839@debbugs.gnu.org; Wed, 02 Nov 2022 03:18:02 -0400 Original-Received: by mail-wm1-f49.google.com with SMTP id bg9-20020a05600c3c8900b003bf249616b0so650696wmb.3 for <58839@debbugs.gnu.org>; Wed, 02 Nov 2022 00:18:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:message-id:date:user-agent:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=hU+5R90vBsr/0Crp/BwTf7LXS34HJ3Ok1fW9zRfb5BY=; b=JQXquJfCc0e/8qLYbCEdiqbiaCDwmjastWMJF0W6djQFXbNl+7sUacvo6x/VJ6IQTe Xq7+2jgGj+wIJxC9GgpTuh/BNNKz3Fd/wVNDaGFnBq2fO4usL58DZ7uVkf0tVHpTNkOe NS4vgnl1vXUmJ0h3ggi79TZVMF1CXr7vG5syB/HhBGejdqg16DRqsyoJg5fpKLom30CC QQDL1jy6Tsnp3T4//v1cEc+4KmE3k8mVieM5rUCsgHGLghJPQkj5H8z/lPhDBlcD7KVd lt4jA2OC/xptcZ0q+zRwA6LvGsMkjvlOpmrklq++qvxaAuyCEhQTdComz+pPb5ohZz28 VPSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:message-id:date:user-agent:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=hU+5R90vBsr/0Crp/BwTf7LXS34HJ3Ok1fW9zRfb5BY=; b=NobjfKNrw1ZD3ExQrYomLYO3WxGLOJZD8F4myoTrR92DwqhVjrGfwB3dP0X8QQvb5U m6mGYqmrCHDdvZojdqywuu4NhU0wG/i321eBIFcILSYHNVfbFJMyJ1Iz29tZ8Nr+qWC0 PyAiIaluZeMG7gPfu3a7RbHqCXJemVS/lmKwJA7aK9caGNMo/sYR3m4uE50BrViptBz8 ve7edNT8vebM/kJU0A1TF35+lyq4W+egog05tSjpChgR0YaqdgEL/CpcXeqJDD8B4FVn 5OlyNnLZfuWqrpz7fJqzBapTpZ1jJmNkGCR5nn1zqq8eEQ9B6ckftuHI0w5DTu7W2wkk XY1w== X-Gm-Message-State: ACrzQf0oCwRrQpoenAsTb/1BB+RecGigqolDQxWK5/gKI2obUAu9yFPt JwU0jhErwGRsS5J241AwSgAR0G4wnZo= X-Google-Smtp-Source: AMsMyM6aowOpSNj9yAGA0DjwgCE6jkHHqA2ZuNOAe3ET+RjtsJmYfLJTRyFfeY/uUYLK23XlG35M6w== X-Received: by 2002:a05:600c:1614:b0:3cf:816e:4a69 with SMTP id m20-20020a05600c161400b003cf816e4a69mr3941993wmn.33.1667373474964; Wed, 02 Nov 2022 00:17:54 -0700 (PDT) Original-Received: from krug ([87.196.73.80]) by smtp.gmail.com with ESMTPSA id v7-20020a05600c444700b003c70191f267sm1051916wmn.39.2022.11.02.00.17.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Nov 2022 00:17:54 -0700 (PDT) In-Reply-To: <874jvig2rp.fsf@posteo.net> (Philip Kaludercic's message of "Tue, 01 Nov 2022 14:36:42 +0000") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: "bug-gnu-emacs" Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:246841 Archived-At: Philip Kaludercic writes: >> Yes, do that, but use byte-compile instead, not eval. > I have tried both, and it doesn't appear to be a particular advantage > one way or another. That being said, this approach is *a lot* faster, > to the point that I first assumed it was broken: Yes, this approach is always going to be much faster than the "naive" approach. Now I've taken your code as a starting point, simplified it, and I get a reasonable/typical 3.5x speedup when I use a byte-compilation strategy, so one of us isn't measuring ```elisp (defun translate-buffer-condition-1 (condition) (pcase-exhaustive condition ((or 't 'nil) condition) ((pred stringp) `(string-match-p ,condition (buffer-name buffer))) ((pred functionp) `(,condition buffer)) (`(major-mode . ,mode) `(eq (buffer-local-value 'major-mode buffer) ',mode)) (`(derived-mode . ,mode) `(provided-mode-derived-p (buffer-local-value 'major-mode buffer) ',mode)) (`(not . ,cond) `(not ,(translate-buffer-condition-1 cond))) (`(or . ,conds) `(or ,@(mapcar #'translate-buffer-condition-1 conds))) (`(and . ,conds) `(and ,@(mapcar #'translate-buffer-condition-1 conds))))) (defun translate-buffer-condition (condition) `(lambda (buffer) ,(translate-buffer-condition-1 condition))) (defvar sample-condition '(and (or buffer-file-name (derived-mode . compilation-mode) (derived-mode . dired-mode) (derived-mode . diff-mode) (derived-mode . comint-mode) (derived-mode . eshell-mode) (derived-mode . change-log-mode)) "\\*.+\\*" (not . "\\` "))) (defvar form (translate-buffer-condition sample-condition)) (defvar compiled (byte-compile form)) (benchmark-run 100000 (funcall (eval form) (current-buffer))) ;; (0.397404883 3 0.18942550900000032) (benchmark-run 100000 (funcall compiled (current-buffer))) ;; (0.113651836 0 0.0) ``` I couldn't understand the need for a hash table or special symbol vars or what that "arg" was, so I took it out, but it shouldn't make a difference.