@@ -979,11 +979,29 @@ defmodule ElixirSense.Core.CompilerTest do
979979          meta  =  Keyword . delete ( meta ,  :capture ) 
980980          { { :fn ,  meta ,  args } ,  state } 
981981
982+         # Normalize binding variables in quote bind_quoted 
983+         # ElixirSense (1.19+ behavior) removes :column, but Elixir < 1.19 keeps it 
984+         { :{} ,  [ ] ,  [ := ,  meta1 ,  [ { :{} ,  [ ] ,  [ var_name ,  var_meta ,  context ] } ,  value ] ] }  =  _node ,  state 
985+         when  is_atom ( var_name )  and  is_list ( var_meta )  and  is_atom ( context )  -> 
986+           # Add :column back for Elixir < 1.19 
987+           var_meta  = 
988+             if  Version . match? ( System . version ( ) ,  "< 1.19.0" )  do 
989+               # For Elixir < 1.19, add :column: 1 if not present 
990+               case  Keyword . has_key? ( var_meta ,  :column )  do 
991+                 true  ->  var_meta 
992+                 false  ->  [ { :column ,  1 }  |  var_meta ] 
993+               end 
994+             else 
995+               var_meta 
996+             end 
997+ 
998+           { { :{} ,  [ ] ,  [ := ,  meta1 ,  [ { :{} ,  [ ] ,  [ var_name ,  var_meta ,  context ] } ,  value ] ] } ,  state } 
999+ 
9821000        { atom ,  meta ,  nil }  =  node ,  state  when  is_atom ( atom )  -> 
9831001          # ElixirSense intentionally uses :"&#{pos}" instead of :capture 
9841002          # Convert to :capture to match Elixir 1.17+ behavior 
9851003          node  = 
986-             with  "&"  <>  int  <-  to_string ( atom ) ,  { pos ,  "" }  <-  Integer . parse ( int )  do 
1004+             with  "&"  <>  int  <-  to_string ( atom ) ,  { _pos ,  "" }  <-  Integer . parse ( int )  do 
9871005              # Normalize metadata 
9881006              meta  = 
9891007                if  Version . match? ( System . version ( ) ,  "< 1.17.0" )  do 
0 commit comments