]> git.eshelyaron.com Git - emacs.git/commitdiff
Document 'bufferpos-to-filepos' and 'filepos-to-bufferpos'
authorEli Zaretskii <eliz@gnu.org>
Wed, 13 Jan 2016 18:11:52 +0000 (20:11 +0200)
committerEli Zaretskii <eliz@gnu.org>
Wed, 13 Jan 2016 18:11:52 +0000 (20:11 +0200)
* doc/lispref/nonascii.texi (Text Representations): Document
'bufferpos-to-filepos' and 'filepos-to-bufferpos'.

doc/lispref/nonascii.texi
etc/NEWS

index 744351e384e9906d3e14a6229b71be1ee0e9c7b3..fca40238805826430773d2f5e77bba15bb4d155b 100644 (file)
@@ -123,6 +123,45 @@ In other words, the value does not change for all byte positions that
 belong to the same character.
 @end defun
 
+@cindex convert file byte to buffer position
+@cindex convert buffer position to file byte
+  The following two functions are useful when a Lisp program needs to
+map buffer positions to byte offsets in a file visited by the buffer.
+
+@defun bufferpos-to-filepos position &optional quality coding-system
+This function is similar to @code{position-bytes}, but instead of byte
+position in the current buffer it returns the offset from the
+beginning of the current buffer's file of the byte that corresponds to
+the given character @var{position} in the buffer.  The conversion
+requires to know how the text is encoded in the buffer's file; this is
+what the @var{coding-system} argument is for, defaulting to the value
+of @code{buffer-file-coding-system}.  The optional argument
+@var{quality} specifies how accurate the result should be; it should
+be one of the following:
+
+@table @code
+@item exact
+The result must be accurate.  The function may need to encode and
+decode a large part of the buffer.
+@item approximate
+The value can be an approximation.  The function may avoid expensive
+processing and return an inexact result.
+@item nil
+If the exact result needs expensive processing, the function will
+return @code{nil} rather than an approximation.  This is the default
+if the argument is omitted.
+@end table
+@end defun
+
+@defun filepos-to-bufferpos byte &optional quality coding-system
+This function returns the buffer position corresponding to a file
+position specified by @var{byte}, a zero-base byte offset from the
+file's beginning.  The function performs the conversion opposite to
+what @code{bufferpos-to-filepos} does.  Optional arguments
+@var{quality} and @var{coding-system} have the same meaning and values
+as for @code{bufferpos-to-filepos}.
+@end defun
+
 @defun multibyte-string-p string
 Return @code{t} if @var{string} is a multibyte string, @code{nil}
 otherwise.  This function also returns @code{nil} if @var{string} is
index 5a1adff0920258849a0bb40fb7833c377fbc58a9..88d0604cedfc69bf111b0f69ed84f333a8ce2519 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1340,7 +1340,10 @@ parsing functions like `forward-sexp'.
 `prefix-command-preserve-state-hook' allow the definition of prefix
 commands other than the predefined `C-u'.
 
++++
 ** New functions `filepos-to-bufferpos' and `bufferpos-to-filepos'.
+These allow to convert between buffer positions and the corresponding
+file byte offsets, given the file's encoding.
 
 ** The default value of `load-read-function' is now `read'.