title: GNU emacs: setting keybindings to highlight text with shift key
body: <p>I'm trying to set some keybindings to use the <kbd>Shift</kbd> key to highlight text. I could use <code>pc-selection-mode</code>, but that doesn't offer all the key bindings I want. For example, I'd like to be able to shift-mark an entire paragraph by pressing <kbd>Shift-Ctrl-down</kbd> which I can do in most MS text editors, but <code>pc-selection-mode</code> doesn't allow you to do this.</p>
  
  <p>I found this <a href="http://www.movesinstitute.org/~kolsch/past/shift_mark/EmacsShiftMark.html" rel="nofollow">website</a> which has a <a href="http://www.movesinstitute.org/~kolsch/past/shift_mark/shift_mark.el" rel="nofollow"><code>shift_mark.el</code></a> file I can use to set all the key bindings I want. I've put in my <code>.xemacs/init.el</code> file to load <code>shift_mark.el</code>.</p>
  
  <p>This is the error:</p>
  
  <pre><code>Warning (initialization): An error occurred while loading `/home/theory/phrkaj/\
  .xemacs/init.el':
  
  Wrong type argument: arrayp, (shift right)
  </code></pre>
  
  <p>So I've run Emacs with <code>--debug-init</code> to try and find the problem. This is what the debugger came up with:</p>
  
  <pre><code>Debugger entered--Lisp error: (wrong-type-argument arrayp (shift right))
    signal(wrong-type-argument (arrayp (shift right)))
    global-set-key((shift right) shift-mark-forward-char)
    eval-buffer(#&lt;buffer  *load*&lt;3&gt;&gt; nil "/home/theory/phrkaj/shift_mark.el" nil t)  ; Reading at buffer position 1476
    load-with-code-conversion("/home/theory/phrkaj/shift_mark.el" "/home/theory/phrkaj/shift_mark.el" nil nil)
    load("~/shift_mark.el")
    eval-buffer(#&lt;buffer  *load*&lt;2&gt;&gt; nil "/home/theory/phrkaj/.xemacs/init.el" nil t)  ; Reading at buffer position 25
    load-with-code-conversion("/home/theory/phrkaj/.xemacs/init.el" "/home/theory/phrkaj/.xemacs/init.el" nil nil)
    load("/home/theory/phrkaj/.xemacs/init.el" nil nil t)
    load-file("/home/theory/phrkaj/.xemacs/init.el")
    eval-buffer(#&lt;buffer  *load*&gt; nil "/home/theory/phrkaj/.emacs" nil t)  ; Reading at buffer position 253
    load-with-code-conversion("/home/theory/phrkaj/.emacs" "/home/theory/phrkaj/.emacs" t t)
    load("~/.emacs" t t)
    #[nil "^H\205\264^@   \306=\203^Q^@\307^H\310Q\2027^@ \311=\2033^@\312\307\313\314#\203#^@\315\2027^@\312\307\313\316#\203/^@\317\2027^@\315\2027^@\307^H\320Q^Z\321^S\322\n\321\211#\210^K\321=\203_^@\323\324\325\307^H\326Q!\"^\\322\f\$
    command-line()
    normal-top-level()
  </code></pre>
  
  <p>Here's part of the <code>shift_mark.el</code> file which defines the highlighting of one char forward:</p>
  
  <pre><code>(defun shift-mark-forward-char ()
    (interactive)
    (shift-mark 'forward-char))
  
  (global-set-key '(shift right) 'shift-mark-forward-char)
  </code></pre>
  
  <p>Any help is appreciated.</p>