X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Friece-coding.el;h=ac58fd588eff88b048560c8a7cfa8f17d93af56c;hb=1db0d620fd66e1d18a989fcb17e7c69e9aef9cf7;hp=6b0fa35c020dc2ea4db00f5474d0d0d52f262b03;hpb=783feb5d9fa87ed89021d8bd857fa3bb397ecd3f;p=elisp%2Friece.git diff --git a/lisp/riece-coding.el b/lisp/riece-coding.el index 6b0fa35..ac58fd5 100644 --- a/lisp/riece-coding.el +++ b/lisp/riece-coding.el @@ -19,19 +19,19 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Code: (require 'riece-globals) (defgroup riece-coding nil - "Coding system" + "Coding system." :tag "Coding" :prefix "riece-" :group 'riece) - + (defcustom riece-default-coding-system (if (featurep 'mule) (cons 'ctext 'iso-2022-jp-2)) @@ -55,11 +55,35 @@ specifying the coding systems for decoding and encoding respectively." (defun riece-decode-coding-string (string) (if (and (local-variable-p 'riece-coding-system (current-buffer)) riece-coding-system) ;should be nil on non-Mule environment - (if (consp riece-coding-system) - (decode-coding-string string (car riece-coding-system)) - (decode-coding-string string riece-coding-system)) + (riece-decode-coding-string-1 string + (if (consp riece-coding-system) + (car riece-coding-system) + riece-coding-system)) string)) +(defun riece-decode-coding-string-1 (string coding-system) + (let* ((decoded (decode-coding-string string coding-system)) + (length (length decoded))) + (put-text-property 0 length 'riece-decoded-encoded-string + string decoded) + (put-text-property 0 length 'riece-decoded-coding-system + coding-system decoded) + decoded)) + +;; The following functions are API used by handler functions. For the +;; meantime DECODED is actually a string (with some text properties). +;; In the future, however, the implementation _should_ be changed so +;; that decoding phase is delayed until the body of handler functions. +(defun riece-decoded-coding-system (decoded) + "Return the coding-system used for decoding DECODED." + (get-text-property 0 'riece-decoded-coding-system decoded)) + +(defun riece-decoded-encoded-string (decoded) + "Return the string before decoding." + (get-text-property 0 'riece-decoded-encoded-string decoded)) + +(defalias 'riece-decoded-string 'identity) + (provide 'riece-coding) ;;; riece-coding.el ends here