\def\RCodeIndex#1{\BeginAccSupp{method=escape,ActualText={}}\smash{\kern-.5pt\textsubscript{\textcolor{gray!80!black}{\texttt{\textmd{\scriptsize#1}}}}\kern-.5pt}\EndAccSupp{}}
\lstdefinelanguage{lR}{
number suffixes={eEiL},
   language=R,
   % remove the underscore
   otherkeywords={!=,~},
   morekeywords=[1]{assign,in},
   showstringspaces=false,
   deletekeywords={sum,prod,text,parse,paste,deparse,eval,c,\&\&,||,nrow,ncol,environment,new.env,new,env,assign,get,add},
   alsoletter={_},
   morestring=[d]",
   add to literate={:=}{{{:=}}}2 {::}{{{:\!:}}}2 {:::}{{{:\!:\!:}}}3 {:<:}{\textcolor{lightgray}{\(\langle\)}}1  {:>:}{\textcolor{lightgray}{\(\rangle\)}}1
      {:br:}{{{\BeginAccSupp{method=escape,ActualText={}}\color{gray}$\hookleftarrow$\EndAccSupp{}}}}1
}

\lstdefinelanguage{lIndexR}{
   language=lR,
   add to literate={_0}{{{\RCodeIndex0}}}1 {_1}{{{\RCodeIndex1}}}1 {_2}{{{\RCodeIndex2}}}1
    {_3}{{{\RCodeIndex3}}}1 {_4}{{{\RCodeIndex4}}}1 {_5}{{{\RCodeIndex5}}}1
    {_6}{{{\RCodeIndex6}}}1 {_?}{{{\RCodeIndex?}}}1 {_7}{{{\RCodeIndex7}}}1
    {_8}{{{\RCodeIndex8}}}1 {_9}{{{\RCodeIndex9}}}1 {_!}{{{\RCodeIndex!}}}1
    {__}{{{\RCodeIndex{\phantom{1}}}}}1 % padding space
}
\RegisterLanguage{R}{lR}
\RegisterLanguage{IndexR}{lIndexR}

