Programming thread

  • Want to keep track of this thread?
    Accounts can bookmark posts, watch threads for updates, and jump back to where you stopped reading.
    Create account
I don't intend to become a game dev but I think a lot of the patterns could be reused elsewhere. Got any recommendations?
Oh, geez, I feel like I'm speaking way out of my depth making any recommendations in here. Take this with a grain of salt, I'm still very much a rookie compared to others in here and I could just be saying totally obvious stuff.

Well, so far, the thing that I'm slowly working on is the problem of initializations that are contingent on other initializations. At its core, the first thing I figured out was the idea that, if two components don't have a firm initialization order (and indeed, if you want the flexibility to not worry about that), they need to have a logic branch (I've just been calling it doOrQueue because I like coming up with funny names for my patterns) that will A: check the thing they're looking for, and if it's initialized, grab the relevant reference, or B: if it's not, register to an event dispatcher that broadcasts at the end of initialization that tells anyone listening that "hey, I'm ready, so if you were waiting on me to initialize before grabbing some data, now's the time".

The problem with this is that if we don't know our initialization order (or we want to have one that's in any way asynchronous), we can't check whether an object is ready, since we neither have a way to find that object, and if even if we did, the thing doesn't exist yet, so we couldn't check any of its members - even if we can account for the thing not existing, it's got no event dispatcher for us to register to while we're here in code, and the code path has to terminate, so at this point we can't "mark our place until it's ready" in any way.

The way I figure we work around this is to have a class whose job is essentially being the registry/manager for these other classes we're trying to get ahold of, that contains reference/event dispatcher pairs for each component it's responsible for. It doesn't matter if class A doesn't exist, because since we have access to a registry we know it will eventually belong to and an alias, on that registry that we know it will occupy, we can look at that value, see if it's occupied, and if it isn't, "take a number and sit down" by registering to the event dispatcher that the manager has (rather than keeping it on the member itself). When the member finishes initializing and registers to the manager, the manager broadcasts the dispatcher that's the pair of that particular member.

The other part of the trick is that the manager/registry class is composed of entirely static members, and may itself be a singleton. Since it's static, there's no race condition/initialization traffic jam - they exist right at the start of runtime, require no instantiation, and you can register to them immediately. It breaks the worry about race conditions by acting as a sturdy rock that you can guarantee will always be available, and so you can depend on it to be the top of your chain of references. As long as you have that one rock, anything that needs anything else can wait, even if they need manager C which registers to manager B which registers to manager A, (but this might be unnecessary if managers B and C are their own static classes with their own domains). The only real constraint that enforces is that you can't have instances of that registry, e.g. only one set of values, but that's a feature, not a bug, since you should only ever need one instance of a given type of registry, otherwise you're doing something wrong.

There's sort of a microcosm of this that exists within objects as well - if you're building objects generally compositionally rather than using (multiple) inheritance or with some combination of the two, it makes sense for an object to have a component that acts as a similar sort of manager for its sibling components, but you can similarly find that sort of "rock" in the base object - so long as it contains the same kind of reference/delegate to what will eventually be the registry component, you're good to go, and you can also do certain things on this kind of instance-based registry that you can't on a static one, since as an instance, you can have the thing instantiate more member dispatchers on demand, which I think might open up the ability for the registry itself to be contained in a TMap, with each member registering with a specific key, and the thing generates and assigns a dispatcher to it at that time. You might need to templatize or find a way to make a wrapper that boils the typing out of it though, because it's likely that a TMap registry consisting of many different objects, unless they can polymorphically adhere to a common base class (which could be more trouble than it's worth), will cause those kinds of typing conflicts otherwise.

Something I also want to add to that is a system that replaces components actively looking up their dependencies with passively receiving dependency injection where possible - basically, if we know what dependencies an object needs, we can set up a similar system that's responsible for both keeping track of which dependencies each object in its domain needs, as well as queueing objects to initialize when all the dependencies in their "package" are known to be ready. That is, if we have a registry that contains empty references that can be registered to by objects A, B and C, anytime one of them registers, the system can ask "are there any other objects that depend on this reference? Send them a signal that we have it now", and then after that, on those systems, also ask "Do we now have all the dependencies we need for this? If so, send the cue for it to initialize."

Basically, it consolidates a lot of the initialization responsibilities into a single manager, and it also makes initialization as well as finding dependencies passive for the class receiving the dependency injection, and active on the parts of the injecting class, which sets up a more easily-followable logical chain, and since that all goes through a central manager class, the logic becomes easier to follow and also enforces a specific usage that makes it easier to intuitively do the right thing than the wrong thing. I think these sorts of complex systems live and die on how consistent they are, and so things like that that force you to adhere to certain infallible rules do a lot in keeping the thing from feeling hacked together.

That's really important to me, at least, because I'm someone who gets demotivated if I feel like my program is gradually getting worse and more hacky, but the inverse is true.

I hope there's something useful in there, but I'm not too weathered at this stuff and I don't know how simple these concepts are to better trained eyes (I don't talk to other programmers very often, for some reason I'm oddly self-conscious about it). I admit I haven't finished it and I don't know how well it's going to work in practice, since the last handful of weeks have just been figuring the darn thing out in my head. I don't have enough whiteboards to keep track of all this stuff.

To answer your question more directly, most of what I've been doing has just been learning and reciting the Gang of Four patterns so far, since I feel like understanding the patterns at an abstract enough level to spot them (and problems of their "shape") in the wild has been helping me to develop a stronger more consistent intuition for what to do and why. Not to say I've been contriving places to use them, it just happens that I keep running into situations where they intuitively seem like the right answer (IE I come up with a solution in my head and it just happens to align with some Go4 idea or another). From what I've seen, it's pretty foundational stuff that's generic and very applicable in most of the OOP space.
 
Last edited:
To answer your question more directly, most of what I've been doing has just been learning and reciting the Gang of Four patterns so far, since I feel like understanding the patterns at an abstract enough level to spot them (and problems of their "shape") in the wild has been helping me to develop a stronger more consistent intuition for what to do and why. Not to say I've been contriving places to use them, it just happens that I keep running into situations where they intuitively seem like the right answer (IE I come up with a solution in my head and it just happens to align with some Go4 idea or another). From what I've seen, it's pretty foundational stuff that's generic and very applicable in most of the OOP space.
I offered my opinions on the Gang of Four book (which I have because of course I have it) here. Doesn't quite fit my intended use case. It seems for a lot of these design patterns books to have code I can directly understand and execute, I would be better off learning more designated street shitting language (Java) as opposed to using C++ and Smalltalk.
 
I offered my opinions on the Gang of Four book (which I have because of course I have it) here. Doesn't quite fit my intended use case. It seems for a lot of these design patterns books to have code I can directly understand and execute, I would be better off learning more designated street shitting language (Java) as opposed to using C++ and Smalltalk.
That's entirely fair. Most of the reasons I've been using C++ isn't necessarily out of any fervent language loyalty, it just happens to most directly align with what I need to do, and I also feel like in many ways it's explicit enough that it's been good at forcing me to learn a lot of concepts without just hacking my way around them.

That could just be underexposure, though, and I'm sure I'll bump around based on what kinds of projects I need to do.

Per Go4, you're very right, I think a lot of programming texts are very dry and hard to understand with a stone-cold book that you can't make any inquiries of. At the risk of showing my ass, I think that's one of the things that LLMs can be useful for - so long as you don't let them write any code for you, in my experience they're handy as a way to have a dialogue about a certain idea, ask followup questions, clarifications, etc; it's really nice to be able to get very targeted information in a way that makes it easier to learn than merely hoping you bump into someone with your exact question on Google/Stackoverflow. I think it's much easier to learn when it's phrased as a two-way dialogue where you're able to ask for clarification, offer "so you mean to say it works this way?/why not just do X instead?", etc, and that can really help break up a lot of those dry theoretical texts into more digestable chunks in whatever prose you find most parseable.
 
