" Copyright 2019 Google LLC " " Licensed under the Apache License, Version 2.0 (the "License"); " you may not use this file except in compliance with the License. " You may obtain a copy of the License at " " https://www.apache.org/licenses/LICENSE-2.0 " " Unless required by applicable law or agreed to in writing, software " distributed under the License is distributed on an "AS IS" BASIS, " WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. " See the License for the specific language governing permissions and " limitations under the License. " Indent Python in the Google way. setlocal indentexpr=GetGooglePythonIndent(v:lnum) let s:maxoff = 50 " maximum number of lines to look backwards. function GetGooglePythonIndent(lnum) " Indent inside parens. " Align with the open paren unless it is at the end of the line. " E.g. " open_paren_not_at_EOL(100, " (200, " 300), " 400) " open_paren_at_EOL( " 100, 200, 300, 400) call cursor(a:lnum, 1) let [par_line, par_col] = searchpairpos('(\|{\|\[', '', ')\|}\|\]', 'bW', \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :" \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')" \ . " =~ '\\(Comment\\|String\\)$'") if par_line > 0 call cursor(par_line, 1) if par_col != col("$") - 1 return par_col endif endif " Delegate the rest to the original function. return GetPythonIndent(a:lnum) endfunction let pyindent_nested_paren="&sw*2" let pyindent_open_paren="&sw*2"