all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Lennart Borgman <lennart.borgman@gmail.com>
To: Scot Becker <scot.becker@gmail.com>
Cc: handa@m17n.org, emacs-devel@gnu.org,
	bastienguerry@googlemail.com,
	"Stephen J. Turnbull" <stephen@xemacs.org>,
	jem@iki.fi, Eli Zaretskii <eliz@gnu.org>,
	miles@gnu.org
Subject: Re: line-move-visual
Date: Fri, 10 Jul 2009 22:29:58 +0200	[thread overview]
Message-ID: <e01d8a50907101329l6f77062cma960c6abc98b8b3c@mail.gmail.com> (raw)
In-Reply-To: <e0e1fe620907100807i77bdcc77u8b5eb945df7de8c4@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 1625 bytes --]

On Fri, Jul 10, 2009 at 5:07 PM, Scot Becker<scot.becker@gmail.com> wrote:
> Lennart,
>
> That was quick!   I think a library like that would do a lot, since
> you could create custom customization buffers for all the purposes we
> have discussed.  I like it.  Of course for a new user, the
> customization buffer itself is quite 'busy', but that's not a problem
> we can do anything about at the moment.  And the sooner they warm up
> to it, probably the better for them, since it's one of the better
> forms we have of interface discoverability at the moment.
>
> I tried adding new variables to customize, which seems to work. I
> assume it's possible to add documentation by adding  it between the
> commands.  And typical lisp logic to only present some options if
> we're on a certain OS, or have a certain package loaded.
>
> This is really nice, Lennart.   I assume it's far too late to include
> something like this in v. 23.1, but I could imagine various
> 'customization groups' making it into a future version.  If I manage
> to produce an Emacs 'customization package for writers.'  I will most
> certainly use this (especially if line-move-visual gets set to nil!)
> .
> So aside from the ongoing need to pick good defaults, how well does
> something like this address the discoverability issue?  What do the
> rest of you think?


Pointing out some important options is perhaps good. Also exporting
"my important options/my skin options" is probably good. See the new
version below (a working version).

I guess it is not ready, but maybe a discussion point at least.

