From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Lars Ingebrigtsen Newsgroups: gmane.emacs.devel Subject: A faster derived-mode-p Date: Sun, 14 Feb 2021 21:22:11 +0100 Message-ID: <87k0ra9z7w.fsf@gnus.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="6531"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sun Feb 14 21:23:50 2021 Return-path: Envelope-to: ged-emacs-devel@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 1lBNvp-0001aT-GA for ged-emacs-devel@m.gmane-mx.org; Sun, 14 Feb 2021 21:23:49 +0100 Original-Received: from localhost ([::1]:48296 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lBNvo-0005lJ-J0 for ged-emacs-devel@m.gmane-mx.org; Sun, 14 Feb 2021 15:23:48 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:33754) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lBNuS-0004tI-UU for emacs-devel@gnu.org; Sun, 14 Feb 2021 15:22:24 -0500 Original-Received: from quimby.gnus.org ([2a01:4f9:2b:f0f::2]:52482) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lBNuQ-0007BI-0e for emacs-devel@gnu.org; Sun, 14 Feb 2021 15:22:24 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:Date:Subject:To:From: Sender:Reply-To:Cc:Content-Transfer-Encoding:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=Q0sYeGbAnS06lXrlq/ryF9AtqTklJ8TBHdFLaUN6z6E=; b=fB2dsixXEif4CGk7cKx1kWAava FmsIYAyMUMYub8uiMScc+BHJwO0wEh13SGJ2XuSwLXSlzg+gKOwFwWbXO33vMidZMsV/ZsmVAdK/H zTspQ5CLzl4wUDO/mvGe4lMZJQJ45Wm5z+N+dCFYzh8CxZx+fDCrTUUUN/rxPkgSoPBc=; Original-Received: from cm-84.212.202.86.getinternet.no ([84.212.202.86] helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lBNuH-0004G6-1V for emacs-devel@gnu.org; Sun, 14 Feb 2021 21:22:18 +0100 Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAGFBMVEXs1Jr967DQvo6s kVWUbjdeQC9VOSz///9RMRGeAAAAAWJLR0QHFmGI6wAAAAd0SU1FB+UCDhQNOJbByb0AAAGKSURB VDjLlZNdbsIwDMdd4AApvUBp0Z6hzfaMGsPzpNU9wCC5/xFmJ03aaCBtllBj//A/H7ahKJ8bvATl H0HxChxyoJLf5aCKQJkc6Aj2eF6DCiOojFmDo47/22l9WsAek4DWOGcL2CEOsxJiXENwZ+UNtEyK lVTSKqMWBMcMEVRrsEVcDozYQFtrkGdTsqUKV9+iIXbHcPOjT1FN0105xoAQ0jGNRrqONOKVkIg8 gCN75GikYPKFbmiRY7PFxUSw+NNEZOVjJeDBxMA650hi5IRa8AtnJzcxkZ+NQJzZbACc7x7gMhvd ZN39Y+zrX+DmdP1m+Qp5eOxvtii33CvwCLEba/TosDUn/7AKPv2Gd87/llLGWpbwZfv3x6E7lfy6 SqdalqBqrmAsxqowMgYVDnBIhb0s7eMffWmTIgERmF1JOYcuUb6vEqiiluyxBiqBfA/ROicQj1+E tl56t1TtquFMNmqcL/0l4JIBzu+bru+LNHUzYKVGjJ88H87U7GnQA9jkwQU8sf+DH89Hr7OqjPml AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTAyLTE0VDIwOjEzOjU2KzAwOjAw3HAYNwAAACV0RVh0 ZGF0ZTptb2RpZnkAMjAyMS0wMi0xNFQyMDoxMzo1NiswMDowMK0toIsAAAAASUVORK5CYII= X-Now-Playing: Masada's _Alef_: "Tahah" Received-SPF: pass client-ip=2a01:4f9:2b:f0f::2; envelope-from=larsi@gnus.org; helo=quimby.gnus.org X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:264778 Archived-At: There are only 11K commands in the Emacs tree, so I don't know whether the current default completion predicate is going to turn out to be problematically slow or not. It basically calls `provided-mode-derived-p' for all annotated commands, and this is a loop that chases mode parenthood back to its ultimate ancestor. It seems like this could done more efficiently by just resolving the chain at `define-derived-mode' time. That is, in addition to putting `derived-mode-parent', it could put `derived-mode-parents', too, where it chases the chain upwards. Then we'd just have to look at a single property list... Does anybody see any disadvantages to doing it this way? (This would speed up `derived-mode-p', which we use all over Emacs, in general.) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no