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

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

Re: word delimiter


From: Sandip Chitale
Subject: Re: word delimiter
Date: 4 Mar 2003 18:01:53 -0800

I see that people are suggesting modifying the syntax of '_' to word.
It is related to the discussion if following thread:

http://groups.google.com/groups?dq=&hl=en&lr=lang_en&ie=UTF-8&threadm=84bs0wpiim.fsf%40lucy.is.informatik.uni-duisburg.de&prev=/groups%3Fdq%3D%26num%3D25%26hl%3Den%26lr%3Dlang_en%26ie%3DUTF-8%26group%3Dgnu.emacs.help%26start%3D25

Someone else suggested that modifying the syntax may be too drastic
because
it will affect other commands. Instead you should define new defuns
which
do the work.

Here is some defuns I defined along the lines of what you want:

(defun forward-symbol ()
  "Move forward over a symbol."
  (interactive)
  (forward-word 1)
  (while (eq (char-syntax (following-char)) ?\_)
    (forward-word 1)
    )  
  )

(defun backward-symbol ()
  "Move backward over a symbol."
  (interactive)
  (backward-word 1)
  (while (eq (char-syntax (preceding-char)) ?\_)
    (backward-word 1)
    )  
  )

(defun forward-symbol-append ()
  ""
  (interactive)
  (unless mark-active (set-mark (point)))
  (call-interactively 'forward-symbol)
  )

(defun backward-symbol-append ()
  ""
  (interactive)
  (unless mark-active (set-mark (point)))
  (call-interactively 'backward-symbol)
  )

(defun select-symbol-at-point ()
  "Select word at point."
  (interactive)
  (let ((syntax (char-syntax (following-char))))
    (if (or (eq syntax ?\w)
            (eq syntax ?\_))
        (progn
          (backward-symbol)
          (set-mark (point))
          (forward-symbol-append)
          )
      (progn
        (skip-syntax-backward (char-to-string syntax))
        (set-mark (point))
        (skip-syntax-forward (char-to-string syntax))
        )
      )
    )
  )

(global-set-key [(meta f)]                  'forward-symbol)
(global-set-key [(meta b)]                  'backward-symbol)
(global-set-key [C-S-right]                 'forward-symbol-append)
(global-set-key [C-S-left]                  'backward-symbol-append)
(global-set-key [(meta control w)]          'select-symbol-at-point)


You should be able to adapt these for M-d.

HTH,
sandip


reply via email to

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