@@ -1779,84 +1779,81 @@ add_cursor(_Line, Column, noprune, Terminators, Tokens) ->
17791779 {Column , Terminators , Tokens };
17801780add_cursor (Line , Column , prune_and_cursor , Terminators , Tokens ) ->
17811781 PrePrunedTokens = prune_identifier (Tokens ),
1782- { PrunedTokens , PrunedTerminators } = prune_tokens (PrePrunedTokens , [], Terminators ),
1782+ PrunedTokens = prune_tokens (PrePrunedTokens , []),
17831783 CursorTokens = [
17841784 {')' , {Line , Column + 11 , nil }},
17851785 {'(' , {Line , Column + 10 , nil }},
17861786 {paren_identifier , {Line , Column , nil }, '__cursor__' }
17871787 | PrunedTokens
17881788 ],
1789- {Column + 12 , PrunedTerminators , CursorTokens }.
1789+ {Column + 12 , Terminators , CursorTokens }.
17901790
17911791prune_identifier ([{identifier , _ , _ } | Tokens ]) -> Tokens ;
17921792prune_identifier (Tokens ) -> Tokens .
17931793
17941794% %% Any terminator needs to be closed
1795- prune_tokens ([{'end' , _ } | Tokens ], Opener , Terminators ) ->
1796- prune_tokens (Tokens , ['end' | 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- prune_tokens (Tokens , ['}' | Opener ], Terminators );
1803- prune_tokens ([{'>>' , _ } | Tokens ], Opener , Terminators ) ->
1804- prune_tokens (Tokens , ['>>' | Opener ], Terminators );
1795+ prune_tokens ([{'end' , _ } | Tokens ], Opener ) ->
1796+ prune_tokens (Tokens , ['end' | 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 ) ->
1802+ prune_tokens (Tokens , ['}' | Opener ]);
1803+ prune_tokens ([{'>>' , _ } | Tokens ], Opener ) ->
1804+ prune_tokens (Tokens , ['>>' | Opener ]);
18051805% %% Close opened terminators
1806- prune_tokens ([{'fn' , _ } | Tokens ], ['end' | Opener ], Terminators ) ->
1807- prune_tokens (Tokens , Opener , Terminators );
1808- prune_tokens ([{'do' , _ } | Tokens ], ['end' | Opener ], Terminators ) ->
1809- prune_tokens (Tokens , Opener , Terminators );
1810- prune_tokens ([{'(' , _ } | Tokens ], [')' | Opener ], Terminators ) ->
1811- prune_tokens (Tokens , Opener , Terminators );
1812- prune_tokens ([{'[' , _ } | Tokens ], [']' | Opener ], Terminators ) ->
1813- prune_tokens (Tokens , Opener , Terminators );
1814- prune_tokens ([{'{' , _ } | Tokens ], ['}' | Opener ], Terminators ) ->
1815- prune_tokens (Tokens , Opener , Terminators );
1816- prune_tokens ([{'<<' , _ } | Tokens ], ['>>' | Opener ], Terminators ) ->
1817- prune_tokens (Tokens , Opener , Terminators );
1818- % %% Handle anonymous functions
1819- prune_tokens ([{'(' , _ }, {capture_op , _ , _ } | Tokens ], [], [{'(' , _ , _ } | Terminators ]) ->
1820- prune_tokens (Tokens , [], Terminators );
1806+ prune_tokens ([{'fn' , _ } | Tokens ], ['end' | Opener ]) ->
1807+ prune_tokens (Tokens , Opener );
1808+ prune_tokens ([{'do' , _ } | Tokens ], ['end' | Opener ]) ->
1809+ prune_tokens (Tokens , Opener );
1810+ prune_tokens ([{'(' , _ } | Tokens ], [')' | Opener ]) ->
1811+ prune_tokens (Tokens , Opener );
1812+ prune_tokens ([{'[' , _ } | Tokens ], [']' | Opener ]) ->
1813+ prune_tokens (Tokens , Opener );
1814+ prune_tokens ([{'{' , _ } | Tokens ], ['}' | Opener ]) ->
1815+ prune_tokens (Tokens , Opener );
1816+ prune_tokens ([{'<<' , _ } | Tokens ], ['>>' | Opener ]) ->
1817+ prune_tokens (Tokens , Opener );
18211818% %% or it is time to stop...
1822- prune_tokens ([{';' , _ } | _ ] = Tokens , [], Terminators ) ->
1823- { Tokens , Terminators } ;
1824- prune_tokens ([{'eol' , _ } | _ ] = Tokens , [], Terminators ) ->
1825- { Tokens , Terminators } ;
1826- prune_tokens ([{',' , _ } | _ ] = Tokens , [], Terminators ) ->
1827- { Tokens , Terminators } ;
1828- prune_tokens ([{'fn' , _ } | _ ] = Tokens , [], Terminators ) ->
1829- { Tokens , Terminators } ;
1830- prune_tokens ([{'do' , _ } | _ ] = Tokens , [], Terminators ) ->
1831- { Tokens , Terminators } ;
1832- prune_tokens ([{'(' , _ } | _ ] = Tokens , [], Terminators ) ->
1833- { Tokens , Terminators } ;
1834- prune_tokens ([{'[' , _ } | _ ] = Tokens , [], Terminators ) ->
1835- { Tokens , Terminators } ;
1836- prune_tokens ([{'{' , _ } | _ ] = Tokens , [], Terminators ) ->
1837- { Tokens , Terminators } ;
1838- prune_tokens ([{'<<' , _ } | _ ] = Tokens , [], Terminators ) ->
1839- { Tokens , Terminators } ;
1840- prune_tokens ([{identifier , _ , _ } | _ ] = Tokens , [], Terminators ) ->
1841- { Tokens , Terminators } ;
1842- prune_tokens ([{block_identifier , _ , _ } | _ ] = Tokens , [], Terminators ) ->
1843- { Tokens , Terminators } ;
1844- prune_tokens ([{kw_identifier , _ , _ } | _ ] = Tokens , [], Terminators ) ->
1845- { Tokens , Terminators } ;
1846- prune_tokens ([{kw_identifier_safe , _ , _ } | _ ] = Tokens , [], Terminators ) ->
1847- { Tokens , Terminators } ;
1848- prune_tokens ([{kw_identifier_unsafe , _ , _ } | _ ] = Tokens , [], Terminators ) ->
1849- { Tokens , Terminators } ;
1850- prune_tokens ([{OpType , _ , _ } | _ ] = Tokens , [], Terminators )
1819+ prune_tokens ([{';' , _ } | _ ] = Tokens , []) ->
1820+ Tokens ;
1821+ prune_tokens ([{'eol' , _ } | _ ] = Tokens , []) ->
1822+ Tokens ;
1823+ prune_tokens ([{',' , _ } | _ ] = Tokens , []) ->
1824+ Tokens ;
1825+ prune_tokens ([{'fn' , _ } | _ ] = Tokens , []) ->
1826+ Tokens ;
1827+ prune_tokens ([{'do' , _ } | _ ] = Tokens , []) ->
1828+ Tokens ;
1829+ prune_tokens ([{'(' , _ } | _ ] = Tokens , []) ->
1830+ Tokens ;
1831+ prune_tokens ([{'[' , _ } | _ ] = Tokens , []) ->
1832+ Tokens ;
1833+ prune_tokens ([{'{' , _ } | _ ] = Tokens , []) ->
1834+ Tokens ;
1835+ prune_tokens ([{'<<' , _ } | _ ] = Tokens , []) ->
1836+ Tokens ;
1837+ prune_tokens ([{identifier , _ , _ } | _ ] = Tokens , []) ->
1838+ Tokens ;
1839+ prune_tokens ([{block_identifier , _ , _ } | _ ] = Tokens , []) ->
1840+ Tokens ;
1841+ prune_tokens ([{kw_identifier , _ , _ } | _ ] = Tokens , []) ->
1842+ Tokens ;
1843+ prune_tokens ([{kw_identifier_safe , _ , _ } | _ ] = Tokens , []) ->
1844+ Tokens ;
1845+ prune_tokens ([{kw_identifier_unsafe , _ , _ } | _ ] = Tokens , []) ->
1846+ Tokens ;
1847+ prune_tokens ([{OpType , _ , _ } | _ ] = Tokens , [])
18511848 when OpType =:= comp_op ; OpType =:= at_op ; OpType =:= unary_op ; OpType =:= and_op ;
18521849 OpType =:= or_op ; OpType =:= arrow_op ; OpType =:= match_op ; OpType =:= in_op ;
18531850 OpType =:= in_match_op ; OpType =:= type_op ; OpType =:= dual_op ; OpType =:= mult_op ;
18541851 OpType =:= power_op ; OpType =:= concat_op ; OpType =:= range_op ; OpType =:= xor_op ;
18551852 OpType =:= pipe_op ; OpType =:= stab_op ; OpType =:= when_op ; OpType =:= assoc_op ;
18561853 OpType =:= rel_op ; OpType =:= ternary_op ; OpType =:= capture_op ; OpType =:= ellipsis_op ->
1857- { Tokens , Terminators } ;
1854+ Tokens ;
18581855% %% or we traverse until the end.
1859- prune_tokens ([_ | Tokens ], Opener , Terminators ) ->
1860- prune_tokens (Tokens , Opener , Terminators );
1861- prune_tokens ([], [], Terminators ) ->
1862- {[], Terminators } .
1856+ prune_tokens ([_ | Tokens ], Opener ) ->
1857+ prune_tokens (Tokens , Opener );
1858+ prune_tokens ([], _Opener ) ->
1859+ [] .
0 commit comments