Comments (6)
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.
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.
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.
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.
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.
@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)
- bat - Apple Silicon Support HOT 2
- Update README to include GNOME/GTK version of Dark Mode macOS alias. PR:#2963 HOT 1
- Using `batcat --pager "less -R" </path_to_file>` doesen't convert ANSI characters in Kali HOT 1
- Syntax Request: Astro HOT 3
- Maybe patch the newest lisp syntaxes? HOT 1
- Support Font Ligatures HOT 8
- Add Flag to Avoid Treating NUL Separated Input as Binary HOT 11
- [bat error]: 'REPLY': No such file or directory (os error 2) HOT 1
- no license for bundled github-sublime-theme
- no license for bundled sublime-snazzy theme HOT 1
- no license for bundled visual-studio-dark-plus theme
- no license text for bundled Nord-sublime theme HOT 1
- mis-behaviour of `--style=plain` while itegrating with `fzf` HOT 2
- musl asset: inconsistent between output of `file` and `ldd` HOT 2
- Request for a 'statically compiled binary' for aarch64 HOT 5
- Unable to compile bat on Windows from Git HOT 2
- Support ignoring the system-wide configuration file HOT 4
- Format of the man page of `bat` (`assets/manual/bat.1.in`) HOT 1
- (Feature request) Add an option to disable the line numbers HOT 2
- Failure to read config in MSYS2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bat.