;; 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"
- :tag "Coding"
- :prefix "riece-"
- :group 'riece)
-
-(defcustom riece-default-coding-system
- (if (featurep 'mule)
- (cons 'ctext 'iso-2022-jp-2))
- "Coding system for process I/O.
-The value is a coding system, or a cons cell (DECODING . ENCODING)
-specifying the coding systems for decoding and encoding respectively."
- :type '(choice (symbol :tag "Coding system")
- (cons (symbol :tag "Input coding system")
- (symbol :tag "Output coding system"))
- (const nil :tag "No conversion"))
- :group 'riece-coding)
+(require 'riece-options)
(defun riece-encode-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)
- (encode-coding-string string (cdr riece-coding-system))
- (encode-coding-string string riece-coding-system))
+ (encode-coding-string string (if (consp riece-coding-system)
+ (cdr riece-coding-system)
+ riece-coding-system))
string))
(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