@@ -1763,84 +1763,81 @@ add_cursor(_Line, Column, noprune, Terminators, Tokens) ->
17631763  {Column , Terminators , Tokens };
17641764add_cursor (Line , Column , prune_and_cursor , Terminators , Tokens ) -> 
17651765  PrePrunedTokens  =  prune_identifier (Tokens ),
1766-   { PrunedTokens ,  PrunedTerminators }  =  prune_tokens (PrePrunedTokens , [],  Terminators ),
1766+   PrunedTokens   =  prune_tokens (PrePrunedTokens , []),
17671767  CursorTokens  =  [
17681768    {')' , {Line , Column  +  11 , nil }},
17691769    {'(' , {Line , Column  +  10 , nil }},
17701770    {paren_identifier , {Line , Column , nil }, '__cursor__' }
17711771    | PrunedTokens 
17721772  ],
1773-   {Column  +  12 , PrunedTerminators , CursorTokens }.
1773+   {Column  +  12 , Terminators , CursorTokens }.
17741774
17751775prune_identifier ([{identifier , _ , _ } | Tokens ]) ->  Tokens ;
17761776prune_identifier (Tokens ) ->  Tokens .
17771777
17781778% %% Any terminator needs to be closed
1779- prune_tokens ([{'end' , _ } | Tokens ], Opener ,  Terminators ) -> 
1780-   prune_tokens (Tokens , ['end'  | Opener ],  Terminators );
1781- prune_tokens ([{')' , _ } | Tokens ], Opener ,  Terminators ) -> 
1782-   prune_tokens (Tokens , [')'  | Opener ],  Terminators );
1783- prune_tokens ([{']' , _ } | Tokens ], Opener ,  Terminators ) -> 
1784-   prune_tokens (Tokens , [']'  | Opener ],  Terminators );
1785- prune_tokens ([{'}' , _ } | Tokens ], Opener ,  Terminators ) -> 
1786-   prune_tokens (Tokens , ['}'  | Opener ],  Terminators );
1787- prune_tokens ([{'>>' , _ } | Tokens ], Opener ,  Terminators ) -> 
1788-   prune_tokens (Tokens , ['>>'  | Opener ],  Terminators );
1779+ prune_tokens ([{'end' , _ } | Tokens ], Opener ) -> 
1780+   prune_tokens (Tokens , ['end'  | Opener ]);
1781+ prune_tokens ([{')' , _ } | Tokens ], Opener ) -> 
1782+   prune_tokens (Tokens , [')'  | Opener ]);
1783+ prune_tokens ([{']' , _ } | Tokens ], Opener ) -> 
1784+   prune_tokens (Tokens , [']'  | Opener ]);
1785+ prune_tokens ([{'}' , _ } | Tokens ], Opener ) -> 
1786+   prune_tokens (Tokens , ['}'  | Opener ]);
1787+ prune_tokens ([{'>>' , _ } | Tokens ], Opener ) -> 
1788+   prune_tokens (Tokens , ['>>'  | Opener ]);
17891789% %% Close opened terminators
1790- prune_tokens ([{'fn' , _ } | Tokens ], ['end'  | Opener ], Terminators ) -> 
1791-   prune_tokens (Tokens , Opener , Terminators );
1792- prune_tokens ([{'do' , _ } | Tokens ], ['end'  | Opener ], Terminators ) -> 
1793-   prune_tokens (Tokens , Opener , Terminators );
1794- prune_tokens ([{'(' , _ } | Tokens ], [')'  | Opener ], Terminators ) -> 
1795-   prune_tokens (Tokens , Opener , Terminators );
1796- prune_tokens ([{'[' , _ } | Tokens ], [']'  | Opener ], Terminators ) -> 
1797-   prune_tokens (Tokens , Opener , Terminators );
1798- prune_tokens ([{'{' , _ } | Tokens ], ['}'  | Opener ], Terminators ) -> 
1799-   prune_tokens (Tokens , Opener , Terminators );
1800- prune_tokens ([{'<<' , _ } | Tokens ], ['>>'  | Opener ], Terminators ) -> 
1801-   prune_tokens (Tokens , Opener , Terminators );
1802- % %% Handle anonymous functions
1803- prune_tokens ([{'(' , _ }, {capture_op , _ , _ } | Tokens ], [], [{'(' , _ , _ } | Terminators ]) -> 
1804-   prune_tokens (Tokens , [], Terminators );
1790+ prune_tokens ([{'fn' , _ } | Tokens ], ['end'  | Opener ]) -> 
1791+   prune_tokens (Tokens , Opener );
1792+ prune_tokens ([{'do' , _ } | Tokens ], ['end'  | Opener ]) -> 
1793+   prune_tokens (Tokens , Opener );
1794+ prune_tokens ([{'(' , _ } | Tokens ], [')'  | Opener ]) -> 
1795+   prune_tokens (Tokens , Opener );
1796+ prune_tokens ([{'[' , _ } | Tokens ], [']'  | Opener ]) -> 
1797+   prune_tokens (Tokens , Opener );
1798+ prune_tokens ([{'{' , _ } | Tokens ], ['}'  | Opener ]) -> 
1799+   prune_tokens (Tokens , Opener );
1800+ prune_tokens ([{'<<' , _ } | Tokens ], ['>>'  | Opener ]) -> 
1801+   prune_tokens (Tokens , Opener );
18051802% %% or it is time to stop...
1806- prune_tokens ([{';' , _ } | _ ] =  Tokens , [],  Terminators ) -> 
1807-   { Tokens ,  Terminators } ;
1808- prune_tokens ([{'eol' , _ } | _ ] =  Tokens , [],  Terminators ) -> 
1809-   { Tokens ,  Terminators } ;
1810- prune_tokens ([{',' , _ } | _ ] =  Tokens , [],  Terminators ) -> 
1811-   { Tokens ,  Terminators } ;
1812- prune_tokens ([{'fn' , _ } | _ ] =  Tokens , [],  Terminators ) -> 
1813-   { Tokens ,  Terminators } ;
1814- prune_tokens ([{'do' , _ } | _ ] =  Tokens , [],  Terminators ) -> 
1815-   { Tokens ,  Terminators } ;
1816- prune_tokens ([{'(' , _ } | _ ] =  Tokens , [],  Terminators ) -> 
1817-   { Tokens ,  Terminators } ;
1818- prune_tokens ([{'[' , _ } | _ ] =  Tokens , [],  Terminators ) -> 
1819-   { Tokens ,  Terminators } ;
1820- prune_tokens ([{'{' , _ } | _ ] =  Tokens , [],  Terminators ) -> 
1821-   { Tokens ,  Terminators } ;
1822- prune_tokens ([{'<<' , _ } | _ ] =  Tokens , [],  Terminators ) -> 
1823-   { Tokens ,  Terminators } ;
1824- prune_tokens ([{identifier , _ , _ } | _ ] =  Tokens , [],  Terminators ) -> 
1825-   { Tokens ,  Terminators } ;
1826- prune_tokens ([{block_identifier , _ , _ } | _ ] =  Tokens , [],  Terminators ) -> 
1827-   { Tokens ,  Terminators } ;
1828- prune_tokens ([{kw_identifier , _ , _ } | _ ] =  Tokens , [],  Terminators ) -> 
1829-   { Tokens ,  Terminators } ;
1830- prune_tokens ([{kw_identifier_safe , _ , _ } | _ ] =  Tokens , [],  Terminators ) -> 
1831-   { Tokens ,  Terminators } ;
1832- prune_tokens ([{kw_identifier_unsafe , _ , _ } | _ ] =  Tokens , [],  Terminators ) -> 
1833-   { Tokens ,  Terminators } ;
1834- prune_tokens ([{OpType , _ , _ } | _ ] =  Tokens , [],  Terminators )
1803+ prune_tokens ([{';' , _ } | _ ] =  Tokens , []) -> 
1804+   Tokens ;
1805+ prune_tokens ([{'eol' , _ } | _ ] =  Tokens , []) -> 
1806+   Tokens ;
1807+ prune_tokens ([{',' , _ } | _ ] =  Tokens , []) -> 
1808+   Tokens ;
1809+ prune_tokens ([{'fn' , _ } | _ ] =  Tokens , []) -> 
1810+   Tokens ;
1811+ prune_tokens ([{'do' , _ } | _ ] =  Tokens , []) -> 
1812+   Tokens ;
1813+ prune_tokens ([{'(' , _ } | _ ] =  Tokens , []) -> 
1814+   Tokens ;
1815+ prune_tokens ([{'[' , _ } | _ ] =  Tokens , []) -> 
1816+   Tokens ;
1817+ prune_tokens ([{'{' , _ } | _ ] =  Tokens , []) -> 
1818+   Tokens ;
1819+ prune_tokens ([{'<<' , _ } | _ ] =  Tokens , []) -> 
1820+   Tokens ;
1821+ prune_tokens ([{identifier , _ , _ } | _ ] =  Tokens , []) -> 
1822+   Tokens ;
1823+ prune_tokens ([{block_identifier , _ , _ } | _ ] =  Tokens , []) -> 
1824+   Tokens ;
1825+ prune_tokens ([{kw_identifier , _ , _ } | _ ] =  Tokens , []) -> 
1826+   Tokens ;
1827+ prune_tokens ([{kw_identifier_safe , _ , _ } | _ ] =  Tokens , []) -> 
1828+   Tokens ;
1829+ prune_tokens ([{kw_identifier_unsafe , _ , _ } | _ ] =  Tokens , []) -> 
1830+   Tokens ;
1831+ prune_tokens ([{OpType , _ , _ } | _ ] =  Tokens , [])
18351832  when  OpType  =:=  comp_op ; OpType  =:=  at_op ; OpType  =:=  unary_op ; OpType  =:=  and_op ;
18361833       OpType  =:=  or_op ; OpType  =:=  arrow_op ; OpType  =:=  match_op ; OpType  =:=  in_op ;
18371834       OpType  =:=  in_match_op ; OpType  =:=  type_op ; OpType  =:=  dual_op ; OpType  =:=  mult_op ;
18381835       OpType  =:=  power_op ; OpType  =:=  concat_op ; OpType  =:=  range_op ; OpType  =:=  xor_op ;
18391836       OpType  =:=  pipe_op ; OpType  =:=  stab_op ; OpType  =:=  when_op ; OpType  =:=  assoc_op ;
18401837       OpType  =:=  rel_op ; OpType  =:=  ternary_op ; OpType  =:=  capture_op ; OpType  =:=  ellipsis_op  -> 
1841-   { Tokens ,  Terminators } ;
1838+   Tokens ;
18421839% %% or we traverse until the end.
1843- prune_tokens ([_  | Tokens ], Opener ,  Terminators ) -> 
1844-   prune_tokens (Tokens , Opener ,  Terminators );
1845- prune_tokens ([], [],  Terminators ) -> 
1846-   {[],  Terminators } .
1840+ prune_tokens ([_  | Tokens ], Opener ) -> 
1841+   prune_tokens (Tokens , Opener );
1842+ prune_tokens ([], _Opener ) -> 
1843+   [] .
0 commit comments