On Tue, Mar 22, 2022 at 3:22 PM Eli Zaretskii wrote: > > From: João Távora > > Cc: dgutov@yandex.ru, 54488@debbugs.gnu.org > > Date: Tue, 22 Mar 2022 14:54:13 +0000 > > > > In Emacs 29, before the fix, that (point) seems to -- very surprisingly > > -- return something beyond the narrowed region and so > > encode-coding-string will complain with args out of range. > > I don't understand how (point) can return a value outside of the > narrowed region, unless it runs with the narrowing temporarily > disabled. Can you show me the code with that call to 'point' again? > I don't think I see it in your OP. > It's the snippet below. but the indentation probably botched it. I inlined a function in that snippet so you can see the move-to-column and the (point) in the same function (normally they live in different functions). > (defun eglot-move-to-lsp-abiding-column (column) > > "Move to COLUMN abiding by the LSP spec." > > (save-restriction > > (cl-loop > > with lbp = (line-beginning-position) > > initially > > (narrow-to-region lbp (line-end-position)) > > (move-to-column column) > > for diff = (- column > > (/ (- (length (encode-coding-region (or lbp > (line-beginning-position)) > > (point) 'utf-16 t)) ;; <===== > THAT (point) > > 2) > > 2)) > > until (zerop diff) > > do (condition-case eob-err > > (forward-char (/ (if (> diff 0) (1+ diff) (1- diff)) 2)) > > (end-of-buffer (cl-return eob-err)))))) > > Why do you have to use move-to-column instead of forward-char? > I don't remember! Is it exactly equivalent if you're standing in the beginning of the line? João -- João Távora