From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Emanuel Berg Newsgroups: gmane.emacs.help Subject: Re: Navigating an enormous code base Date: Wed, 14 Dec 2022 18:55:11 +0100 Message-ID: <87pmclswe8.fsf@dataswamp.org> References: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="40278"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) To: help-gnu-emacs@gnu.org Cancel-Lock: sha1:L9wiegYbNX+W4jn5GJUyPWbUIMU= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Wed Dec 14 19:17:45 2022 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 1p5WK9-000AIJ-G6 for geh-help-gnu-emacs@m.gmane-mx.org; Wed, 14 Dec 2022 19:17:45 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p5WJz-0000G9-Uo; Wed, 14 Dec 2022 13:17:36 -0500 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 1p5VyW-0002Jg-3r for help-gnu-emacs@gnu.org; Wed, 14 Dec 2022 12:55:26 -0500 Original-Received: from ciao.gmane.io ([116.202.254.214]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p5VyU-0005Fl-Fr for help-gnu-emacs@gnu.org; Wed, 14 Dec 2022 12:55:23 -0500 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1p5VyR-00023t-Ly for help-gnu-emacs@gnu.org; Wed, 14 Dec 2022 18:55:19 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: help-gnu-emacs@gnu.org Mail-Copies-To: never Received-SPF: pass client-ip=116.202.254.214; envelope-from=geh-help-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.249, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Wed, 14 Dec 2022 13:17:33 -0500 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.29 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-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.help:141734 Archived-At: Stefan Monnier via Users list for the GNU Emacs text editor wrote: >> There could be several notions of "sibling": >> - jump from /foo/bar/main/src/hello.c to /foo/bar/stable/src/hello.c. >> - jump from /foo/bar/main/src/hello.c to >> /foo/bar/main/test/src/hello-tests.el. >> - jump from /foo/bar/main/src/hello.c to /foo/bar/main/src/hello.h. > > The function below can do all three given the appropriate hint: > - "stable" for the first. > - "-tests" for the second. > - ".h" for the third. > > It can also find "/foo/bar/stable/src/hello.h" when given the hint > "stable/.h". So this is the `find-file-dwim' at last? Good ... I would do it with several functions that all search for the file according to their method or algorithm, then they produce a score and the one with the highest score wins or is tried first. After that the file is displayed or a message "is this this file?" and if it is, obviously it gets displayed but also that algorithm gets a bonus since it got it right. That way the "algorithm of algorithms" will be self-learning and it will also be interesting to the developers, "hey, this algorithm _never_ gets it right, what's wrong with it?" However one should also store the exact situation (state, hint, and correct file) in a database, so if that exact situation appears again we already know what to do and the desired file will just be found (a reference to it) in the database, with no need for any algorithm to execute ... So the order would be 1. database 2. run algorithm of algorithm 3. algorithms produce score 4. algorithm of algorithm add bonus 5. suggestion presented to user 6. algorithm of algorithm adjusts bonus 7. correct answer inserted into database But it's up to the developer to do it anyway they like of course ... -- underground experts united https://dataswamp.org/~incal