Emacs bulk indent for Python

前端 未结 8 1316
星月不相逢
星月不相逢 2021-01-29 17:37

Working with Python in Emacs if I want to add a try/except to a block of code, I often find that I am having to indent the whole block, line by line. In Emacs, how do you inden

8条回答
  •  情深已故
    2021-01-29 18:07

    I'm an Emacs newb, so this answer it probably bordering on useless.

    None of the answers mentioned so far cover re-indentation of literals like dict or list. E.g. M-x indent-region or M-x python-indent-shift-right and company aren't going to help if you've cut-and-pasted the following literal and need it to be re-indented sensibly:

        foo = {
      'bar' : [
         1,
        2,
            3 ],
          'baz' : {
         'asdf' : {
            'banana' : 1,
            'apple' : 2 } } }
    

    It feels like M-x indent-region should do something sensibly in python-mode, but that's not (yet) the case.

    For the specific case where your literals are bracketed, using TAB on the lines in question gets what you want (because whitespace doesn't play a role).

    So what I've been doing in such cases is quickly recording a keyboard macro like C-n TAB as in F3, Ctrl-n (or down arrow), TAB, F4, and then using F4 repeatedly to apply the macro can save a couple of keystrokes. Or you can do C-u 10 C-x e to apply it 10 times.

    (I know it doesn't sound like much, but try re-indenting 100 lines of garbage literal without missing down-arrow, and then having to go up 5 lines and repeat things ;) ).

提交回复
热议问题