unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: "Csányi Pál" <csanyipal@gmail.com>
To: help-gnu-emacs@gnu.org
Subject: Re: Toggle WikiLink on and off does not work?
Date: Thu, 17 Aug 2017 10:17:34 +0200	[thread overview]
Message-ID: <CAONhAouELN8WfydsNospi8F5pBDVK9OTxgBUcPbPcTqCH7p8rw@mail.gmail.com> (raw)
In-Reply-To: <86valnzhwa.fsf@zoho.com>

2017-08-16 16:50 GMT+02:00 Emanuel Berg <moasen@zoho.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!

So I am trying to understand your advices.
This is the elisp program language and I am a newbie here.

Here is the code for the Emacs Wiki mode, which I have now in my .emacs file:
(require 'emacs-wiki)

;; Toggle WikiLink on and off
(defun emacs-wiki-unlink-toggle ()
  (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>"))))

(define-key emacs-wiki-unlink-toggle "\C-\M-n")

When I load the .emacs file with 'M-x load-file' command, I get message:
Wrong number of arguments: define-key, 2

A want to add to this question more.
Actually, with the previous setup the C-c C-n keybinding works,
eg.
if I have in a Wiki page the WikiLink word, and the cursor is on that word, then
the C-c C-n gives:
<nop>WikiLink
but WikiLink remain to be a Wiki Link.
And if I after that hit again C-c C-n then the <nop> disappeared, I get again:
WikiLink

So If I understand right, if one untoggle the Wiki Link, then the link
should disappeared,
and WikiLink should not be underlined. And vica versa. Right?

This is what not works here. Why?

-- 
Best, Pali



  parent reply	other threads:[~2017-08-17  8:17 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
2017-08-16 15:32   ` Emanuel Berg
2017-08-17  8:17   ` Csányi Pál [this message]
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

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to=CAONhAouELN8WfydsNospi8F5pBDVK9OTxgBUcPbPcTqCH7p8rw@mail.gmail.com \
    --to=csanyipal@gmail.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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).