Last edited:
At the risk of showing my ass, I think that's one of the things that LLMs can be useful for - so long as you don't let them write any code for you,
I allow them to write extremely small amounts of code that I can instantly test and comprehend. Basically all the questions are along the lines of "how do I do X in Y?" Y is always something I have some basic familiarity with which means no vibe coding. ChatGPT and other LLMs are also very good for matters of opinion. I was just using ChatGPT to help me see what advantages I would have by switching from Vim to Emacs and which Emacs configuration framework I might want to use. LLMs are also very good for generating reading lists about topics in computing. For example, I just asked ChatGPT what kind of titles about concurrency are on the bookshelf of Archmagos Belisarius Cawl (yours truly) and, in addition to various generative responses with names that sound like they're from the 40K universe, there were a number of real ones, such as Seven Concurrency Models in Seven Weeks. There are reviews bitching about how much of the book is in Clojure, but since you are using the GoF book you are already likely familiar with the Smalltalk examples that most likely aren't even executable on your end (barring a huge effort like updating them all for Pharo). I was actually late to jump on the LLM bandwagon but they really are amazing when used where they are strong.
 
I allow them to write extremely small amounts of code that I can instantly test and comprehend. Basically all the questions are along the lines of "how do I do X in Y?" Y is always something I have some basic familiarity with which means no vibe coding.
Ah, yeah, I should've clarified something like "code intended for real use in a program" - examples are cool when they illustrate a larger point, but doing the legwork of abstracting the example logic into your own context is a useful exercise for actually parsing the information.
 
Last edited:
chat. ive tried helix and its been really enjoyable so far, there are some downsides like no compilation window like in emacs (or asyncrun.vim) or no real file manager like dired or oil.nvim, although there is something like telescope.nvim, basically a file browser with fuzzy searching. and also the biggest downside is that its written in r*st
its a modal editor very similar to vim in usage (hjkl, macros, registers) but the order of things is reversed - you first start with selecting the thing then you specify an action (we in vim is ew in helix), so basically by moving around youre constantly selecting something for a motion, but the selection resets with every movement, so any 1 character long movement is 1 character wide selection. of course the whole shtick of the software is that it comes builtin with support for various lsps, and it works fine i dont really have any issues in that. it also comes with something like easy motion for vim, basically you press gw and then on every word shows up a two-letter combination that you can type and it will jump the cursor to that location, pretty handy
one of the biggest upsides is that it has multicursors, so you can do emacs magic in helix, you can for example select an area then split the cursor on every line or on specified regex and do some stuff with that. you can do some funny stuff like cycle the selected words or unselect specific occurences of a given pattern.
it also comes with something like which-key.nvim so you can learn the keybinds.

whats kinda bad is that it doesnt have a plugin system yet, but theres a fork in active development that adds a scheme-inspired language as a plugin language

ETA: syntax highlighting uses treesitter, if your language doesnt have a treesitter grammar then youre sol
 
i still don't know why i would use one when a search engine usually does mostly the same thing
In my experience, it's just very handy for targeted questions. Google can turn up relevant discussions and reference material, but the cool thing about LLMs for learning is that they can tailor information exactly to the question, and crucially, you can actually ask them followup/clarifying questions, which can be really handy if the text a search engine turns up explains something in a way that leaves you with questions still outstanding. I think that sort thing lets you follow your curiosity better and removes a lot of the banging your head against a wall that happens when all of the implications and consequences of an idea aren't immediately obvious, and I think the context of a two-way discussion also serves up a lot of valuable opportunities for deeper learning and diving down related rabbitholes.

That said, there's nothing wrong with sticking with search engines either, I'm just frustrated from years of bumping through Stackoverflow threads that kinda-but-don't-quite relate to my particular problem.
 
Ah, yeah, I should've clarified something like "code intended for real use in a program" - examples are cool when they illustrate a larger point being illustrated, but doing the legwork of abstracting the example logic into your own context is a useful exercise for actually parsing the information.
Good point
don't use any of them they're all gay
That isn't a useful response at all
i still don't know why i would use one when a search engine usually does mostly the same thing
Getting tailored recommendations on literature (computing-related or otherwise) using various creative prompts, including what a fictional character would recommend, is one of quite a few things that a search engine alone isn't quite enough for
 
i still don't know why i would use one when a search engine usually does mostly the same thing
In my experience, it's just very handy for targeted questions.
To give my two cents, I tend to use LLM search when I don't really know how to make up a search term for Google, sometimes my memory faults me too much, in which case Google would be utterly useless and LLMs tendency to hallucinate a real blessing. Some time ago I was trying to search for the brand called No Name, because I had seen an image of it once on Reddit like 5-7 years earlier and wanted to know more. All I could really go off of was the brand colors, the simplistic packaging and the fact that it was from Australia. And that final "fact" would prove to be the reason why I wouldn't be able to find it on Google. It's from fucking Canada instead.
So I've asked my nigga, Chad G. Peetey, "what's that one brand that had black words on yellow background and had simplistic style and was probably from Australia". It responded with some bullshit the first time, but then I literally just said "No, it wasn't this", and it found the brand I was looking for.

So it's useful, but only in certain situations, like anything else, honestly.
 
In my experience, it's just very handy for targeted questions. Google can turn up relevant discussions and reference material, but the cool thing about LLMs for learning is that they can tailor information exactly to the question, and crucially, you can actually ask them followup/clarifying questions, which can be really handy if the text a search engine turns up explains something in a way that leaves you with questions still outstanding. I think that sort thing lets you follow your curiosity better and removes a lot of the banging your head against a wall that happens when all of the implications and consequences of an idea aren't immediately obvious, and I think the context of a two-way discussion also serves up a lot of valuable opportunities for deeper learning and diving down related rabbitholes.

That said, there's nothing wrong with sticking with search engines either, I'm just frustrated from years of bumping through Stackoverflow threads that kinda-but-don't-quite relate to my particular problem.
of course you can also ask a search engine followup questions using the good old new tab button
also a bit of banging-the-head-against-a-wall is probably quite useful for truly learning and retaining information, and i really like doing things the hard way at least once to truly understand them inside and out
That isn't a useful response at all
vanilla emacs is the best i don't really care for anything else
 
A thing that seems relevant right now is how, when I look at negative reviews of a book on Amazon, I mentally filter out reviews where it's just one sentence and there isn't any supporting reasoning given as to why the book sucked
well i'd say it's like the difference between choosing a babby distro like mint or a more upstream distro like debian
since emacs is an operating system it has distros of course
everything your fancy german doom emacs can do seems to be possible in stock emacs, it just might just not have some of those weird nonstandard tweak customizations
it's just my (warranted) fear of downstream tweakers fucking shit up after dark
 
