jskinner / DefaultPackages

Old bug tracker for Sublime Text's "Default Packages", e.g. bad syntax highlighting
http://web.archive.org/web/20150524043750/https://www.sublimetext.com/forum/viewtopic.php?f=2&t=12095
26 stars 2 forks source link

Reindentation messes up case statements #120

Open HeroCC opened 9 years ago

HeroCC commented 9 years ago

OS: Ubuntu 14.04 Version: Sublime Text Build 3083

When using case statements and syntax is set to bash, reindenting the file results in case statements looking like this: (indentation is small because I set tab to 2 spaces, but it reacts the same on a fresh install)

case "${flag}" in
  n) noInstall='true' ;;
u) autoUpdate='true' ;;
f) forseLN='true' ;;
*) error "Unexpected option ${flag}" ;;
esac

While they should look like this:

case "${flag}" in
  n) noInstall='true' ;;
  u) autoUpdate='true' ;;
  f) forseLN='true' ;;
  *) error "Unexpected option ${flag}" ;;
esac

There are many other examples of this (I can provide more) in my code, and a fresh install has the same problem. Is there any way to fix this?

My configuration: here

Thanks!

PoslavskySV commented 7 years ago

So, what is the status of the issue? Is there any workaround? This bug can really "make one mad"; I heavily use case ... esac in bash for parsing arguments, so after applying "reindent" the indentation in my file is completely broken.

keith-hall commented 7 years ago

I've done some experimentation, and it looks like the workaround is to remove the meta_scope: meta.scope.case-clause.shell line at https://github.com/sublimehq/Packages/blob/4db940a44b74727ade298927d5ffdb8826fc9769/ShellScript/Shell-Unix-Generic.sublime-syntax#L45

keith-hall commented 7 years ago

see also https://forum.sublimetext.com/t/bash-case-indentation/8010