@@ -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