bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#2375: 23.0.90; ^ in gnus summary buffer does not work in the nextste


From: YAMAMOTO Mitsuharu
Subject: bug#2375: 23.0.90; ^ in gnus summary buffer does not work in the nextstep build
Date: Sat, 21 Feb 2009 15:38:07 +0900
User-agent: Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.8 (Shij┼Ź) APEL/10.6 Emacs/22.3 (sparc-sun-solaris2.8) MULE/5.0 (SAKAKI)

>>>>> On Sat, 21 Feb 2009 05:56:18 +0100, Harald Maier <address@hidden> said:

>> Oh, I get it: so hitting ^ doesn't do anything, but hitting ^ SPC
>> does trigger the Gnus command bount to ^.  Yes, that makes sense.
>> We could supposedly improve this to actually make ^ call the proper
>> Gnus command directly, but the patch doesn't try to do that.

> On a German keyboard this behaviour would be confusing. ^ is a dead
> key so we always use the SPACE key to force it. It should be similar
> to the X11 build and there I have too to press the SPACE character
> to force the dead key. As David mentioned the only small problem is
> the "buffer read only" warning.

What do you think about the dead-key behavior in the Carbon port
(Emacs 22)?  If it is reasonable enough, maybe the Cocoa/GNUstep port
can adopt its strategy.

Below is the code from the Carbon+AppKit port(*), which also uses the
NSTextInput protocol.

(*) ftp://ftp.math.s.chiba-u.ac.jp/emacs/emacs-22.3-appkit-1.2.tar.gz

                                     YAMAMOTO Mitsuharu
                                address@hidden

(defconst mac-marked-text-underline-style-faces
  '((0 . mac-ts-raw-text)                 ; NSUnderlineStyleNone
    (1 . mac-ts-converted-text)           ; NSUnderlineStyleSingle
    (2 . mac-ts-selected-converted-text)) ; NSUnderlineStyleThick
  "Alist of NSUnderlineStyle vs Emacs face in marked text.")

(defun mac-text-input-set-marked-text (event)
  (interactive "e")
  (let* ((ae (mac-event-ae event))
         (text (cdr (mac-ae-parameter ae)))
         (selected-range (cdr (mac-ae-parameter ae "selectedRange")))
         (script-language (mac-ae-script-language ae "tssl"))
         (coding (or (cdr (assq (car script-language)
                                mac-script-code-coding-systems))
                     'mac-roman)))
    (let ((use-echo-area
           (or isearch-mode
               (and cursor-in-echo-area (current-message))
               ;; Overlay strings are not shown in some cases.
               (get-char-property (point) 'invisible)
               (and (not (bobp))
                    (or (and (get-char-property (point) 'display)
                             (eq (get-char-property (1- (point)) 'display)
                                 (get-char-property (point) 'display)))
                        (and (get-char-property (point) 'composition)
                             (eq (get-char-property (1- (point)) 'composition)
                                 (get-char-property (point) 'composition)))))))
          active-input-string caret-seen)
      ;; Decode the active input area text with inheriting faces and
      ;; the caret position.
      (put-text-property (* (car selected-range) 2) (length text)
                         'cursor t text)
      (setq active-input-string
            (mapconcat
             (lambda (str)
               (let* ((decoded (mac-utxt-to-string str coding))
                      (underline-style
                       (or (cdr (get-text-property 0 'NSUnderline str)) 0))
                      (face
                       (cdr (assq underline-style
                                  mac-marked-text-underline-style-faces))))
                 (put-text-property 0 (length decoded) 'face face decoded)
                 (when (and (not caret-seen)
                            (get-text-property 0 'cursor str))
                   (setq caret-seen t)
                   (if (or use-echo-area (null cursor-type))
                       (put-text-property 0 1 'face 'mac-ts-caret-position
                                          decoded)
                     (put-text-property 0 1 'cursor t decoded)))
                 decoded))
             (mac-split-string-by-property-change text)
             ""))
      (put-text-property 0 (length active-input-string)
                         'mac-ts-active-input-string t active-input-string)
      (if use-echo-area
          (let ((msg (current-message))
                message-log-max)
            (if (and msg
                     ;; Don't get confused by previously displayed
                     ;; `active-input-string'.
                     (null (get-text-property 0 'mac-ts-active-input-string
                                              msg)))
                (setq msg (propertize msg 'display
                                      (concat msg active-input-string)))
              (setq msg active-input-string))
            (message "%s" msg)
            (overlay-put mac-ts-active-input-overlay 'before-string nil))
        (move-overlay mac-ts-active-input-overlay
                      (point) (point) (current-buffer))
        (overlay-put mac-ts-active-input-overlay 'before-string
                     active-input-string)))))

(defun mac-text-input-insert-text (event)
  (interactive "e")
  (let* ((ae (mac-event-ae event))
         (text (cdr (mac-ae-parameter ae)))
         (script-language (mac-ae-script-language ae "tssl"))
         (coding (or (cdr (assq (car script-language)
                                mac-script-code-coding-systems))
                     'mac-roman)))
    (overlay-put mac-ts-active-input-overlay 'before-string nil)
    (let ((msg (current-message))
          message-log-max)
      (when msg
        (if (get-text-property 0 'mac-ts-active-input-string msg)
            (message nil)
          (let ((disp-prop (get-text-property 0 'display msg)))
            (when (and (stringp disp-prop)
                       (> (length disp-prop) 1)
                       (get-text-property (1- (length disp-prop))
                                          'mac-ts-active-input-string))
              (remove-text-properties 0 (length disp-prop)
                                      '(mac-ts-active-input-string nil)
                                      msg)
              (message "%s" msg))))))
    (mac-unread-string (mac-utxt-to-string text coding))))

(define-key mac-apple-event-map [text-input set-marked-text]
  'mac-text-input-set-marked-text)
(define-key mac-apple-event-map [text-input insert-text]
  'mac-text-input-insert-text)






reply via email to

[Prev in Thread] Current Thread [Next in Thread]