From: Emanuel Berg <moasen@zoho.com>
To: help-gnu-emacs@gnu.org
Subject: Re: Toggle WikiLink on and off does not work?
Date: Wed, 16 Aug 2017 16:50:13 +0200 [thread overview]
Message-ID: <86valnzhwa.fsf@zoho.com> (raw)
In-Reply-To: CAONhAotQES5SZhCew68ua-V6LDU_kvbFoqBZNCBJmEoj89x4bw@mail.gmail.com
Csányi Pál wrote:
> ;; Toggle WikiLink on and off
> (defun emacs-wiki-unlink-toggle ()
> "Toggle <nop> string in the beginning of the current word, to un/make a
> word emacs-wiki link. The current word depends on the point: if the cursor
> is on a non-whitespace character, it's considered a word surrounded by
> whitespace. If the cursor is on a whitespace character, the next word is
> looked up. This way addressing a word works intuitively after having
> arrived on the spot using forward-word."
> (interactive)
> (save-excursion
> (if (looking-at "[[:space:]]")
> (goto-char (- (re-search-forward "[A-Za-z<]") 1))
> (goto-char (+ (re-search-backward "[[:space:]]") 1)))
> (if (looking-at "<nop>")
> (delete-char 5)
> (insert "<nop>"))))
Some comments on the code:
The docstring is very technical - usually it
only describes what happens, leaving out most
implementation details. Usually, but
not always!
Also, the lines are very long so for some
people they won't fit on a screen. Break them
off and insert blank lines. Use \n if need be.
You know about `1+' and `1-' to add/subtract 1?
If the "5" is because (length "<nop>") is five,
it is better to compute that - data that is
derived from other data should be computed so
that, if other data change, so does data.
Indentation: add four spaces before the
first "(if".
> (add-hook 'emacs-wiki-mode-hook
> '(lambda () (local-set-key "\C-c\C-n" 'emacs-wiki-unlink-toggle)))
>
> but in Wiki mode I can't toggle on or off a WikiLink.
> Why?
You don't need a lambda here (and they need not
be quoted). You can put a # before the
function quote.
Using `local-set-key' is one way to do it,
I would however `require' the emacs-wiki,
and then use `define-key' with the mode map, as
in:
(require 'erc)
(define-key erc-mode-map "\C-\M-p" #'erc-previous-command)
Ask again if it didn't help!
--
underground experts united
http://user.it.uu.se/~embe8573
next prev parent reply other threads:[~2017-08-16 14:50 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-16 8:55 Toggle WikiLink on and off does not work? Csányi Pál
2017-08-16 14:50 ` Emanuel Berg [this message]
2017-08-16 15:32 ` Emanuel Berg
2017-08-17 8:17 ` Csányi Pál
2017-08-17 11:42 ` Emanuel Berg
2017-08-17 18:53 ` Csányi Pál
2017-08-17 21:12 ` Emanuel Berg
2017-08-18 5:06 ` Csányi Pál
2017-08-19 14:13 ` Emanuel Berg
2017-08-19 14:41 ` Csányi Pál
2017-08-19 14:52 ` Emanuel Berg
2017-08-19 15:15 ` Csányi Pál
2017-08-17 11:54 ` Emanuel Berg
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=86valnzhwa.fsf@zoho.com \
--to=moasen@zoho.com \
--cc=help-gnu-emacs@gnu.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.