ETA: syntax highlighting uses treesitter, if your language doesnt have a treesitter grammar then youre sol
A major strength of Vim and Emacs is just how many syntaxes they support, even obscenely obscure ones. Here is a list of everything regular old Vim supports right out of the box:
Code:
/usr/local/share/vim/vim91/syntax/
/usr/local/share/vim/vim91/syntax/2html.vim
/usr/local/share/vim/vim91/syntax/8th.vim
/usr/local/share/vim/vim91/syntax/a2ps.vim
/usr/local/share/vim/vim91/syntax/a65.vim
/usr/local/share/vim/vim91/syntax/aap.vim
/usr/local/share/vim/vim91/syntax/abap.vim
/usr/local/share/vim/vim91/syntax/abaqus.vim
/usr/local/share/vim/vim91/syntax/abc.vim
/usr/local/share/vim/vim91/syntax/abel.vim
/usr/local/share/vim/vim91/syntax/abnf.vim
/usr/local/share/vim/vim91/syntax/acedb.vim
/usr/local/share/vim/vim91/syntax/ada.vim
/usr/local/share/vim/vim91/syntax/aflex.vim
/usr/local/share/vim/vim91/syntax/ahdl.vim
/usr/local/share/vim/vim91/syntax/aidl.vim
/usr/local/share/vim/vim91/syntax/alsaconf.vim
/usr/local/share/vim/vim91/syntax/amiga.vim
/usr/local/share/vim/vim91/syntax/aml.vim
/usr/local/share/vim/vim91/syntax/ampl.vim
/usr/local/share/vim/vim91/syntax/antlr4.vim
/usr/local/share/vim/vim91/syntax/antlr.vim
/usr/local/share/vim/vim91/syntax/ant.vim
/usr/local/share/vim/vim91/syntax/apachestyle.vim
/usr/local/share/vim/vim91/syntax/apache.vim
/usr/local/share/vim/vim91/syntax/apkbuild.vim
/usr/local/share/vim/vim91/syntax/aptconf.vim
/usr/local/share/vim/vim91/syntax/arch.vim
/usr/local/share/vim/vim91/syntax/arduino.vim
/usr/local/share/vim/vim91/syntax/art.vim
/usr/local/share/vim/vim91/syntax/asciidoc.vim
/usr/local/share/vim/vim91/syntax/asm68k.vim
/usr/local/share/vim/vim91/syntax/asmh8300.vim
/usr/local/share/vim/vim91/syntax/asm.vim
/usr/local/share/vim/vim91/syntax/asn.vim
/usr/local/share/vim/vim91/syntax/aspperl.vim
/usr/local/share/vim/vim91/syntax/aspvbs.vim
/usr/local/share/vim/vim91/syntax/asterisk.vim
/usr/local/share/vim/vim91/syntax/asteriskvm.vim
/usr/local/share/vim/vim91/syntax/astro.vim
/usr/local/share/vim/vim91/syntax/asy.vim
/usr/local/share/vim/vim91/syntax/atlas.vim
/usr/local/share/vim/vim91/syntax/autodoc.vim
/usr/local/share/vim/vim91/syntax/autohotkey.vim
/usr/local/share/vim/vim91/syntax/autoit.vim
/usr/local/share/vim/vim91/syntax/automake.vim
/usr/local/share/vim/vim91/syntax/autopkgtest.vim
/usr/local/share/vim/vim91/syntax/ave.vim
/usr/local/share/vim/vim91/syntax/avra.vim
/usr/local/share/vim/vim91/syntax/awk.vim
/usr/local/share/vim/vim91/syntax/ayacc.vim
/usr/local/share/vim/vim91/syntax/baan.vim
/usr/local/share/vim/vim91/syntax/bash.vim
/usr/local/share/vim/vim91/syntax/basic.vim
/usr/local/share/vim/vim91/syntax/bc.vim
/usr/local/share/vim/vim91/syntax/bdf.vim
/usr/local/share/vim/vim91/syntax/bib.vim
/usr/local/share/vim/vim91/syntax/bindzone.vim
/usr/local/share/vim/vim91/syntax/bitbake.vim
/usr/local/share/vim/vim91/syntax/blank.vim
/usr/local/share/vim/vim91/syntax/bsdl.vim
/usr/local/share/vim/vim91/syntax/bst.vim
/usr/local/share/vim/vim91/syntax/btm.vim
/usr/local/share/vim/vim91/syntax/b.vim
/usr/local/share/vim/vim91/syntax/bzl.vim
/usr/local/share/vim/vim91/syntax/bzr.vim
/usr/local/share/vim/vim91/syntax/cabalconfig.vim
/usr/local/share/vim/vim91/syntax/cabalproject.vim
/usr/local/share/vim/vim91/syntax/cabal.vim
/usr/local/share/vim/vim91/syntax/calendar.vim
/usr/local/share/vim/vim91/syntax/catalog.vim
/usr/local/share/vim/vim91/syntax/cdl.vim
/usr/local/share/vim/vim91/syntax/cdrdaoconf.vim
/usr/local/share/vim/vim91/syntax/cdrtoc.vim
/usr/local/share/vim/vim91/syntax/cfg.vim
/usr/local/share/vim/vim91/syntax/cf.vim
/usr/local/share/vim/vim91/syntax/cgdbrc.vim
/usr/local/share/vim/vim91/syntax/chaiscript.vim
/usr/local/share/vim/vim91/syntax/changelog.vim
/usr/local/share/vim/vim91/syntax/change.vim
/usr/local/share/vim/vim91/syntax/chaskell.vim
/usr/local/share/vim/vim91/syntax/chatito.vim
/usr/local/share/vim/vim91/syntax/cheetah.vim
/usr/local/share/vim/vim91/syntax/chicken.vim
/usr/local/share/vim/vim91/syntax/chill.vim
/usr/local/share/vim/vim91/syntax/chordpro.vim
/usr/local/share/vim/vim91/syntax/chuck.vim
/usr/local/share/vim/vim91/syntax/ch.vim
/usr/local/share/vim/vim91/syntax/clean.vim
/usr/local/share/vim/vim91/syntax/clipper.vim
/usr/local/share/vim/vim91/syntax/clojure.vim
/usr/local/share/vim/vim91/syntax/cl.vim
/usr/local/share/vim/vim91/syntax/cmacro.vim
/usr/local/share/vim/vim91/syntax/cmakecache.vim
/usr/local/share/vim/vim91/syntax/cmake.vim
/usr/local/share/vim/vim91/syntax/cmod.vim
/usr/local/share/vim/vim91/syntax/cmusrc.vim
/usr/local/share/vim/vim91/syntax/cobol.vim
/usr/local/share/vim/vim91/syntax/coco.vim
/usr/local/share/vim/vim91/syntax/colortest.vim
/usr/local/share/vim/vim91/syntax/conaryrecipe.vim
/usr/local/share/vim/vim91/syntax/config.vim
/usr/local/share/vim/vim91/syntax/confini.vim
/usr/local/share/vim/vim91/syntax/conf.vim
/usr/local/share/vim/vim91/syntax/context.vim
/usr/local/share/vim/vim91/syntax/cpp.vim
/usr/local/share/vim/vim91/syntax/crm.vim
/usr/local/share/vim/vim91/syntax/crontab.vim
/usr/local/share/vim/vim91/syntax/csc.vim
/usr/local/share/vim/vim91/syntax/csdl.vim
/usr/local/share/vim/vim91/syntax/csh.vim
/usr/local/share/vim/vim91/syntax/csp.vim
/usr/local/share/vim/vim91/syntax/css.vim
/usr/local/share/vim/vim91/syntax/cs.vim
/usr/local/share/vim/vim91/syntax/csv.vim
/usr/local/share/vim/vim91/syntax/cterm.vim
/usr/local/share/vim/vim91/syntax/ctrlh.vim
/usr/local/share/vim/vim91/syntax/cucumber.vim
/usr/local/share/vim/vim91/syntax/cuda.vim
/usr/local/share/vim/vim91/syntax/cuplsim.vim
/usr/local/share/vim/vim91/syntax/cupl.vim
/usr/local/share/vim/vim91/syntax/c.vim
/usr/local/share/vim/vim91/syntax/cvsrc.vim
/usr/local/share/vim/vim91/syntax/cvs.vim
/usr/local/share/vim/vim91/syntax/cweb.vim
/usr/local/share/vim/vim91/syntax/cynlib.vim
/usr/local/share/vim/vim91/syntax/cynpp.vim
/usr/local/share/vim/vim91/syntax/dart.vim
/usr/local/share/vim/vim91/syntax/datascript.vim
/usr/local/share/vim/vim91/syntax/dax.vim
/usr/local/share/vim/vim91/syntax/dcd.vim
/usr/local/share/vim/vim91/syntax/dcl.vim
/usr/local/share/vim/vim91/syntax/deb822sources.vim
/usr/local/share/vim/vim91/syntax/debchangelog.vim
/usr/local/share/vim/vim91/syntax/debcontrol.vim
/usr/local/share/vim/vim91/syntax/debcopyright.vim
/usr/local/share/vim/vim91/syntax/debsources.vim
/usr/local/share/vim/vim91/syntax/def.vim
/usr/local/share/vim/vim91/syntax/denyhosts.vim
/usr/local/share/vim/vim91/syntax/dep3patch.vim
/usr/local/share/vim/vim91/syntax/desc.vim
/usr/local/share/vim/vim91/syntax/desktop.vim
/usr/local/share/vim/vim91/syntax/dictconf.vim
/usr/local/share/vim/vim91/syntax/dictdconf.vim
/usr/local/share/vim/vim91/syntax/diff.vim
/usr/local/share/vim/vim91/syntax/dircolors.vim
/usr/local/share/vim/vim91/syntax/dirpager.vim
/usr/local/share/vim/vim91/syntax/diva.vim
/usr/local/share/vim/vim91/syntax/django.vim
/usr/local/share/vim/vim91/syntax/dnsmasq.vim
/usr/local/share/vim/vim91/syntax/dns.vim
/usr/local/share/vim/vim91/syntax/docbksgml.vim
/usr/local/share/vim/vim91/syntax/docbk.vim
/usr/local/share/vim/vim91/syntax/docbkxml.vim
/usr/local/share/vim/vim91/syntax/dockerfile.vim
/usr/local/share/vim/vim91/syntax/dosbatch.vim
/usr/local/share/vim/vim91/syntax/dosini.vim
/usr/local/share/vim/vim91/syntax/dot.vim
/usr/local/share/vim/vim91/syntax/doxygen.vim
/usr/local/share/vim/vim91/syntax/dracula.vim
/usr/local/share/vim/vim91/syntax/dsl.vim
/usr/local/share/vim/vim91/syntax/dtd.vim
/usr/local/share/vim/vim91/syntax/dtml.vim
/usr/local/share/vim/vim91/syntax/dtrace.vim
/usr/local/share/vim/vim91/syntax/dts.vim
/usr/local/share/vim/vim91/syntax/dune.vim
/usr/local/share/vim/vim91/syntax/d.vim
/usr/local/share/vim/vim91/syntax/dylanintr.vim
/usr/local/share/vim/vim91/syntax/dylanlid.vim
/usr/local/share/vim/vim91/syntax/dylan.vim
/usr/local/share/vim/vim91/syntax/ecd.vim
/usr/local/share/vim/vim91/syntax/edif.vim
/usr/local/share/vim/vim91/syntax/editorconfig.vim
/usr/local/share/vim/vim91/syntax/eiffel.vim
/usr/local/share/vim/vim91/syntax/elf.vim
/usr/local/share/vim/vim91/syntax/elinks.vim
/usr/local/share/vim/vim91/syntax/elmfilt.vim
/usr/local/share/vim/vim91/syntax/elm.vim
/usr/local/share/vim/vim91/syntax/erlang.vim
/usr/local/share/vim/vim91/syntax/eruby.vim
/usr/local/share/vim/vim91/syntax/esmtprc.vim
/usr/local/share/vim/vim91/syntax/esqlc.vim
/usr/local/share/vim/vim91/syntax/esterel.vim
/usr/local/share/vim/vim91/syntax/eterm.vim
/usr/local/share/vim/vim91/syntax/euphoria3.vim
/usr/local/share/vim/vim91/syntax/euphoria4.vim
/usr/local/share/vim/vim91/syntax/eviews.vim
/usr/local/share/vim/vim91/syntax/exim.vim
/usr/local/share/vim/vim91/syntax/expect.vim
/usr/local/share/vim/vim91/syntax/exports.vim
/usr/local/share/vim/vim91/syntax/falcon.vim
/usr/local/share/vim/vim91/syntax/fan.vim
/usr/local/share/vim/vim91/syntax/fasm.vim
/usr/local/share/vim/vim91/syntax/fdcc.vim
/usr/local/share/vim/vim91/syntax/fetchmail.vim
/usr/local/share/vim/vim91/syntax/fgl.vim
/usr/local/share/vim/vim91/syntax/fish.vim
/usr/local/share/vim/vim91/syntax/flexwiki.vim
/usr/local/share/vim/vim91/syntax/focexec.vim
/usr/local/share/vim/vim91/syntax/form.vim
/usr/local/share/vim/vim91/syntax/forth.vim
/usr/local/share/vim/vim91/syntax/fortran.vim
/usr/local/share/vim/vim91/syntax/foxpro.vim
/usr/local/share/vim/vim91/syntax/fpcmake.vim
/usr/local/share/vim/vim91/syntax/framescript.vim
/usr/local/share/vim/vim91/syntax/freebasic.vim
/usr/local/share/vim/vim91/syntax/fstab.vim
/usr/local/share/vim/vim91/syntax/fvwm2m4.vim
/usr/local/share/vim/vim91/syntax/fvwm.vim
/usr/local/share/vim/vim91/syntax/gdb.vim
/usr/local/share/vim/vim91/syntax/gdmo.vim
/usr/local/share/vim/vim91/syntax/gdresource.vim
/usr/local/share/vim/vim91/syntax/gdscript.vim
/usr/local/share/vim/vim91/syntax/gdshader.vim
/usr/local/share/vim/vim91/syntax/gedcom.vim
/usr/local/share/vim/vim91/syntax/gel.vim
/usr/local/share/vim/vim91/syntax/gemtext.vim
/usr/local/share/vim/vim91/syntax/gift.vim
/usr/local/share/vim/vim91/syntax/gitattributes.vim
/usr/local/share/vim/vim91/syntax/gitcommit.vim
/usr/local/share/vim/vim91/syntax/gitconfig.vim
/usr/local/share/vim/vim91/syntax/gitignore.vim
/usr/local/share/vim/vim91/syntax/gitolite.vim
/usr/local/share/vim/vim91/syntax/gitrebase.vim
/usr/local/share/vim/vim91/syntax/gitsendemail.vim
/usr/local/share/vim/vim91/syntax/git.vim
/usr/local/share/vim/vim91/syntax/gkrellmrc.vim
/usr/local/share/vim/vim91/syntax/gleam.vim
/usr/local/share/vim/vim91/syntax/glsl.vim
/usr/local/share/vim/vim91/syntax/gnash.vim
/usr/local/share/vim/vim91/syntax/gnuplot.vim
/usr/local/share/vim/vim91/syntax/goaccess.vim
/usr/local/share/vim/vim91/syntax/godoc.vim
/usr/local/share/vim/vim91/syntax/go.vim
/usr/local/share/vim/vim91/syntax/gpg.vim
/usr/local/share/vim/vim91/syntax/gprof.vim
/usr/local/share/vim/vim91/syntax/gp.vim
/usr/local/share/vim/vim91/syntax/grads.vim
/usr/local/share/vim/vim91/syntax/graphql.vim
/usr/local/share/vim/vim91/syntax/gretl.vim
/usr/local/share/vim/vim91/syntax/groff.vim
/usr/local/share/vim/vim91/syntax/groovy.vim
/usr/local/share/vim/vim91/syntax/group.vim
/usr/local/share/vim/vim91/syntax/grub.vim
/usr/local/share/vim/vim91/syntax/gsp.vim
/usr/local/share/vim/vim91/syntax/gtkrc.vim
/usr/local/share/vim/vim91/syntax/gvpr.vim
/usr/local/share/vim/vim91/syntax/gyp.vim
/usr/local/share/vim/vim91/syntax/haml.vim
/usr/local/share/vim/vim91/syntax/hamster.vim
/usr/local/share/vim/vim91/syntax/haredoc.vim
/usr/local/share/vim/vim91/syntax/hare.vim
/usr/local/share/vim/vim91/syntax/haskell.vim
/usr/local/share/vim/vim91/syntax/hastepreproc.vim
/usr/local/share/vim/vim91/syntax/haste.vim
/usr/local/share/vim/vim91/syntax/hb.vim
/usr/local/share/vim/vim91/syntax/hcl.vim
/usr/local/share/vim/vim91/syntax/help_it.vim
/usr/local/share/vim/vim91/syntax/help_ru.vim
/usr/local/share/vim/vim91/syntax/help.vim
/usr/local/share/vim/vim91/syntax/hercules.vim
/usr/local/share/vim/vim91/syntax/hex.vim
/usr/local/share/vim/vim91/syntax/hgcommit.vim
/usr/local/share/vim/vim91/syntax/hitest.vim
/usr/local/share/vim/vim91/syntax/hlsplaylist.vim
/usr/local/share/vim/vim91/syntax/hog.vim
/usr/local/share/vim/vim91/syntax/hollywood.vim
/usr/local/share/vim/vim91/syntax/hostconf.vim
/usr/local/share/vim/vim91/syntax/hostsaccess.vim
/usr/local/share/vim/vim91/syntax/htmlangular.vim
/usr/local/share/vim/vim91/syntax/htmlcheetah.vim
/usr/local/share/vim/vim91/syntax/htmldjango.vim
/usr/local/share/vim/vim91/syntax/htmlm4.vim
/usr/local/share/vim/vim91/syntax/htmlos.vim
/usr/local/share/vim/vim91/syntax/html.vim
/usr/local/share/vim/vim91/syntax/hyprlang.vim
/usr/local/share/vim/vim91/syntax/i3config.vim
/usr/local/share/vim/vim91/syntax/ia64.vim
/usr/local/share/vim/vim91/syntax/ibasic.vim
/usr/local/share/vim/vim91/syntax/icemenu.vim
/usr/local/share/vim/vim91/syntax/icon.vim
/usr/local/share/vim/vim91/syntax/idlang.vim
/usr/local/share/vim/vim91/syntax/idl.vim
/usr/local/share/vim/vim91/syntax/idris2.vim
/usr/local/share/vim/vim91/syntax/indent.vim
/usr/local/share/vim/vim91/syntax/inform.vim
/usr/local/share/vim/vim91/syntax/initex.vim
/usr/local/share/vim/vim91/syntax/initng.vim
/usr/local/share/vim/vim91/syntax/inittab.vim
/usr/local/share/vim/vim91/syntax/ipfilter.vim
/usr/local/share/vim/vim91/syntax/ipkg.vim
/usr/local/share/vim/vim91/syntax/ishd.vim
/usr/local/share/vim/vim91/syntax/iss.vim
/usr/local/share/vim/vim91/syntax/ist.vim
/usr/local/share/vim/vim91/syntax/jal.vim
/usr/local/share/vim/vim91/syntax/jam.vim
/usr/local/share/vim/vim91/syntax/jargon.vim
/usr/local/share/vim/vim91/syntax/javacc.vim
/usr/local/share/vim/vim91/syntax/javascriptreact.vim
/usr/local/share/vim/vim91/syntax/javascript.vim
/usr/local/share/vim/vim91/syntax/java.vim
/usr/local/share/vim/vim91/syntax/jess.vim
/usr/local/share/vim/vim91/syntax/jgraph.vim
/usr/local/share/vim/vim91/syntax/jinja.vim
/usr/local/share/vim/vim91/syntax/jjdescription.vim
/usr/local/share/vim/vim91/syntax/jovial.vim
/usr/local/share/vim/vim91/syntax/jproperties.vim
/usr/local/share/vim/vim91/syntax/jq.vim
/usr/local/share/vim/vim91/syntax/json5.vim
/usr/local/share/vim/vim91/syntax/jsonc.vim
/usr/local/share/vim/vim91/syntax/json.vim
/usr/local/share/vim/vim91/syntax/jsp.vim
/usr/local/share/vim/vim91/syntax/julia.vim
/usr/local/share/vim/vim91/syntax/just.vim
/usr/local/share/vim/vim91/syntax/j.vim
/usr/local/share/vim/vim91/syntax/karel.vim
/usr/local/share/vim/vim91/syntax/kconfig.vim
/usr/local/share/vim/vim91/syntax/kdl.vim
/usr/local/share/vim/vim91/syntax/kivy.vim
/usr/local/share/vim/vim91/syntax/kix.vim
/usr/local/share/vim/vim91/syntax/kotlin.vim
/usr/local/share/vim/vim91/syntax/krl.vim
/usr/local/share/vim/vim91/syntax/kscript.vim
/usr/local/share/vim/vim91/syntax/kwt.vim
/usr/local/share/vim/vim91/syntax/lace.vim
/usr/local/share/vim/vim91/syntax/latte.vim
/usr/local/share/vim/vim91/syntax/lc.vim
/usr/local/share/vim/vim91/syntax/ldapconf.vim
/usr/local/share/vim/vim91/syntax/ldif.vim
/usr/local/share/vim/vim91/syntax/ld.vim
/usr/local/share/vim/vim91/syntax/less.vim
/usr/local/share/vim/vim91/syntax/lex.vim
/usr/local/share/vim/vim91/syntax/lftp.vim
/usr/local/share/vim/vim91/syntax/lf.vim
/usr/local/share/vim/vim91/syntax/lhaskell.vim
/usr/local/share/vim/vim91/syntax/libao.vim
/usr/local/share/vim/vim91/syntax/lidris2.vim
/usr/local/share/vim/vim91/syntax/lifelines.vim
/usr/local/share/vim/vim91/syntax/lilo.vim
/usr/local/share/vim/vim91/syntax/limits.vim
/usr/local/share/vim/vim91/syntax/liquid.vim
/usr/local/share/vim/vim91/syntax/lisp.vim
/usr/local/share/vim/vim91/syntax/litestep.vim
/usr/local/share/vim/vim91/syntax/lite.vim
/usr/local/share/vim/vim91/syntax/livebook.vim
/usr/local/share/vim/vim91/syntax/lnkmap.vim
/usr/local/share/vim/vim91/syntax/lnk.vim
/usr/local/share/vim/vim91/syntax/loginaccess.vim
/usr/local/share/vim/vim91/syntax/logindefs.vim
/usr/local/share/vim/vim91/syntax/logtalk.vim
/usr/local/share/vim/vim91/syntax/lotos.vim
/usr/local/share/vim/vim91/syntax/lout.vim
/usr/local/share/vim/vim91/syntax/lpc.vim
/usr/local/share/vim/vim91/syntax/lprolog.vim
/usr/local/share/vim/vim91/syntax/lscript.vim
/usr/local/share/vim/vim91/syntax/lsl.vim
/usr/local/share/vim/vim91/syntax/lss.vim
/usr/local/share/vim/vim91/syntax/luau.vim
/usr/local/share/vim/vim91/syntax/lua.vim
/usr/local/share/vim/vim91/syntax/lynx.vim
/usr/local/share/vim/vim91/syntax/lyrics.vim
/usr/local/share/vim/vim91/syntax/m17ndb.vim
/usr/local/share/vim/vim91/syntax/m3build.vim
/usr/local/share/vim/vim91/syntax/m3quake.vim
/usr/local/share/vim/vim91/syntax/m4.vim
/usr/local/share/vim/vim91/syntax/mailaliases.vim
/usr/local/share/vim/vim91/syntax/mailcap.vim
/usr/local/share/vim/vim91/syntax/mail.vim
/usr/local/share/vim/vim91/syntax/make.vim
/usr/local/share/vim/vim91/syntax/mallard.vim
/usr/local/share/vim/vim91/syntax/manconf.vim
/usr/local/share/vim/vim91/syntax/manual.vim
/usr/local/share/vim/vim91/syntax/man.vim
/usr/local/share/vim/vim91/syntax/maple.vim
/usr/local/share/vim/vim91/syntax/markdown.vim
/usr/local/share/vim/vim91/syntax/masm.vim
/usr/local/share/vim/vim91/syntax/mason.vim
/usr/local/share/vim/vim91/syntax/master.vim
/usr/local/share/vim/vim91/syntax/matlab.vim
/usr/local/share/vim/vim91/syntax/maxima.vim
/usr/local/share/vim/vim91/syntax/mbsync.vim
/usr/local/share/vim/vim91/syntax/mediawiki.vim
/usr/local/share/vim/vim91/syntax/mel.vim
/usr/local/share/vim/vim91/syntax/mermaid.vim
/usr/local/share/vim/vim91/syntax/meson.vim
/usr/local/share/vim/vim91/syntax/messages.vim
/usr/local/share/vim/vim91/syntax/mf.vim
/usr/local/share/vim/vim91/syntax/mgl.vim
/usr/local/share/vim/vim91/syntax/mgp.vim
/usr/local/share/vim/vim91/syntax/mib.vim
/usr/local/share/vim/vim91/syntax/mix.vim
/usr/local/share/vim/vim91/syntax/mma.vim
/usr/local/share/vim/vim91/syntax/mmix.vim
/usr/local/share/vim/vim91/syntax/mmp.vim
/usr/local/share/vim/vim91/syntax/modconf.vim
/usr/local/share/vim/vim91/syntax/model.vim
/usr/local/share/vim/vim91/syntax/modsim3.vim
/usr/local/share/vim/vim91/syntax/modula2
/usr/local/share/vim/vim91/syntax/modula2/opt
/usr/local/share/vim/vim91/syntax/modula2/opt/iso.vim
/usr/local/share/vim/vim91/syntax/modula2/opt/pim.vim
/usr/local/share/vim/vim91/syntax/modula2/opt/r10.vim
/usr/local/share/vim/vim91/syntax/modula2.vim
/usr/local/share/vim/vim91/syntax/modula3.vim
/usr/local/share/vim/vim91/syntax/mojo.vim
/usr/local/share/vim/vim91/syntax/monk.vim
/usr/local/share/vim/vim91/syntax/moo.vim
/usr/local/share/vim/vim91/syntax/mplayerconf.vim
/usr/local/share/vim/vim91/syntax/mp.vim
/usr/local/share/vim/vim91/syntax/mrxvtrc.vim
/usr/local/share/vim/vim91/syntax/msidl.vim
/usr/local/share/vim/vim91/syntax/msmessages.vim
/usr/local/share/vim/vim91/syntax/msql.vim
/usr/local/share/vim/vim91/syntax/mss.vim
/usr/local/share/vim/vim91/syntax/mupad.vim
/usr/local/share/vim/vim91/syntax/murphi.vim
/usr/local/share/vim/vim91/syntax/mush.vim
/usr/local/share/vim/vim91/syntax/muttrc.vim
/usr/local/share/vim/vim91/syntax/mysql.vim
/usr/local/share/vim/vim91/syntax/n1ql.vim
/usr/local/share/vim/vim91/syntax/named.vim
/usr/local/share/vim/vim91/syntax/nanorc.vim
/usr/local/share/vim/vim91/syntax/nasm.vim
/usr/local/share/vim/vim91/syntax/nastran.vim
/usr/local/share/vim/vim91/syntax/natural.vim
/usr/local/share/vim/vim91/syntax/ncf.vim
/usr/local/share/vim/vim91/syntax/neomuttlog.vim
/usr/local/share/vim/vim91/syntax/neomuttrc.vim
/usr/local/share/vim/vim91/syntax/netrc.vim
/usr/local/share/vim/vim91/syntax/nginx.vim
/usr/local/share/vim/vim91/syntax/ninja.vim
/usr/local/share/vim/vim91/syntax/nix.vim
/usr/local/share/vim/vim91/syntax/nosyntax.vim
/usr/local/share/vim/vim91/syntax/nqc.vim
/usr/local/share/vim/vim91/syntax/nroff.vim
/usr/local/share/vim/vim91/syntax/nsis.vim
/usr/local/share/vim/vim91/syntax/objcpp.vim
/usr/local/share/vim/vim91/syntax/objc.vim
/usr/local/share/vim/vim91/syntax/obj.vim
/usr/local/share/vim/vim91/syntax/obse.vim
/usr/local/share/vim/vim91/syntax/ocaml.vim
/usr/local/share/vim/vim91/syntax/occam.vim
/usr/local/share/vim/vim91/syntax/odin.vim
/usr/local/share/vim/vim91/syntax/omnimark.vim
/usr/local/share/vim/vim91/syntax/ondir.vim
/usr/local/share/vim/vim91/syntax/opam.vim
/usr/local/share/vim/vim91/syntax/opencl.vim
/usr/local/share/vim/vim91/syntax/openroad.vim
/usr/local/share/vim/vim91/syntax/openscad.vim
/usr/local/share/vim/vim91/syntax/openvpn.vim
/usr/local/share/vim/vim91/syntax/opl.vim
/usr/local/share/vim/vim91/syntax/ora.vim
/usr/local/share/vim/vim91/syntax/org.vim
/usr/local/share/vim/vim91/syntax/pacmanlog.vim
/usr/local/share/vim/vim91/syntax/pamconf.vim
/usr/local/share/vim/vim91/syntax/pamenv.vim
/usr/local/share/vim/vim91/syntax/pandoc.vim
/usr/local/share/vim/vim91/syntax/papp.vim
/usr/local/share/vim/vim91/syntax/pascal.vim
/usr/local/share/vim/vim91/syntax/passwd.vim
/usr/local/share/vim/vim91/syntax/pbtxt.vim
/usr/local/share/vim/vim91/syntax/pcap.vim
/usr/local/share/vim/vim91/syntax/pccts.vim
/usr/local/share/vim/vim91/syntax/pdf.vim
/usr/local/share/vim/vim91/syntax/perl.vim
/usr/local/share/vim/vim91/syntax/pfmain.vim
/usr/local/share/vim/vim91/syntax/pf.vim
/usr/local/share/vim/vim91/syntax/php.vim
/usr/local/share/vim/vim91/syntax/phtml.vim
/usr/local/share/vim/vim91/syntax/pic.vim
/usr/local/share/vim/vim91/syntax/pike.vim
/usr/local/share/vim/vim91/syntax/pilrc.vim
/usr/local/share/vim/vim91/syntax/pine.vim
/usr/local/share/vim/vim91/syntax/pinfo.vim
/usr/local/share/vim/vim91/syntax/plaintex.vim
/usr/local/share/vim/vim91/syntax/pli.vim
/usr/local/share/vim/vim91/syntax/plm.vim
/usr/local/share/vim/vim91/syntax/plp.vim
/usr/local/share/vim/vim91/syntax/plsql.vim
/usr/local/share/vim/vim91/syntax/pod.vim
/usr/local/share/vim/vim91/syntax/poefilter.vim
/usr/local/share/vim/vim91/syntax/poke.vim
/usr/local/share/vim/vim91/syntax/postscr.vim
/usr/local/share/vim/vim91/syntax/po.vim
/usr/local/share/vim/vim91/syntax/povini.vim
/usr/local/share/vim/vim91/syntax/pov.vim
/usr/local/share/vim/vim91/syntax/ppd.vim
/usr/local/share/vim/vim91/syntax/ppwiz.vim
/usr/local/share/vim/vim91/syntax/pq.vim
/usr/local/share/vim/vim91/syntax/prescribe.vim
/usr/local/share/vim/vim91/syntax/privoxy.vim
/usr/local/share/vim/vim91/syntax/procmail.vim
/usr/local/share/vim/vim91/syntax/progress.vim
/usr/local/share/vim/vim91/syntax/prolog.vim
/usr/local/share/vim/vim91/syntax/promela.vim
/usr/local/share/vim/vim91/syntax/protocols.vim
/usr/local/share/vim/vim91/syntax/proto.vim
/usr/local/share/vim/vim91/syntax/prql.vim
/usr/local/share/vim/vim91/syntax/ps1.vim
/usr/local/share/vim/vim91/syntax/ps1xml.vim
/usr/local/share/vim/vim91/syntax/psf.vim
/usr/local/share/vim/vim91/syntax/psl.vim
/usr/local/share/vim/vim91/syntax/ptcap.vim
/usr/local/share/vim/vim91/syntax/ptx.vim
/usr/local/share/vim/vim91/syntax/purifylog.vim
/usr/local/share/vim/vim91/syntax/pymanifest.vim
/usr/local/share/vim/vim91/syntax/pyrex.vim
/usr/local/share/vim/vim91/syntax/python2.vim
/usr/local/share/vim/vim91/syntax/python.vim
/usr/local/share/vim/vim91/syntax/qb64.vim
/usr/local/share/vim/vim91/syntax/qf.vim
/usr/local/share/vim/vim91/syntax/qml.vim
/usr/local/share/vim/vim91/syntax/quake.vim
/usr/local/share/vim/vim91/syntax/quarto.vim
/usr/local/share/vim/vim91/syntax/racc.vim
/usr/local/share/vim/vim91/syntax/racket.vim
/usr/local/share/vim/vim91/syntax/radiance.vim
/usr/local/share/vim/vim91/syntax/raku.vim
/usr/local/share/vim/vim91/syntax/raml.vim
/usr/local/share/vim/vim91/syntax/rapid.vim
/usr/local/share/vim/vim91/syntax/rasi.vim
/usr/local/share/vim/vim91/syntax/ratpoison.vim
/usr/local/share/vim/vim91/syntax/rcslog.vim
/usr/local/share/vim/vim91/syntax/rcs.vim
/usr/local/share/vim/vim91/syntax/rc.vim
/usr/local/share/vim/vim91/syntax/readline.vim
/usr/local/share/vim/vim91/syntax/README.txt
/usr/local/share/vim/vim91/syntax/rebol.vim
/usr/local/share/vim/vim91/syntax/redif.vim
/usr/local/share/vim/vim91/syntax/registry.vim
/usr/local/share/vim/vim91/syntax/rego.vim
/usr/local/share/vim/vim91/syntax/remind.vim
/usr/local/share/vim/vim91/syntax/requirements.vim
/usr/local/share/vim/vim91/syntax/resolv.vim
/usr/local/share/vim/vim91/syntax/reva.vim
/usr/local/share/vim/vim91/syntax/rexx.vim
/usr/local/share/vim/vim91/syntax/rhelp.vim
/usr/local/share/vim/vim91/syntax/rib.vim
/usr/local/share/vim/vim91/syntax/rmd.vim
/usr/local/share/vim/vim91/syntax/rnc.vim
/usr/local/share/vim/vim91/syntax/rng.vim
/usr/local/share/vim/vim91/syntax/rnoweb.vim
/usr/local/share/vim/vim91/syntax/robots.vim
/usr/local/share/vim/vim91/syntax/routeros.vim
/usr/local/share/vim/vim91/syntax/rpcgen.vim
/usr/local/share/vim/vim91/syntax/rpl.vim
/usr/local/share/vim/vim91/syntax/rrst.vim
/usr/local/share/vim/vim91/syntax/rst.vim
/usr/local/share/vim/vim91/syntax/rtf.vim
/usr/local/share/vim/vim91/syntax/ruby.vim
/usr/local/share/vim/vim91/syntax/rust.vim
/usr/local/share/vim/vim91/syntax/r.vim
/usr/local/share/vim/vim91/syntax/salt.vim
/usr/local/share/vim/vim91/syntax/samba.vim
/usr/local/share/vim/vim91/syntax/sass.vim
/usr/local/share/vim/vim91/syntax/sas.vim
/usr/local/share/vim/vim91/syntax/sather.vim
/usr/local/share/vim/vim91/syntax/sbt.vim
/usr/local/share/vim/vim91/syntax/scala.vim
/usr/local/share/vim/vim91/syntax/scdoc.vim
/usr/local/share/vim/vim91/syntax/scheme.vim
/usr/local/share/vim/vim91/syntax/scilab.vim
/usr/local/share/vim/vim91/syntax/screen.vim
/usr/local/share/vim/vim91/syntax/scss.vim
/usr/local/share/vim/vim91/syntax/sdc.vim
/usr/local/share/vim/vim91/syntax/sdl.vim
/usr/local/share/vim/vim91/syntax/sd.vim
/usr/local/share/vim/vim91/syntax/sed.vim
/usr/local/share/vim/vim91/syntax/sendpr.vim
/usr/local/share/vim/vim91/syntax/sensors.vim
/usr/local/share/vim/vim91/syntax/services.vim
/usr/local/share/vim/vim91/syntax/setserial.vim
/usr/local/share/vim/vim91/syntax/sexplib.vim
/usr/local/share/vim/vim91/syntax/sgmldecl.vim
/usr/local/share/vim/vim91/syntax/sgmllnx.vim
/usr/local/share/vim/vim91/syntax/sgml.vim
/usr/local/share/vim/vim91/syntax/shaderslang.vim
/usr/local/share/vim/vim91/syntax/shared
/usr/local/share/vim/vim91/syntax/shared/context-data-context.vim
/usr/local/share/vim/vim91/syntax/shared/context-data-interfaces.vim
/usr/local/share/vim/vim91/syntax/shared/context-data-metafun.vim
/usr/local/share/vim/vim91/syntax/shared/context-data-tex.vim
/usr/local/share/vim/vim91/syntax/shared/debarchitectures.vim
/usr/local/share/vim/vim91/syntax/shared/debversions.vim
/usr/local/share/vim/vim91/syntax/shared/hgcommitDiff.vim
/usr/local/share/vim/vim91/syntax/shared/README.txt
/usr/local/share/vim/vim91/syntax/shared/typescriptcommon.vim
/usr/local/share/vim/vim91/syntax/sh.vim
/usr/local/share/vim/vim91/syntax/sicad.vim
/usr/local/share/vim/vim91/syntax/sieve.vim
/usr/local/share/vim/vim91/syntax/sil.vim
/usr/local/share/vim/vim91/syntax/simula.vim
/usr/local/share/vim/vim91/syntax/sindacmp.vim
/usr/local/share/vim/vim91/syntax/sindaout.vim
/usr/local/share/vim/vim91/syntax/sinda.vim
/usr/local/share/vim/vim91/syntax/sisu.vim
/usr/local/share/vim/vim91/syntax/skill.vim
/usr/local/share/vim/vim91/syntax/slang.vim
/usr/local/share/vim/vim91/syntax/slice.vim
/usr/local/share/vim/vim91/syntax/slpconf.vim
/usr/local/share/vim/vim91/syntax/slpreg.vim
/usr/local/share/vim/vim91/syntax/slpspi.vim
/usr/local/share/vim/vim91/syntax/slrnrc.vim
/usr/local/share/vim/vim91/syntax/slrnsc.vim
/usr/local/share/vim/vim91/syntax/sl.vim
/usr/local/share/vim/vim91/syntax/smarty.vim
/usr/local/share/vim/vim91/syntax/smcl.vim
/usr/local/share/vim/vim91/syntax/smil.vim
/usr/local/share/vim/vim91/syntax/smith.vim
/usr/local/share/vim/vim91/syntax/sml.vim
/usr/local/share/vim/vim91/syntax/sm.vim
/usr/local/share/vim/vim91/syntax/snnsnet.vim
/usr/local/share/vim/vim91/syntax/snnspat.vim
/usr/local/share/vim/vim91/syntax/snnsres.vim
/usr/local/share/vim/vim91/syntax/snobol4.vim
/usr/local/share/vim/vim91/syntax/solidity.vim
/usr/local/share/vim/vim91/syntax/spajson.vim
/usr/local/share/vim/vim91/syntax/specman.vim
/usr/local/share/vim/vim91/syntax/spec.vim
/usr/local/share/vim/vim91/syntax/spice.vim
/usr/local/share/vim/vim91/syntax/splint.vim
/usr/local/share/vim/vim91/syntax/spup.vim
/usr/local/share/vim/vim91/syntax/spyce.vim
/usr/local/share/vim/vim91/syntax/sqlanywhere.vim
/usr/local/share/vim/vim91/syntax/sqlforms.vim
/usr/local/share/vim/vim91/syntax/sqlhana.vim
/usr/local/share/vim/vim91/syntax/sqlinformix.vim
/usr/local/share/vim/vim91/syntax/sqlj.vim
/usr/local/share/vim/vim91/syntax/sqloracle.vim
/usr/local/share/vim/vim91/syntax/sql.vim
/usr/local/share/vim/vim91/syntax/sqr.vim
/usr/local/share/vim/vim91/syntax/squid.vim
/usr/local/share/vim/vim91/syntax/squirrel.vim
/usr/local/share/vim/vim91/syntax/srec.vim
/usr/local/share/vim/vim91/syntax/srt.vim
/usr/local/share/vim/vim91/syntax/ssa.vim
/usr/local/share/vim/vim91/syntax/sshconfig.vim
/usr/local/share/vim/vim91/syntax/sshdconfig.vim
/usr/local/share/vim/vim91/syntax/stata.vim
/usr/local/share/vim/vim91/syntax/stp.vim
/usr/local/share/vim/vim91/syntax/strace.vim
/usr/local/share/vim/vim91/syntax/structurizr.vim
/usr/local/share/vim/vim91/syntax/st.vim
/usr/local/share/vim/vim91/syntax/stylus.vim
/usr/local/share/vim/vim91/syntax/sudoers.vim
/usr/local/share/vim/vim91/syntax/svg.vim
/usr/local/share/vim/vim91/syntax/svn.vim
/usr/local/share/vim/vim91/syntax/swayconfig.vim
/usr/local/share/vim/vim91/syntax/swiftgyb.vim
/usr/local/share/vim/vim91/syntax/swift.vim
/usr/local/share/vim/vim91/syntax/swig.vim
/usr/local/share/vim/vim91/syntax/syncolor.vim
/usr/local/share/vim/vim91/syntax/synload.vim
/usr/local/share/vim/vim91/syntax/syntax.vim
/usr/local/share/vim/vim91/syntax/sysctl.vim
/usr/local/share/vim/vim91/syntax/systemd.vim
/usr/local/share/vim/vim91/syntax/systemverilog.vim
/usr/local/share/vim/vim91/syntax/tads.vim
/usr/local/share/vim/vim91/syntax/tags.vim
/usr/local/share/vim/vim91/syntax/takcmp.vim
/usr/local/share/vim/vim91/syntax/takout.vim
/usr/local/share/vim/vim91/syntax/tak.vim
/usr/local/share/vim/vim91/syntax/tap.vim
/usr/local/share/vim/vim91/syntax/tar.vim
/usr/local/share/vim/vim91/syntax/taskdata.vim
/usr/local/share/vim/vim91/syntax/taskedit.vim
/usr/local/share/vim/vim91/syntax/tasm.vim
/usr/local/share/vim/vim91/syntax/tcl.vim
/usr/local/share/vim/vim91/syntax/tcsh.vim
/usr/local/share/vim/vim91/syntax/template.vim
/usr/local/share/vim/vim91/syntax/teraterm.vim
/usr/local/share/vim/vim91/syntax/tera.vim
/usr/local/share/vim/vim91/syntax/terminfo.vim
/usr/local/share/vim/vim91/syntax/terraform.vim
/usr/local/share/vim/vim91/syntax/texinfo.vim
/usr/local/share/vim/vim91/syntax/texmf.vim
/usr/local/share/vim/vim91/syntax/tex.vim
/usr/local/share/vim/vim91/syntax/tf.vim
/usr/local/share/vim/vim91/syntax/thrift.vim
/usr/local/share/vim/vim91/syntax/tiasm.vim
/usr/local/share/vim/vim91/syntax/tidy.vim
/usr/local/share/vim/vim91/syntax/tilde.vim
/usr/local/share/vim/vim91/syntax/tli.vim
/usr/local/share/vim/vim91/syntax/tmux.vim
/usr/local/share/vim/vim91/syntax/toml.vim
/usr/local/share/vim/vim91/syntax/tpp.vim
/usr/local/share/vim/vim91/syntax/trasys.vim
/usr/local/share/vim/vim91/syntax/treetop.vim
/usr/local/share/vim/vim91/syntax/trustees.vim
/usr/local/share/vim/vim91/syntax/tsalt.vim
/usr/local/share/vim/vim91/syntax/tsscl.vim
/usr/local/share/vim/vim91/syntax/tssgm.vim
/usr/local/share/vim/vim91/syntax/tssop.vim
/usr/local/share/vim/vim91/syntax/tsv.vim
/usr/local/share/vim/vim91/syntax/tt2html.vim
/usr/local/share/vim/vim91/syntax/tt2js.vim
/usr/local/share/vim/vim91/syntax/tt2.vim
/usr/local/share/vim/vim91/syntax/tutor.vim
/usr/local/share/vim/vim91/syntax/typescriptreact.vim
/usr/local/share/vim/vim91/syntax/typescript.vim
/usr/local/share/vim/vim91/syntax/typst.vim
/usr/local/share/vim/vim91/syntax/uci.vim
/usr/local/share/vim/vim91/syntax/uc.vim
/usr/local/share/vim/vim91/syntax/udevconf.vim
/usr/local/share/vim/vim91/syntax/udevperm.vim
/usr/local/share/vim/vim91/syntax/udevrules.vim
/usr/local/share/vim/vim91/syntax/uil.vim
/usr/local/share/vim/vim91/syntax/unison.vim
/usr/local/share/vim/vim91/syntax/updatedb.vim
/usr/local/share/vim/vim91/syntax/upstart.vim
/usr/local/share/vim/vim91/syntax/upstreamdat.vim
/usr/local/share/vim/vim91/syntax/upstreaminstalllog.vim
/usr/local/share/vim/vim91/syntax/upstreamlog.vim
/usr/local/share/vim/vim91/syntax/upstreamrpt.vim
/usr/local/share/vim/vim91/syntax/urlshortcut.vim
/usr/local/share/vim/vim91/syntax/usserverlog.vim
/usr/local/share/vim/vim91/syntax/usw2kagtlog.vim
/usr/local/share/vim/vim91/syntax/valgrind.vim
/usr/local/share/vim/vim91/syntax/vb.vim
/usr/local/share/vim/vim91/syntax/vdf.vim
/usr/local/share/vim/vim91/syntax/vera.vim
/usr/local/share/vim/vim91/syntax/verilogams.vim
/usr/local/share/vim/vim91/syntax/verilog.vim
/usr/local/share/vim/vim91/syntax/vgrindefs.vim
/usr/local/share/vim/vim91/syntax/vhdl.vim
/usr/local/share/vim/vim91/syntax/viminfo.vim
/usr/local/share/vim/vim91/syntax/vimnormal.vim
/usr/local/share/vim/vim91/syntax/vim.vim
/usr/local/share/vim/vim91/syntax/virata.vim
/usr/local/share/vim/vim91/syntax/vmasm.vim
/usr/local/share/vim/vim91/syntax/voscm.vim
/usr/local/share/vim/vim91/syntax/vrml.vim
/usr/local/share/vim/vim91/syntax/vroom.vim
/usr/local/share/vim/vim91/syntax/vsejcl.vim
/usr/local/share/vim/vim91/syntax/vue.vim
/usr/local/share/vim/vim91/syntax/wat.vim
/usr/local/share/vim/vim91/syntax/wdiff.vim
/usr/local/share/vim/vim91/syntax/wdl.vim
/usr/local/share/vim/vim91/syntax/webmacro.vim
/usr/local/share/vim/vim91/syntax/web.vim
/usr/local/share/vim/vim91/syntax/wget2.vim
/usr/local/share/vim/vim91/syntax/wget.vim
/usr/local/share/vim/vim91/syntax/whitespace.vim
/usr/local/share/vim/vim91/syntax/winbatch.vim
/usr/local/share/vim/vim91/syntax/wml.vim
/usr/local/share/vim/vim91/syntax/wsh.vim
/usr/local/share/vim/vim91/syntax/wsml.vim
/usr/local/share/vim/vim91/syntax/wvdial.vim
/usr/local/share/vim/vim91/syntax/xbl.vim
/usr/local/share/vim/vim91/syntax/xcompose.vim
/usr/local/share/vim/vim91/syntax/xdefaults.vim
/usr/local/share/vim/vim91/syntax/xf86conf.vim
/usr/local/share/vim/vim91/syntax/xhtml.vim
/usr/local/share/vim/vim91/syntax/xinetd.vim
/usr/local/share/vim/vim91/syntax/xkb.vim
/usr/local/share/vim/vim91/syntax/xmath.vim
/usr/local/share/vim/vim91/syntax/xml.vim
/usr/local/share/vim/vim91/syntax/xmodmap.vim
/usr/local/share/vim/vim91/syntax/xpm2.vim
/usr/local/share/vim/vim91/syntax/xpm.vim
/usr/local/share/vim/vim91/syntax/xquery.vim
/usr/local/share/vim/vim91/syntax/xsd.vim
/usr/local/share/vim/vim91/syntax/xslt.vim
/usr/local/share/vim/vim91/syntax/xs.vim
/usr/local/share/vim/vim91/syntax/xxd.vim
/usr/local/share/vim/vim91/syntax/yacc.vim
/usr/local/share/vim/vim91/syntax/yaml.vim
/usr/local/share/vim/vim91/syntax/z8a.vim
/usr/local/share/vim/vim91/syntax/zathurarc.vim
/usr/local/share/vim/vim91/syntax/zig.vim
/usr/local/share/vim/vim91/syntax/zimbu.vim
/usr/local/share/vim/vim91/syntax/zir.vim
/usr/local/share/vim/vim91/syntax/zserio.vim
/usr/local/share/vim/vim91/syntax/zsh.vim
And yes I know that having a syntax highlighting file isn't the same as having tree-sitter support but it's a lot better that than nothing.

