Mercurial > emacs
view lisp/net/tramp-uu.el @ 103344:d04aeff22966
2009-06-08 Adrian Robert <Adrian.B.Robert@gmail.com>
* nsterm.m (ns_use_system_highlight_color): Drop, unused.
2009-06-08 Adrian Robert <Adrian.B.Robert@gmail.com>
Changes to support :script/:lang/:otf in NS font driver.
* nsfont.m (nsfont_escape_name, nsfont_unescape_name)
(nsfont_get_family, nsfont_char_width): Rename to ns_ prefix to
indicate not part of font driver interface, and change callers.
(ns_get_family): Remove pointless null check.
(nsfont_spec_to_traits, nsfont_fmember_to_entity): Replace with
ns_spec_to_descriptor, ns_descriptor_to_entity.
(nsfont_trait_distance, nsfont_make_fontset_for_font): Remove.
(ns_attribute_value, ns_attribute_fvalue, ns_has_attribute)
(ns_spec_to_descriptor, ns_descriptor_to_entity)
(ns_charset_covers, ns_lang_to_script, ns_otf_to_script)
(ns_get_req_script, ns_accumulate_script_ranges)
(ns_script_to_charset, ns_get_covering_families, ns_findfonts):
New functions.
(nsfont_list, nsfont_match): Use ns_findfonts.
(nsfont_open): Use font descriptor instead of traits.
(nsfont_draw): Handle "automatic" (lookup-table) compositions.
(dump_glyphstring): Rename to ns_dump_glyphstring.
* nsfns.m (Fns_popup_font_panel): Use shared font manager.
* fontset.c (fontset_from_font): Remove NS-specific code.
2009-06-08 Peter Jones <pjones@pmade.com> (tiny change)
* nsterm.m (ns_draw_window_cursor): Respect cursor_type for
nonactive windows.
2009-06-08 Felix Mueller <felix@enqueue.eu> (tiny change)
* nsterm.m (ns_init_paths): Append path separator to INFOPATH
variable.
author | Adrian Robert <Adrian.B.Robert@gmail.com> |
---|---|
date | Mon, 08 Jun 2009 04:34:54 +0000 |
parents | a9dc0e7c3f2b |
children | 1d1d5d9bd884 |
line wrap: on
line source
;;; tramp-uu.el --- uuencode in Lisp ;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, ;; 2008, 2009 Free Software Foundation, Inc. ;; Author: Kai Großjohann <kai.grossjohann@gmx.net> ;; Keywords: comm, terminals ;; This file is part of GNU Emacs. ;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. ;;; Commentary: ;; An implementation of "uuencode" in Lisp. Uses the function ;; base64-encode-region which is built-in to modern Emacsen. ;;; Code: (defvar tramp-uu-b64-alphabet "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" "Mapping from base64-encoded character to the byte it represents.") (defvar tramp-uu-b64-char-to-byte (let ((i 0)) (mapcar (lambda (c) (prog1 (cons c i) (setq i (1+ i)))) tramp-uu-b64-alphabet)) "Alist of mapping from base64 character to its byte.") (defun tramp-uu-byte-to-uu-char (byte) "Return the character encoding BYTE." (if (zerop byte) ?` (+ byte 32))) (defun tramp-uu-b64-char-to-byte (char) "Return the byte that is encoded as CHAR." (cdr (assq char tramp-uu-b64-char-to-byte))) (defun tramp-uuencode-region (beg end) "UU-encode the region between BEG and END." ;; First we base64 encode the region, then we transmogrify that into ;; uu encoding. (let ((len (base64-encode-region beg end t)) (padding 0) i c) (save-excursion (goto-char beg) (setq i 0) (while (< i len) (setq c (char-after (point))) (delete-char 1) (if (equal c ?=) ;; "=" means padding. Insert "`" instead. Not counted for length. (progn (insert "`") (setq len (1- len))) (insert (tramp-uu-byte-to-uu-char (tramp-uu-b64-char-to-byte c))) (setq i (1+ i))) ;; Every 60 characters, add "M" at beginning of line (as ;; length byte) and insert a newline. (when (zerop (% i 60)) (save-excursion (beginning-of-line) (insert (char-to-string (+ 32 (/ (* 3 60) 4))))) (insert "\n"))) ;; If there is something leftover, we compute the length byte ;; for that stuff and insert it and a trailing newline. (unless (zerop (% i 60)) (save-excursion (beginning-of-line) (insert (char-to-string (+ 32 (% (- end beg) 45))))) (insert "\n")) ;; Why is there always a "`" line at the end? (insert "`\nend\n") (goto-char beg) (insert "begin 600 xxx\n")))) (provide 'tramp-uu) ;; arch-tag: 7153f2c6-8be5-4cd2-8c06-0fbcf5190ef6 ;;; tramp-uu.el ends here ;; Local Variables: ;; mode: Emacs-Lisp ;; coding: utf-8 ;; End: