From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.help Subject: Re: Navigating an enormous code base Date: Tue, 26 Apr 2022 14:03:34 +0300 Message-ID: <83bkwom7i1.fsf@gnu.org> References: Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="31604"; mail-complaints-to="usenet@ciao.gmane.io" To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Tue Apr 26 13:06:25 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 1njJ1U-0007yX-05 for geh-help-gnu-emacs@m.gmane-mx.org; Tue, 26 Apr 2022 13:06:24 +0200 Original-Received: from localhost ([::1]:42906 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1njJ1S-0004KP-DM for geh-help-gnu-emacs@m.gmane-mx.org; Tue, 26 Apr 2022 07:06:22 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:43630) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1njIyx-0004IU-PG for help-gnu-emacs@gnu.org; Tue, 26 Apr 2022 07:03:47 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:57872) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1njIyx-0004Qy-GN for help-gnu-emacs@gnu.org; Tue, 26 Apr 2022 07:03:47 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=U9VfrIZTE0WEbrzmDTq9Z++NvR2hOLjD3HYMsFJupfU=; b=hgBK/WiLc2rN VoHKGweFOy+AWtrezWLO+jKhiLpg+6ikQBKnHib11/DIt3romuf26xIbrwrR3Rs6+EnBabHwxPWk1 Ru4a85wIaFcuZW3ywsiXveZPo+87TIsvI+f+UJyhp5lPlo2hAX11WmOHV1HU5wsWuNOCfzi8luFxh doin4r2Ebt/LNfzIt5mlrEYqoaZtaVqewgmFlOA/DKZmITaC9VLxR1Xj4d+xmHgyuARSsqmESMwl1 qReo+vcZoe2xOBBCUzlxkIs2r6+YTPr8xIHeLauDXDwtCZzSs0R3dTm7p3dQpix4xuqkBwPUGPI7K xK8bWi7W3UG/luh7nbiO7Q==; Original-Received: from [87.69.77.57] (port=3048 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1njIyw-0003It-Vu for help-gnu-emacs@gnu.org; Tue, 26 Apr 2022 07:03:47 -0400 In-Reply-To: (message from John Yates on Mon, 25 Apr 2022 22:31:44 -0400) 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" Xref: news.gmane.io gmane.emacs.help:137032 Archived-At: > From: John Yates > Date: Mon, 25 Apr 2022 22:31:44 -0400 > > At my day job I work on a 35 year old product with literally > a few hundred million lines of codes. It is essentially a > mono-repo. > > There are thousands of directory trees with Makefiles. To be > consistent with Emacs concepts, let's call these 'projects'. > Luckily projects are rarely nested, and not in the areas I work > on. There is no discipline requiring file names be unique across > projects, nor even within projects. Furthermore, within any > project there can be multiple unittest/ and/or pkgtest/ > directories. Each such directory must contain a > suite_registration.cpp. > > Most often I work within a single project and want to navigate to > files in the same project. Less frequently I need to find a file > in a sibling project. Unfortunately, there are ~400 siblings, > though I very rarely visit more than 10. > > With recent attempts to work within Emacs' built-in tools, I > wonder how I find files in this code base. Or if Emacs lacks > adequate built-in tooling, what package(s) might help? In what language(s) is this written? Can you tell more about what you mean by "how I find files"? Like show an example or two of use cases where you need to 'find files"? And what built-in tools did you try to solve those problems?