code: def bracket_complete(self):
          
          #The important thing to keep track of here is that '(' can be
          #pushed in the following places:
          # - in a subroutine/function definition
          # - when calling a function or subroutine, this includes calls within
          #   the argument list of a function, e.g. function(a, fnb(c,d), e)
          # - when specifying the dimensions of an array for element selection
          # - inside of if/do/while blocks.
  
          #If there is a \s immediately preceding the bracket, then short_symbol
          #will be null string and we are most likely doing arithmetic of some
          #sort or a block statement.
          if self.context.short_symbol == "":
              return {}
  
          line = self.context.current_line.lower()[:self.context.pos[1]-1]
          if "subroutine" in line or "function" in line:
              #We are in the definition of the subroutine or function. They
              #are choosing the parameter names so we don't offer any suggestions.
              return {}
              
          #Sometimes people do if() with the condition immediately after
          #the keyword, this regex will catch that.
          symbol = self.context.short_symbol.lower()
          if symbol in ["if", "do", "while", "elseif", "case", "associate"]:
              return {}
          
          #All that should be left now are dimensions and legitimate function
          #calls.
          fullsymbol = self.context.short_full_symbol.lower()
          return self._bracket_complete_sig(symbol, fullsymbol)
docs: Returns a function call signature for completion whenever
          a bracket '(' is pressed.