How to navigate around the source tree?
Simon Peyton Jones
simonpj at microsoft.com
Fri Oct 25 07:59:41 UTC 2019
I think there is at least something to be said for module names that are unique, mainly for the human interface.
For example, I often say (in Notes or Gitlab comments) "In TcType.foo we see ...". Now I could say "In GHC.Hs.Typecheck.Type we see ..." but it's less convenient. I could take the shortest unique prefix "In Typecheck.Type we see ...", but then I need to figure out what name clashes there are and add a disambiguating prefix.
This is not a do-or-die issue. But my instinct is to avoid name clashes where we can.
Simon
| -----Original Message-----
| From: ghc-devs <ghc-devs-bounces at haskell.org> On Behalf Of Ömer Sinan
| Agacan
| Sent: 25 October 2019 07:44
| To: Andreas Klebinger <klebinger.andreas at gmx.at>
| Cc: GHC developers <ghc-devs at haskell.org>
| Subject: Re: How to navigate around the source tree?
|
| > While there are workarounds, both for my case as for Matts. It's worth
| asking
| > if requiring these workarounds is better than just accepting redundant
| > prefixes on module names.
|
| "Workarounds" are for problems, but I don't understand why duplicate file
| names
| are a problem. Can you elaborate? Perhaps this is problem with your
| IDE/editor
| setup? Many of us (as can be seen in responses) use tools/editors/IDEs
| that can
| handle this just fine.
|
| I worked on projects with duplicate file names in the past too; having
| tools
| that can deal with this helps, and I don't think this is too hard to
| achieve.
| You can't ask devs of every project you join to rename their files because
| your
| editor can't handle them.
|
| (I don't know VS Code enough to help ..)
|
| Ömer
|
| Andreas Klebinger <klebinger.andreas at gmx.at>, 24 Eki 2019 Per, 14:48
| tarihinde şunu yazdı:
| >
| > Hello devs,
| >
| > I also often jump to files. In my case usually using VS Code using Ctr+P
| as well which searches for files by name.
| > While I can check which folder a file is in in the case of duplicates it
| is a overhead which this refactor forces onto me.
| >
| > While there are workarounds, both for my case as for Matts. It's worth
| asking if requiring these workarounds is better
| > than just accepting redundant prefixes on module names.
| >
| > Personally I would prefer unique file names even at the cost of
| redundancy.
| > I rarely add import statements/full module names, but I *very* often
| jump to files.
| >
| > Cheers
| > Andreas
| >
| > Bryan Richter schrieb am 23.10.2019 um 18:00:
| >
| > Duplicate record fields is going to make this a bigger problem. Vim does
| support duplicate tags (:tselect and :tjump and related bindings), but
| hopefully haskell-ide-engine will one day provide us with semantic tags
| and solve this problem once and for all!
| >
| > On Wed, 23 Oct 2019, 17.49 Matthew Pickering,
| <matthewtpickering at gmail.com> wrote:
| >>
| >> Thanks Omer, Sylvain and Sebastian
| >>
| >> .
| >>
| >> I just configured my editor to use fzf and now I can use the `:GFiles`
| >> command to perform fuzzy search on files which is probably better than
| >> tags. If anyone else is using NixOS, all I had to do was add the
| >> `fzf-vim` plugin to the vim configuration.
| >>
| >> Cheers,
| >>
| >> Matt
| >>
| >> On Wed, Oct 23, 2019 at 2:54 PM Ömer Sinan Ağacan
| <omeragacan at gmail.com> wrote:
| >> >
| >> > I use a file finder (fzf) for jumping to files. Because module names
| follow file
| >> > paths to jump to e.g. StgToCmmUtils.Utils I usually type `<C-
| p>stgcmmutils` and
| >> > fzf finds the correct file `compiler/GHC/StgToCmm/Utils.hs`.
| >> >
| >> > When generating tags I omit module names for this reason, it's easy
| with a good
| >> > file finder to jump to modules already, no need to generate tags for
| the
| >> > modules.
| >> >
| >> > fast-tags commands I use:
| >> >
| >> > - When working on the compiler:
| >> >
| >> > $ fast-tags --no-module-tags driver ghc compiler
| >> >
| >> > - When working on the RTS:
| >> >
| >> > $ fast-tags --no-module-tags driver ghc compiler
| >> > $ ctags --append -R rts/**/*.c rts/**/*.h includes/**/*.h
| >> >
| >> > - When working on the libraries:
| >> >
| >> > $ fast-tags --no-module-tags driver ghc compiler libraries
| >> >
| >> > Ömer
| >> >
| >> > Sebastian Graf <sgraf1337 at gmail.com>, 23 Eki 2019 Çar, 16:49
| tarihinde
| >> > şunu yazdı:
| >> > >
| >> > > FWIW, I'm using VSCode's fuzzy file search with Ctrl+P (and vim's
| equivalent) rather successfully. Just tried it for Hs/Utils.hs by typing
| 'hsutils.hs'. It didn't turn up as the first result in VSCode, but it in
| vim.
| >> > >
| >> > > Am Mi., 23. Okt. 2019 um 14:27 Uhr schrieb Matthew Pickering
| <matthewtpickering at gmail.com>:
| >> > >>
| >> > >> I use `fast-tags` which doesn't look at the hierarchy at all and
| I'm
| >> > >> not sure what the improvement would be as the names of the modules
| >> > >> would still clash.
| >> > >>
| >> > >> If there is some other recommended way to jump to a module then
| that
| >> > >> would also work for me.
| >> > >>
| >> > >> Matt
| >> > >>
| >> > >>
| >> > >> On Wed, Oct 23, 2019 at 12:08 PM Sylvain Henry <sylvain at haskus.fr>
| wrote:
| >> > >> >
| >> > >> > Hi,
| >> > >> >
| >> > >> > How do you generate your tags file? It seems to be a shortcoming
| of the
| >> > >> > generator to not take into account the location of the
| definition file.
| >> > >> >
| >> > >> > > Perhaps `HsUtils` and `StgUtils` would be appropriate to
| >> > >> > disambiguate`Hs/Utils` and `StgToCmm/Utils`.
| >> > >> >
| >> > >> > We are promoting the module prefixes (`Hs`, `Stg`, `Tc`, etc.)
| into
| >> > >> > proper module layers (e.g. `HsUtils` becomes `GHC.Hs.Utils`) so
| it would
| >> > >> > be redundant to add the prefixes back. :/
| >> > >> >
| >> > >> > Cheers,
| >> > >> > Sylvain
| >> > >> >
| >> > >> > On 23/10/2019 12:52, Matthew Pickering wrote:
| >> > >> > > Hi,
| >> > >> > >
| >> > >> > > The module rework has broken my workflow.
| >> > >> > >
| >> > >> > > Now my tags file is useless for jumping for modules as there
| are
| >> > >> > > multiple "Utils" and "Types" modules. Invariable I am jumping
| to the
| >> > >> > > wrong one. What do other people do to avoid this?
| >> > >> > >
| >> > >> > > Can we either revert these changes or give these modules
| unique names
| >> > >> > > to facilitate that only reliable way of navigating the code
| base.
| >> > >> > > Perhaps `HsUtils` and `StgUtils` would be appropriate to
| disambiguate
| >> > >> > > `Hs/Utils` and `StgToCmm/Utils`.
| >> > >> > >
| >> > >> > > Cheers,
| >> > >> > >
| >> > >> > > Matt
| >> > >> > > _______________________________________________
| >> > >> > > ghc-devs mailing list
| >> > >> > > ghc-devs at haskell.org
| >> > >> > >
| https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.hask
| ell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-
| devs&data=02%7C01%7Csimonpj%40microsoft.com%7C3ffb77db43b74c34a0af08d7
| 5916d1e4%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637075826856171272&a
| mp;sdata=H%2BCCWwdR%2Fv1rhnYi%2BBuFPvB5pzlFpHkqdsG6S0tVOfE%3D&reserved
| =0
| >> > >> > _______________________________________________
| >> > >> > ghc-devs mailing list
| >> > >> > ghc-devs at haskell.org
| >> > >> >
| https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.hask
| ell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-
| devs&data=02%7C01%7Csimonpj%40microsoft.com%7C3ffb77db43b74c34a0af08d7
| 5916d1e4%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637075826856171272&a
| mp;sdata=H%2BCCWwdR%2Fv1rhnYi%2BBuFPvB5pzlFpHkqdsG6S0tVOfE%3D&reserved
| =0
| >> > >> _______________________________________________
| >> > >> ghc-devs mailing list
| >> > >> ghc-devs at haskell.org
| >> > >>
| https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.hask
| ell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-
| devs&data=02%7C01%7Csimonpj%40microsoft.com%7C3ffb77db43b74c34a0af08d7
| 5916d1e4%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637075826856171272&a
| mp;sdata=H%2BCCWwdR%2Fv1rhnYi%2BBuFPvB5pzlFpHkqdsG6S0tVOfE%3D&reserved
| =0
| >> > >
| >> > > _______________________________________________
| >> > > ghc-devs mailing list
| >> > > ghc-devs at haskell.org
| >> > >
| https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.hask
| ell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-
| devs&data=02%7C01%7Csimonpj%40microsoft.com%7C3ffb77db43b74c34a0af08d7
| 5916d1e4%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637075826856181264&a
| mp;sdata=qU2fbJithYT0tvxy299nYcjYPk265OxnKzJLRtb%2FpVI%3D&reserved=0
| >> _______________________________________________
| >> ghc-devs mailing list
| >> ghc-devs at haskell.org
| >>
| https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.hask
| ell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-
| devs&data=02%7C01%7Csimonpj%40microsoft.com%7C3ffb77db43b74c34a0af08d7
| 5916d1e4%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637075826856181264&a
| mp;sdata=qU2fbJithYT0tvxy299nYcjYPk265OxnKzJLRtb%2FpVI%3D&reserved=0
| >
| >
| >
| > _______________________________________________
| > ghc-devs mailing list
| > ghc-devs at haskell.org
| >
| https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.hask
| ell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-
| devs&data=02%7C01%7Csimonpj%40microsoft.com%7C3ffb77db43b74c34a0af08d7
| 5916d1e4%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637075826856181264&a
| mp;sdata=qU2fbJithYT0tvxy299nYcjYPk265OxnKzJLRtb%2FpVI%3D&reserved=0
| >
| >
| > _______________________________________________
| > ghc-devs mailing list
| > ghc-devs at haskell.org
| >
| https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.hask
| ell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-
| devs&data=02%7C01%7Csimonpj%40microsoft.com%7C3ffb77db43b74c34a0af08d7
| 5916d1e4%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637075826856181264&a
| mp;sdata=qU2fbJithYT0tvxy299nYcjYPk265OxnKzJLRtb%2FpVI%3D&reserved=0
| _______________________________________________
| ghc-devs mailing list
| ghc-devs at haskell.org
| https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.hask
| ell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-
| devs&data=02%7C01%7Csimonpj%40microsoft.com%7C3ffb77db43b74c34a0af08d7
| 5916d1e4%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637075826856181264&a
| mp;sdata=qU2fbJithYT0tvxy299nYcjYPk265OxnKzJLRtb%2FpVI%3D&reserved=0
More information about the ghc-devs
mailing list