[-- Attachment #2: cus-new-user.el --]
[-- Type: text/plain, Size: 23181 bytes --]

;;; cus-new-user.el --- Customize some important options
;;
;; Author: Lennart Borgman (lennart O borgman A gmail O com)
;; Created: 2009-07-10 Fri
;; Version: 0.2
;; Last-Updated: 2009-07-10 Fri
;; URL:
;; Keywords:
;; Compatibility:
;;
;; Features that might be required by this library:
;;
;;   None
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;; Commentary:
;;
;;    Customize significant options for which different user
;;    environment expectations might dictate different defaults.
;;
;;    After an idea of Scot Becker on Emacs Devel.
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;; Change log:
;;
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; This program 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, or
;; (at your option) any later version.
;;
;; This program 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 this program; see the file COPYING.  If not, write to
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
;; Floor, Boston, MA 02110-1301, USA.
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;; Code:

;;(customize-for-new-user)
;;;###autoload
(defun customize-for-new-user (&optional name)
  "Show special customization page for new user.
"
  (interactive)
  ;;(setq debug-on-error t)
  ;;(setq buffer-read-only t)
  (require 'cus-edit)
  (let ((inhibit-read-only t)
        fill-pos)
    (pop-to-buffer (custom-get-fresh-buffer (or name "*Customizations for New Users*")))
    (buffer-disable-undo)
    (Custom-mode)
    (erase-buffer)
    (setq fill-pos (point))
    (widget-insert
     "Below are some custom options that new users often may want to
tweak since they may make Emacs a bit more like what they expect from using other software in their environment.

Since Emacs runs in many environment and an Emacs user may use
several of them it is hard to decide by default what a user
wants/expects.  Therefor you are given the possibility to easily
do those changes here.

Note that this is just a collection of normal custom options.
There are no new options here.

")
    (fill-region fill-pos (point))

    ;; Normal custom buffer header
    (let ((init-file (or custom-file user-init-file)))
      ;; Insert verbose help at the top of the custom buffer.
      (when custom-buffer-verbose-help
        (widget-insert "Editing a setting changes only the text in this buffer."
                       (if init-file
                           "
To apply your changes, use the Save or Set buttons.
Saving a change normally works by editing your init file."
                         "
Currently, these settings cannot be saved for future Emacs sessions,
possibly because you started Emacs with `-q'.")
                       "\nFor details, see ")
        (widget-create 'custom-manual
                       :tag "Saving Customizations"
                       "(emacs)Saving Customizations")
        (widget-insert " in the ")
        (widget-create 'custom-manual
                       :tag "Emacs manual"
                       :help-echo "Read the Emacs manual."
                       "(emacs)Top")
        (widget-insert "."))
      (widget-insert "\n")
      ;; The custom command buttons are also in the toolbar, so for a
      ;; time they were not inserted in the buffer if the toolbar was in use.
      ;; But it can be a little confusing for the buffer layout to
      ;; change according to whether or nor the toolbar is on, not to
      ;; mention that a custom buffer can in theory be created in a
      ;; frame with a toolbar, then later viewed in one without.
      ;; So now the buttons are always inserted in the buffer.  (Bug#1326)
;;;    (when (not (and (bound-and-true-p tool-bar-mode) (display-graphic-p)))
      (if custom-buffer-verbose-help
          (widget-insert "\n
 Operate on all settings in this buffer that are not marked HIDDEN:\n"))
      (let ((button (lambda (tag action active help icon)
                      (widget-insert " ")
                      (if (eval active)
                          (widget-create 'push-button :tag tag
                                         :help-echo help :action action))))
            (commands custom-commands))
        (apply button (pop commands)) ; Set for current session
        (apply button (pop commands)) ; Save for future sessions
        (if custom-reset-button-menu
            (progn
              (widget-insert " ")
              (widget-create 'push-button
                             :tag "Reset buffer"
                             :help-echo "Show a menu with reset operations."
                             :mouse-down-action 'ignore
                             :action 'custom-reset))
          (widget-insert "\n")
          (apply button (pop commands)) ; Undo edits
          (apply button (pop commands)) ; Reset to saved
          (apply button (pop commands)) ; Erase customization
          (widget-insert "  ")
          (pop commands) ; Help (omitted)
          (apply button (pop commands)))) ; Exit
      (widget-insert "\n\n")

      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
      ;; Editor emulator level

      (widget-insert "\n")
      (setq fill-pos (point))
      (widget-insert
"Emacs can emulate some common editing behaviours (and some uncommon too).
For the most common ones you can decide if you want to use them here:
")
      (fill-region fill-pos (point))
      (cusnu-mark-part-desc fill-pos (point))

      ;; CUA Mode
      (cusnu-insert-options '((cua-mode custom-variable)))

      ;; Viper Mode
      (widget-insert "\n")
      (widget-insert (propertize "Viper" 'face 'custom-variable-tag))
      (widget-insert ":")
      (setq fill-pos (point))
      (widget-insert "
   Viper is currently set up in a special way, please see the
   command `viper-mode'.  You can use custom to set up most of
   it.  However if you want to load Viper at startup you must
   explicitly include \(require 'viper) in your .emacs.
")
      (fill-region fill-pos (point))

      ;; Viper Mode
      (backward-delete-char 1)
      (cusnu-insert-options '((viper-mode custom-variable)))

      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
      ;; OS specific

      (widget-insert "\n")
      (setq fill-pos (point))
      (widget-insert (format "OS specific options (%s): \n" system-type))
      (fill-region fill-pos (point))
      (cusnu-mark-part-desc fill-pos (point))

      (if cusno-insert-os-spec-fun
          (funcall cusno-insert-os-spec-fun)
       (widget-insert "No OS specific customizations.\n"))

      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
      ;; Disputed settings

      (widget-insert "\n")
      (setq fill-pos (point))
      (widget-insert
"Some old time Emacs users want to change the options below:
")
      (fill-region fill-pos (point))
      (cusnu-mark-part-desc fill-pos (point))

      (cusnu-insert-options '((global-visual-line-mode custom-variable)))
      (cusnu-insert-options '((word-wrap custom-variable)))
      (cusnu-insert-options '((blink-cursor-mode custom-variable)))
      (cusnu-insert-options '((tool-bar-mode custom-variable)))
      (cusnu-insert-options '((tooltip-mode custom-variable)))
      ;;(cusnu-insert-options '((initial-scratch-message custom-variable)))

      (widget-insert "\n")
      (setq fill-pos (point))
      (widget-insert
"My skin options - for exporting custom options to other users (or yourself on another computer)")
      (fill-region fill-pos (point))
      (cusnu-mark-part-desc fill-pos (point))

      (widget-insert "\n")
      (cusnu-insert-options '((cusnu-my-skin-options custom-variable)))
      (widget-insert "\n")
      (widget-create 'push-button
                     :tag "Export my skin options"
                     :action (lambda (&rest ignore)
                               (let ((use-dialog-box nil))
                                 (call-interactively 'cusnu-export-my-skin-options))))

      ;; Finish setup buffer
      (mapc 'custom-magic-reset custom-options)
      (cusnu-make-xrefs)
      (widget-setup)
      (buffer-enable-undo)
      (goto-char (point-min)))))

(defvar cusno-insert-os-spec-fun nil)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Example on Emacs+Emacw32
(when (boundp 'emacsw32-version)
  (defun cusnu-emacsw32-show-custstart (&rest args)
    (emacsw32-show-custstart))
  (setq cusno-insert-os-spec-fun 'cusnu-insert-emacsw32-specific-part)
  (defun cusnu-insert-emacsw32-specific-part ()
    (cusnu-insert-options '((w32-meta-style custom-variable)))
    (widget-insert "\n")
    (widget-insert (propertize "EmacsW32" 'face 'custom-variable-tag))
    (widget-insert "
   Easy setup for Emacs+EmacsW32.")
    (widget-insert "\n   ")
    (widget-create 'push-button :tag "Customize EmacsW32"
                   ;;:help-echo help
                   :action 'cusnu-emacsw32-show-custstart)
    (widget-insert "\n")))
;; End example
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun cusnu-mark-part-desc (beg end)
  (let ((ovl (make-overlay beg end)))
    (overlay-put ovl 'face 'highlight)))

(defun cusnu-make-xrefs (&optional beg end)
  (save-restriction
    (when (or beg end)
      (unless beg (setq beg (point-min)))
      (unless end (setq end (point-max)))
      (narrow-to-region beg end))
    (let ((here (point)))
      (goto-char (point-min))
      (cusnu-help-insert-xrefs 'cusnu-help-xref-button)
      (goto-char here))))

(defun widget-info-link-action (widget &optional event)
  "Open the info node specified by WIDGET."
  (info-other-window (widget-value widget)))

(defun widget-documentation-string-value-create (widget)
  ;; Insert documentation string.
  (let ((doc (widget-value widget))
	(indent (widget-get widget :indent))
	(shown (widget-get (widget-get widget :parent) :documentation-shown))
	(start (point)))
    (if (string-match "\n" doc)
	(let ((before (substring doc 0 (match-beginning 0)))
	      (after (substring doc (match-beginning 0)))
	      button)
	  (when (and indent (not (zerop indent)))
	    (insert-char ?\s indent))
	  (insert before ?\s)
	  (widget-documentation-link-add widget start (point))
	  (setq button
		(widget-create-child-and-convert
		 widget (widget-get widget :visibility-widget)
		 :help-echo "Show or hide rest of the documentation."
		 :on "Hide Rest"
		 :off "More"
		 :always-active t
		 :action 'widget-parent-action
		 shown))
	  (when shown
	    (setq start (point))
	    (when (and indent (not (zerop indent)))
	      (insert-char ?\s indent))
	    (insert after)
	    (widget-documentation-link-add widget start (point))
            (cusnu-make-xrefs start (point))
            )
	  (widget-put widget :buttons (list button)))
      (when (and indent (not (zerop indent)))
	(insert-char ?\s indent))
      (insert doc)
      (widget-documentation-link-add widget start (point))))
  (insert ?\n))
(defun cusnu-help-xref-button (match-number type what &rest args)
  (let ((beg (match-beginning match-number))
        (end (match-end match-number)))
  (if nil
      (let ((ovl (make-overlay beg end)))
        (overlay-put ovl 'face 'highlight))
    (let* ((tag (match-string match-number))
           (value what)
            (wid-type (cond
                       ((eq type 'help-variable)
                        'variable-link)
                       ((eq type 'help-function)
                        'function-link)
                       ((eq type 'help-info)
                        'custom-manual)
                       (t nil)))
          )
      (when wid-type
        (delete-region beg end)
        (backward-char)
        ;;(tag action active help icon)
        (widget-create wid-type
                       ;;tag
                       :value value
                       :tag tag
                       :keymap custom-mode-link-map
                       :follow-link 'mouse-face
                       :button-face 'custom-link
                       :mouse-face 'highlight
                       :pressed-face 'highlight
                       ;;:help-echo help
                       )))))
    )

;; Override default ... ;-)
(define-widget 'documentation-link 'link
  "Link type used in documentation strings."
  ;;:tab-order -1
  :help-echo "Describe this symbol"
  :button-face 'custom-link
  :action 'widget-documentation-link-action)

(defun cusnu-xref-niy (&rest ignore)
  (message "Not implemented yet"))

(defun cusnu-describe-function (wid &rest ignore)
  (let ((fun (widget-get wid :what))
        )
    (describe-function fun)))

(defun cusnu-help-insert-xrefs (help-xref-button)
  ;; The following should probably be abstracted out.
  (unwind-protect
      (progn
        ;; Info references
        (save-excursion
          (while (re-search-forward help-xref-info-regexp nil t)
            (let ((data (match-string 2)))
              (save-match-data
                (unless (string-match "^([^)]+)" data)
                  (setq data (concat "(emacs)" data))))
              (funcall help-xref-button 2 'help-info data))))
        ;; URLs
        (save-excursion
          (while (re-search-forward help-xref-url-regexp nil t)
            (let ((data (match-string 1)))
              (funcall help-xref-button 1 'help-url data))))
        ;; Mule related keywords.  Do this before trying
        ;; `help-xref-symbol-regexp' because some of Mule
        ;; keywords have variable or function definitions.
        (if help-xref-mule-regexp
            (save-excursion
              (while (re-search-forward help-xref-mule-regexp nil t)
                (let* ((data (match-string 7))
                       (sym (intern-soft data)))
                  (cond
                   ((match-string 3) ; coding system
                    (and sym (coding-system-p sym)
                         (funcall help-xref-button 6 'help-coding-system sym)))
                   ((match-string 4) ; input method
                    (and (assoc data input-method-alist)
                         (funcall help-xref-button 7 'help-input-method data)))
                   ((or (match-string 5) (match-string 6)) ; charset
                    (and sym (charsetp sym)
                         (funcall help-xref-button 7 'help-character-set sym)))
                   ((assoc data input-method-alist)
                    (funcall help-xref-button 7 'help-character-set data))
                   ((and sym (coding-system-p sym))
                    (funcall help-xref-button 7 'help-coding-system sym))
                   ((and sym (charsetp sym))
                    (funcall help-xref-button 7 'help-character-set sym)))))))
        ;; Quoted symbols
        (save-excursion
          (while (re-search-forward help-xref-symbol-regexp nil t)
            (let* ((data (match-string 8))
                   (sym (intern-soft data)))
              (if sym
                  (cond
                   ((match-string 3)  ; `variable' &c
                    (and (or (boundp sym) ; `variable' doesn't ensure
                                        ; it's actually bound
                             (get sym 'variable-documentation))
                         (funcall help-xref-button 8 'help-variable sym)))
                   ((match-string 4)   ; `function' &c
                    (and (fboundp sym) ; similarly
                         (funcall help-xref-button 8 'help-function sym)))
                   ((match-string 5) ; `face'
                    (and (facep sym)
                         (funcall help-xref-button 8 'help-face sym)))
                   ((match-string 6)) ; nothing for `symbol'
                   ((match-string 7)
;;;  this used:
;;; 			  #'(lambda (arg)
;;; 			      (let ((location
;;; 				     (find-function-noselect arg)))
;;; 				(pop-to-buffer (car location))
;;; 				(goto-char (cdr location))))
                    (funcall help-xref-button 8 'help-function-def sym))
                   ((and
                     (facep sym)
                     (save-match-data (looking-at "[ \t\n]+face\\W")))
                    (funcall help-xref-button 8 'help-face sym))
                   ((and (or (boundp sym)
                             (get sym 'variable-documentation))
                         (fboundp sym))
                    ;; We can't intuit whether to use the
                    ;; variable or function doc -- supply both.
                    (funcall help-xref-button 8 'help-symbol sym))
                   ((and
                     (or (boundp sym)
                         (get sym 'variable-documentation))
                     (or
                      (documentation-property
                       sym 'variable-documentation)
                      (condition-case nil
                          (documentation-property
                           (indirect-variable sym)
                           'variable-documentation)
                        (cyclic-variable-indirection nil))))
                    (funcall help-xref-button 8 'help-variable sym))
                   ((fboundp sym)
                    (funcall help-xref-button 8 'help-function sym)))))))
        ;; An obvious case of a key substitution:
        (save-excursion
          (while (re-search-forward
                  ;; Assume command name is only word and symbol
                  ;; characters to get things like `use M-x foo->bar'.
                  ;; Command required to end with word constituent
                  ;; to avoid `.' at end of a sentence.
                  "\\<M-x\\s-+\\(\\sw\\(\\sw\\|\\s_\\)*\\sw\\)" nil t)
            (let ((sym (intern-soft (match-string 1))))
              (if (fboundp sym)
                  (funcall help-xref-button 1 'help-function sym)))))
        ;; Look for commands in whole keymap substitutions:
        (save-excursion
          ;; Make sure to find the first keymap.
          (goto-char (point-min))
          ;; Find a header and the column at which the command
          ;; name will be found.

          ;; If the keymap substitution isn't the last thing in
          ;; the doc string, and if there is anything on the
          ;; same line after it, this code won't recognize the end of it.
          (while (re-search-forward "^key +binding\n\\(-+ +\\)-+\n\n"
                                    nil t)
            (let ((col (- (match-end 1) (match-beginning 1))))
              (while
                  (and (not (eobp))
                       ;; Stop at a pair of blank lines.
                       (not (looking-at "\n\\s-*\n")))
                ;; Skip a single blank line.
                (and (eolp) (forward-line))
                (end-of-line)
                (skip-chars-backward "^ \t\n")
                (if (and (>= (current-column) col)
                         (looking-at "\\(\\sw\\|\\s_\\)+$"))
                    (let ((sym (intern-soft (match-string 0))))
                      (if (fboundp sym)
                          (funcall help-xref-button 0 'help-function sym))))
                (forward-line))))))
    ;;(set-syntax-table stab)
    ))

(defun cusnu-insert-options (options)
  (widget-insert "\n")
  (setq custom-options
        (append
         (if (= (length options) 1)
             (mapcar (lambda (entry)
                       (widget-create (nth 1 entry)
                                      ;;:documentation-shown t
                                      :custom-state 'unknown
                                      :tag (custom-unlispify-tag-name
                                            (nth 0 entry))
                                      :value (nth 0 entry)))
                     options)
           (let ((count 0)
                 (length (length options)))
             (mapcar (lambda (entry)
                       (prog2
                           (message "Creating customization items ...%2d%%"
                                    (/ (* 100.0 count) length))
                           (widget-create (nth 1 entry)
                                          :tag (custom-unlispify-tag-name
                                                (nth 0 entry))
                                          :value (nth 0 entry))
                         (setq count (1+ count))
                         (unless (eq (preceding-char) ?\n)
                           (widget-insert "\n"))
                         (widget-insert "\n")))
                     options)))
         custom-options))
  (unless (eq (preceding-char) ?\n)
    (widget-insert "\n"))
  )

(define-widget 'custom-symbol 'symbol
  "A Custom option."
  :prompt-match (lambda (sym) (get sym 'custom-type))
  :prompt-history 'widget-variable-prompt-value-history
  :complete-function (lambda ()
		       (interactive)
		       (lisp-complete-symbol (lambda (sym) (get sym 'custom-type))))
  :tag "Custom option")

(defcustom cusnu-my-skin-options nil
  "My custum options.
You can export these to a file with
`cusnu-export-my-skin-options' so that others can use them."
  :type '(repeat custom-symbol)
  )

(defun cusnu-export-my-skin-options (file)
  "Export to file FILE custom options in `cusnu-my-skin-options'."
  (interactive "FTo file: ")
  (when (file-exists-p file)
    (error "File %s already exists" file))
  (let ((buf (find-file file))
        start)
    (with-current-buffer buf
      (erase-buffer)
      (insert (format-time-string ";; Here are my default options values %Y-%m-%d.\n"))
      (insert
";; Eval this elisp file to test them and then do
;;
;;    M-x customize-save-customized
;;
;; if you want to keep them.
;;
;; Here are the options I have choosen to export:\n")
      (insert (format ";;(customize-set-variable 'cusnu-my-skin-options\n"))
      (setq start (point))
      (insert (format ";;        %S)\n\n" cusnu-my-skin-options))
      (emacs-lisp-mode)
      (fill-region start (point))
      (dolist (opt cusnu-my-skin-options)
        (let ((my-val (car-safe
                       (or (get opt 'saved-value)
                           (get opt 'customized-value)))))
          (when my-val
            (insert (format "(customize-set-variable '%s %S)\n" opt my-val)))))
      )))

(provide 'cus-new-user)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; cus-new-user.el ends here

  reply	other threads:[~2009-07-10 20:29 UTC|newest]

Thread overview: 165+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-09 18:12 line-move-visual Johan Myréen
2009-07-10  4:26 ` line-move-visual Bastien
2009-07-10  4:43   ` line-move-visual Miles Bader
2009-07-10  5:48     ` line-move-visual Bastien
2009-07-10  6:14       ` line-move-visual Kenichi Handa
2009-07-10  6:58         ` line-move-visual Bastien
2009-07-10  8:13           ` line-move-visual Alfred M. Szmidt
2009-07-10 10:10             ` line-move-visual Bastien
2009-07-10  8:43           ` line-move-visual Scot Becker
2009-07-10  8:57             ` line-move-visual Eli Zaretskii
2009-07-10  9:04               ` line-move-visual Lennart Borgman
2009-07-10 10:32                 ` line-move-visual Bastien
2009-07-10  9:08               ` line-move-visual Scot Becker
2009-07-10  9:13               ` line-move-visual joakim
2009-07-10  9:22                 ` line-move-visual Scot Becker
2009-07-10 16:11                   ` line-move-visual Drew Adams
2009-07-10 16:22                     ` line-move-visual Lennart Borgman
2009-07-10 17:20                       ` line-move-visual Drew Adams
2009-07-10 17:40                         ` line-move-visual Drew Adams
2009-07-10  9:52                 ` line-move-visual Miles Bader
2009-07-10 16:11                   ` line-move-visual Drew Adams
2009-07-10 11:35               ` line-move-visual Stephen J. Turnbull
2009-07-10 13:38                 ` line-move-visual Eli Zaretskii
2009-07-10 16:11                   ` line-move-visual Drew Adams
2009-07-10 18:01                     ` line-move-visual Eli Zaretskii
2009-07-10 18:16                       ` line-move-visual Drew Adams
2009-07-11 19:34                   ` line-move-visual Juri Linkov
2009-07-10 13:56                 ` line-move-visual Lennart Borgman
2009-07-10 15:07                   ` line-move-visual Scot Becker
2009-07-10 20:29                     ` Lennart Borgman [this message]
2009-07-10 15:43               ` line-move-visual Alfred M. Szmidt
2009-07-10 15:56             ` line-move-visual Sean O'Rourke
2009-07-10  9:14           ` line-move-visual Tassilo Horn
2009-07-10  9:56             ` line-move-visual Miles Bader
2009-07-10 10:22               ` line-move-visual Scot Becker
2009-07-10 16:11                 ` line-move-visual Drew Adams
2009-07-10 10:36               ` line-move-visual Ulrich Mueller
2009-07-10 10:56                 ` line-move-visual Eli Zaretskii
2009-07-10 11:07                   ` line-move-visual Christian Faulhammer
2009-07-10 11:29                   ` line-move-visual Ulrich Mueller
2009-07-10 18:15                     ` line-move-visual Bastien
2009-07-10 20:40     ` line-move-visual Richard Stallman
2009-07-11  1:58       ` line-move-visual Stephen J. Turnbull
2009-07-11  2:29         ` line-move-visual Miles Bader
2009-07-11  2:44           ` line-move-visual Bastien
2009-07-11 18:30             ` line-move-visual Richard Stallman
2009-07-10  6:12   ` line-move-visual Stephen J. Turnbull
2009-07-10 21:19     ` line-move-visual Johan Myréen
2009-07-10 22:14       ` line-move-visual Scot Becker
2009-07-11  1:34       ` line-move-visual Miles Bader
2009-07-11  2:46       ` line-move-visual Bastien
2009-07-11  5:25         ` line-move-visual Miles Bader
2009-07-11  5:49           ` line-move-visual Kenichi Handa
2009-07-11  6:13             ` line-move-visual Miles Bader
2009-07-11  9:22           ` line-move-visual Bastien
2009-07-10  4:35 ` line-move-visual Miles Bader
2009-07-10 13:31 ` line-move-visual Chong Yidong
2009-07-11  6:42 ` line-move-visual Andrey Paramonov
2009-07-11  7:21   ` line-move-visual Teemu Likonen
     [not found] <alpine.OSX.2.00.1006031053170.77397@hsinghsing.panda.com>
     [not found] ` <hu925r$1b$1@north.jnrs.ja.net>
     [not found]   ` <alpine.OSX.2.00.1006031431510.77397@hsinghsing.panda.com>
2010-06-04  7:59     ` line-move-visual Uday S Reddy
     [not found]       ` <87pr07qjio.fsf@thinkpad.tsdh.de>
2010-06-04 11:24         ` line-move-visual Uday S Reddy
2010-06-04 12:49           ` line-move-visual Tassilo Horn
2010-06-09 19:51             ` line-move-visual Joseph Brenner
2010-06-09 20:22               ` line-move-visual Brendan Halpin
2010-06-10  1:23               ` line-move-visual Stefan Monnier
     [not found]         ` <hualdf$eln$1@north.jnrs.ja.net>
2010-06-04 13:00           ` line-move-visual Tassilo Horn
2010-06-04 14:51             ` line-move-visual Stefan Monnier
2010-06-04 20:53               ` line-move-visual Tassilo Horn
     [not found]             ` <871vcmhq79.fsf@wivenhoe.ul.ie>
     [not found]               ` <hub2ss$is4$1@north.jnrs.ja.net>
2010-06-04 14:45                 ` line-move-visual Brendan Halpin
2010-06-04 17:49               ` line-move-visual Xah Lee
2010-06-04 18:18                 ` line-move-visual Mark Crispin
2010-06-04 19:19                   ` line-move-visual Xah Lee
     [not found]                     ` <alpine.OSX.2.00.1006041829210.77397@hsinghsing.panda.com>
     [not found]                       ` <089883ee-0a63-4cb4-a0ec-d2fe4e71cc03@y18g2000prn.googlegroups.com>
2010-06-06  9:53                         ` line-move-visual Uday S Reddy
2010-06-06  9:39                           ` line-move-visual David Kastrup
     [not found]                             ` <hug5rv$6d2$1@north.jnrs.ja.net>
2010-06-06 15:21                               ` line-move-visual Tassilo Horn
2010-06-07  8:19                                 ` line-move-visual Uday S Reddy
     [not found]                                   ` <m2fx0z46wj.fsf@gmail.com>
2010-06-07 16:20                                     ` line-move-visual Stefan Monnier
2010-06-06 15:43                               ` line-move-visual Alain Ketterlin
2010-06-07 21:30                                 ` line-move-visual Joost Kremers
2010-06-06 18:17                               ` line-move-visual Mark Crispin
     [not found]                                 ` <4C0C466E.3000803@thadlabs.com>
2010-06-07  2:53                                   ` line-move-visual Mark Crispin
2010-06-07  8:46                               ` line-move-visual Tim X
2010-06-07 16:23                                 ` line-move-visual Stefan Monnier
2010-06-09 20:23                                   ` line-move-visual Joseph Brenner
2010-06-07  8:39                             ` line-move-visual Tim X
2010-06-10 10:12                               ` line-move-visual Uday S Reddy
2010-06-10 13:43                                 ` line-move-visual Stefan Monnier
2010-06-10 15:17                                   ` line-move-visual Uday S Reddy
2010-06-10 19:53                                     ` line-move-visual Stefan Monnier
2010-06-10 15:44                                   ` line-move-visual despen
2010-06-10 22:02                                   ` line-move-visual Tassilo Horn
2010-06-10 23:56                                     ` line-move-visual Uday S Reddy
2010-06-10 22:48                                   ` line-move-visual Evans Winner
2010-06-10 16:57                                 ` line-move-visual Mark Crispin
2010-06-10 18:38                                   ` line-move-visual Uday S Reddy
2010-06-11 23:56                                     ` line-move-visual Mark Crispin
2010-06-12  0:17                                       ` line-move-visual Wojciech Meyer
2010-06-13 17:23                                         ` line-move-visual Mark Crispin
2010-06-13 20:56                                           ` line-move-visual Alan Mackenzie
2010-06-14  0:42                                             ` line-move-visual Jim Diamond
2010-06-14 10:49                                             ` line-move-visual Uday S Reddy
2010-06-14 17:16                                               ` line-move-visual Alan Mackenzie
2010-06-14 17:34                                                 ` line-move-visual Uday S Reddy
2010-06-15  9:26                                               ` line-move-visual Tim X
2010-06-15 13:49                                                 ` line-move-visual Stefan Monnier
     [not found]                                                   ` <87sk4n3ocs.fsf@rapttech.com.au>
2010-06-16 14:43                                                     ` line-move-visual Stefan Monnier
     [not found]                                             ` <m2k4q18od5.fsf@softwarematters.org>
     [not found]                                               ` <jwvaaqxbcca.fsf-monnier+gnu.emacs.help@gnu.org>
2010-06-15  6:54                                                 ` line-move-visual Pascal J. Bourguignon
2010-06-15  8:42                                                   ` line-move-visual Uday S Reddy
2010-06-15  9:30                                                     ` line-move-visual David Kastrup
2010-06-15  9:38                                                     ` line-move-visual Tim X
2010-06-15 13:45                                                     ` line-move-visual Stefan Monnier
2010-06-15 13:57                                                       ` line-move-visual David Kastrup
     [not found]                                                         ` <jwvbpbb6oyk.fsf-monnier+gnu.emacs.help@gnu.org>
2010-06-16 18:04                                                           ` line-move-visual David Kastrup
     [not found]                                                       ` <hv8gvf$98o$1@north.jnrs.ja.net>
     [not found]                                                         ` <hv8iog$313e$1@colin2.muc.de>
2010-06-15 19:37                                                           ` line-move-visual Leo
2010-06-15 21:04                                                           ` line-move-visual Uday S Reddy
2010-06-16 15:33                                                             ` line-move-visual Alan Mackenzie
2010-06-17  8:51                                                               ` line-move-visual Uday S Reddy
2010-06-16 14:33                                                         ` line-move-visual Stefan Monnier
2010-06-15 16:51                                                     ` line-move-visual Alan Mackenzie
2010-06-16 12:43                                                       ` line-move-visual David Kastrup
2010-06-15 19:17                                                     ` line-move-visual Xah Lee
     [not found]                                                     ` <4C17FE36.30102@thadlabs.com>
2010-06-15 22:45                                                       ` line-move-visual Xah Lee
2010-06-15 23:31                                                         ` line-move-visual Thad Floryan
2010-06-16  3:30                                                           ` line-move-visual Evans Winner
2010-06-16 16:14                                                             ` line-move-visual Xah Lee
2010-06-16 23:23                                                           ` line-move-visual Chris F.A. Johnson
2010-06-16 14:52                                                         ` line-move-visual Stefan Monnier
     [not found]                                                           ` <87r5k6sqg2.fsf@unm.edu>
2010-06-17  2:25                                                             ` line-move-visual Stefan Monnier
2010-06-17  3:51                                                               ` line-move-visual Chris F.A. Johnson
2010-06-17  9:03                                                             ` line-move-visual Uday S Reddy
2010-06-20 18:42                                                               ` line-move-visual B. T. Raven
2010-06-20 17:08                                                 ` line-move-visual B. T. Raven
2010-06-12  4:18                                       ` line-move-visual Tim X
2010-06-12  4:37                                         ` line-move-visual Evans Winner
2010-06-12  8:30                                           ` line-move-visual David Kastrup
2010-06-12  8:40                                             ` line-move-visual Evans Winner
2010-06-12  9:30                                             ` line-move-visual Uday S Reddy
2010-06-12 12:30                                               ` line-move-visual Tim X
2010-06-12 20:09                                           ` line-move-visual Joseph Brenner
2010-06-13  1:41                                             ` line-move-visual Tim X
2010-06-13 10:22                                               ` line-move-visual Uday S Reddy
2010-06-13 10:51                                                 ` line-move-visual David Kastrup
2010-06-13 11:32                                                   ` line-move-visual Uday S Reddy
2010-06-14  0:46                                                 ` line-move-visual Tim X
     [not found]                                                   ` <hv4nkd$quq$1@north.jnrs.ja.net>
2010-06-15  9:20                                                     ` line-move-visual Tim X
2010-06-15 11:29                                                       ` line-move-visual Uday S Reddy
2010-06-16  9:29                                                         ` line-move-visual Tim X
2010-06-14  4:48                                                 ` line-move-visual Tim X
     [not found]                                                 ` <m2iq5nw4pj.fsf@gmail.com>
     [not found]                                                   ` <hv2htd$4li$1@north.jnrs.ja.net>
     [not found]                                                     ` <m239wravxb.fsf@gmail.com>
2010-06-16  2:11                                                       ` line-move-visual Joseph Brenner
2010-06-16  6:46                                                         ` line-move-visual Helmut Eller
2010-06-13 10:36                                             ` line-move-visual David Kastrup
2010-06-16  2:19                                               ` line-move-visual Joseph Brenner
     [not found]                                         ` <huvsd5$8pm$1@north.jnrs.ja.net>
2010-06-12 12:25                                           ` line-move-visual Tim X
2010-06-12 20:17                                             ` line-move-visual Joseph Brenner
2010-06-10 19:57                                   ` line-move-visual Stefan Monnier
2010-06-13 12:46                                     ` line-move-visual Uday S Reddy
2010-06-09 21:38                             ` line-move-visual Joseph Brenner
     [not found]                               ` <slrni10ga0.t64.Jim.Diamond@jdiamond-nb.acadiau.ca>
2010-06-10 16:15                                 ` line-move-visual Mark Crispin
2010-06-04 17:52       ` line-move-visual Mark Crispin
2010-06-04 18:28         ` line-move-visual David Kastrup
     [not found]           ` <alpine.OSX.2.00.1006041808540.77397@hsinghsing.panda.com>
     [not found]             ` <878w6truxc.fsf@lola.goethe.zz>
2010-06-06  2:25               ` line-move-visual Mark Crispin
     [not found]               ` <87typc9dt8.fsf@kzsu.stanford.edu>
     [not found]                 ` <alpine.OSX.2.00.1006091815150.93771@hsinghsing.panda.com>
2010-06-10  7:12                   ` line-move-visual David Kastrup
2010-06-04 21:16         ` line-move-visual Stefan Monnier
2010-06-05  1:29           ` line-move-visual Mark Crispin
2010-06-04 13:20     ` line-move-visual sable

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e01d8a50907101329l6f77062cma960c6abc98b8b3c@mail.gmail.com \
    --to=lennart.borgman@gmail.com \
    --cc=bastienguerry@googlemail.com \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=handa@m17n.org \
    --cc=jem@iki.fi \
    --cc=miles@gnu.org \
    --cc=scot.becker@gmail.com \
    --cc=stephen@xemacs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.