DefaultPackages icon indicating copy to clipboard operation
DefaultPackages copied to clipboard

Reindentation messes up case statements

Open HeroCC opened this issue 9 years ago • 3 comments

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!

HeroCC avatar Apr 20 '15 15:04 HeroCC

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.

PoslavskySV avatar Oct 24 '16 15:10 PoslavskySV

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 avatar Oct 25 '16 10:10 keith-hall

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

keith-hall avatar Mar 27 '17 08:03 keith-hall