How to alter the bond length of a double bond in chemfig?

I defined TikZ decorations:

\documentclass{article}
\usepackage{chemfig}
\usetikzlibrary{decorations}
\makeatletter
\newdimen\mystartshorten
\newdimen\myendshorten
\mystartshorten0pt
\myendshorten0pt
\pgfdeclaredecoration{sdbond}{initial}{
  \state{initial}[width=\pgfdecoratedremainingdistance,next state=final]
  {
    {
      \pgftransformyshift{\[email protected]@sep}
      \pgfpathmoveto{\pgfqpoint{\mystartshorten}{0pt}}
      {
        \pgftransformxshift{\pgfdecoratedremainingdistance}
        \pgfpathlineto{\pgfqpoint{-\myendshorten}{0pt}}
      }
    }
    \pgfpathmoveto{\pgfpointorigin}
    \pgfpathlineto{\pgfqpoint{\pgfdecoratedremainingdistance}{0pt}}
  }
  \state{final}
  {}
}
\tikzset{
  lsdbond/.code 2 args={%
    \tikzset{decorate, decoration=sdbond}%
    \pgfmathsetlength\mystartshorten{\[email protected]@sep*cot((#1)/2)}%
    \pgfmathsetlength\myendshorten{\[email protected]@sep*cot((#2)/2}%
  },
  rsdbond/.code 2 args={%
    \tikzset{decorate, decoration={sdbond, mirror}}%
    \pgfmathsetlength\mystartshorten{\[email protected]@sep*cot((#1)/2)}%
    \pgfmathsetlength\myendshorten{\[email protected]@sep*cot((#2)/2}%
  }
}
\setdoublesep{0.4em}
\setatomsep{2em}
\makeatother
\begin{document}
\chemfig{[:60]--[::-60,,,,,rsdbond={120}{120}]-[::-60]}
\chemfig{[:90]--[::-90,,,,,rsdbond={90}{60}]-[::-120]}
\end{document}

Two decorations lsdbond (left short double bond) and rsdbond (right short double bond) are defined. lsdbond puts the shortened (pi) bond on the left of the middle (sigma) bond, and rsdbond on the right. They take two arguments: the first is the bond angle on the departure atom of the bond; the second on the arrival atom. The angles are in degrees and should be in the range of (0,180].

Tags:

Chemfig