Also, since Helix is written in R*st, is the community trooned out? That's the sort of thing I've worried about since getting Caves of Qud (not in Rust, but the community is full of censorious faggotry).
well i'd say it's like the difference between choosing a babby distro like mint or a more upstream distro like debian
since emacs is an operating system it has distros of course
everything your fancy german doom emacs can do seems to be possible in stock emacs, it just might just not have some of those weird nonstandard tweak customizations
it's just my (warranted) fear of downstream tweakers fucking shit up after dark
I've used Linux since high school (in my mid-30s presently), would probably not have many difficulties using Debian testing (which would arguably be a step up in some ways), and while it is true that Mint is a "babby" distro, it also doesn't really impede me from doing what I want and I'm using it right now.
 
I've used Linux since high school (in my mid-30s presently), would probably not have many difficulties using Debian testing (which would arguably be a step up in some ways), and while it is true that Mint is a "babby" distro, it also doesn't really impede me from doing what I want and I'm using it right now.
yes you can use whatever you want and a fancy downstream emacs probably won't prevent you from doing anything
but i just personally really prefer to use vanilla shit whenever possible
you can use whatever tricked out bullshit you want but i avoid such things because they seem to sometimes violently implode due to their nature
i have enough problems with software violently imploding as it is
 
which Emacs configuration framework I might want to use.
If you like vim, I'm sure you would like doom emacs. It provides you a few helpful macros for your config (e.g. editing keymaps), but it's pretty close to vanilla otherwise (i.e. nothing I can see violently imploding). It's known for loading very quickly too.
I'm autistic, so I manage my own unwieldy config, but it's functionally close to how doom sets things up by default.

Edit: The user above me will one day develop severe carpal tunnel
 
Last edited:
Back
Top Bottom