Giter Club home page Giter Club logo

Comments (6)

keith-hall avatar keith-hall commented on September 28, 2024 1

I think @eth-p's map-syntax = proposal gives most flexibility. After considering my idea a little, I realize that I don't like the idea of us manually aliasing and maintaining lots of sublime-syntax files - probably my suggestion was more intended as a one-off which users can easily apply themselves. Whereas with some code additions, we can more easily cater for other aliases and better ensure the Markdown codefence language names can also be used directly with bat. 👍

from bat.

keith-hall avatar keith-hall commented on September 28, 2024

Markdown allows to use csharp as a language specifier token, but that's because it has a special rule for it. I believe bat by default expects you to use C# to refer to the CSharp syntax.
I'm not at a computer right now to verify, but try

echo "using System;" | bat -l 'C#'

EDIT: confirmed that the above works.
I agree that it would be nice if the bat language argument on the command line would also work with the Markdown language tokens, but that would take quite a lot of re-working/duplication and maintenance and in some cases where ambiguity could ensue, could cause confusion.

Perhaps a simpler solution would be (if you never look at Java code for example), to update the first_line_match for the C#.sublime-syntax to match on using System;, then you wouldn't even need the language specifier. (See https://github.com/sharkdp/bat/blob/master/README.md#adding-new-syntaxes--language-definitions for details on how to do that.)

from bat.

eth-p avatar eth-p commented on September 28, 2024

Another idea is that we could extend --map-syntax to work with -l/--language.

I'm not sure what the best way to approach it would be, since --map-syntax affects filename-based matchings, but we have a couple of options:

  • Match based on the pattern, e.g. --map-syntax "csharp:C#"

    • Pro: Re-uses the code for syntax mapping.
    • Con: Will cause any files named csharp to use the C# syntax.
    • Con: Causes wildcard patterns to be valid languages for --language.
  • Match based on the pattern, but only if the pattern does not contain any wildcards.

    • Pro: Re-uses the code for syntax mapping.
    • Con: Will cause any files named csharp to use the C# syntax.
  • Introduce a new option called --map-language with the same syntax.

    • Pro: It doesn't interfere with syntax mapping.
    • Con: The name will cause confusion with --map-syntax.
    • Con: It's more code.
  • Introduce a new format for --map-syntax, with = as a delimiter instead of :
    (e.g. `--map-syntax "csharp=C#")

    • Pro: It doesn't interfere with syntax mapping.
    • Con: It's more code.

I'm leaning towards the last approach. Thoughts, @sharkdp, @keith-hall, @Enselic?

from bat.

keith-hall avatar keith-hall commented on September 28, 2024

If I understand correctly the last approach is essentially registering an alias, right? I'm curious if there are any other use cases than for C# - where the language is referred to by multiple similar names. Because if it's just C# for example we could also bundle another sublime-syntax file called Csharp which would just include the main C#.sublime-syntax. I believe it would also solve this concrete problem (due to case insensitive matching) without needing any Rust code changes...

from bat.

Enselic avatar Enselic commented on September 28, 2024

I would say sharkdp and keith-hall are the experts when it comes to syntax mapping, and I 100% trust their judgements in these matters.

from bat.

eth-p avatar eth-p commented on September 28, 2024

@keith-hall it would just be an alias, yeah. I'll defer to your and sharkdp's judgement for the best approach to take with this for the same reasons Enselic mentioned, though.

from bat.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.