Difference between revisions of "Mediawiki.el"

From WikEmacs
Jump to navigation Jump to search
(→‎Setup: MELPA has the latest package)
 
(6 intermediate revisions by 2 users not shown)
Line 22: Line 22:
 
(require 'package)
 
(require 'package)
 
(package-initialize)
 
(package-initialize)
;; Not sure which one should come first, but you certainly one of these.
 
;; As of sept. 2012, this package is not in ELPA
 
(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/") t)
 
 
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t)
 
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t)
 
</syntaxhighlight>
 
</syntaxhighlight>
Line 53: Line 50:
 
:: '''Password''': ''s!cr!t''
 
:: '''Password''': ''s!cr!t''
 
:: '''First Page''': ''Main Page''
 
:: '''First Page''': ''Main Page''
: You can provide "Username" and "Password" in your [[.authinfo]] file. home directory.
+
: You can provide "Username" and "Password" in your [[.authinfo]] file, located in you home directory. For a MediaWiki, .authinfo lines have the form:
 +
<syntaxhighlight lang="text">
 +
machine https://mymediawiki.com/wiki/ login myUsername password myPassword
 +
</syntaxhighlight>
  
 
Alternatively you can add this snippet of Emacs Lisp code to your
 
Alternatively you can add this snippet of Emacs Lisp code to your
Line 61: Line 61:
 
(require 'mediawiki)
 
(require 'mediawiki)
  
(setq mediawiki-site-alist '(("Wikipedia" "http://en.wikipedia.org/w/ "" "" "Main Page") ; put your user name and password
+
(setq mediawiki-site-alist '(("Wikipedia" "http://en.wikipedia.org/w/ "" "" "Main Page") ; put your user name and password if not using .authinfo
                             ("WikEmacs" "http://wikemacs.org/w/" "" "" "Main Page")))
+
                             ("WikEmacs" "http://wikemacs.org/" "" "" "Main Page")))
  
 
;; Emacs users care more for WikEmacs than Wikipedia :-).  
 
;; Emacs users care more for WikEmacs than Wikipedia :-).  
Line 92: Line 92:
 
; {{CommandKeys|M-g|mediawiki-reload}}
 
; {{CommandKeys|M-g|mediawiki-reload}}
 
: Reload a page
 
: Reload a page
 +
 +
; {{CommandKeys|Tab|mediawiki-mediawiki-goto-next-link}}
 +
: Get to next link
  
 
==Customizations==
 
==Customizations==
Line 124: Line 127:
 
Call {{Function| yyr-mediawiki-browser-edit/create-page}}
 
Call {{Function| yyr-mediawiki-browser-edit/create-page}}
  
=== key binding to open current editing file in web browser? ===
+
=== Key binding to open current editing file in web browser ===
  
bind {{Function|mediawiki-browse}} to some key chord. The following
+
Bind {{Function|mediawiki-browse}} to some key chord. The following
 
uses {{Keys|C-c o}}
 
uses {{Keys|C-c o}}
  
Line 135: Line 138:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
+
==Known Bugs==
 
+
* Version 2.2.2 works fine on GNU Emacs 24.0.94.1 (i386-mingw-nt5.1.2600) when there is no challenge (e.g. arithmetic problem). But when external links are added, so there is a challenge, mediawiki doesn't alert the user or show the arithmetic problem. The only evidence of failure is that the page is never updated.
  
 
==External Links==
 
==External Links==

Latest revision as of 15:14, 8 April 2015

mediawiki.el
Description Mediawiki interface and markup mode
Author Jerry et al
Maintainer Mark A. Hershberger
Source https://code.launchpad.net/~hexmode/mediawiki-el/trunk
Part of Emacs no

Mediawiki.el is a package to help add content to any mediawiki site including WikEmacs. It comes with a Major Mode to support editing Mediawiki markup.

Setup

Install mediawiki.el from el-get or ELPA.

If you are using emacs-24, you could do the following: Edit your .emacs file like this:

(require 'package)
(package-initialize)
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t)

Then, either use the menu Options->Manage Emacs Packages or type M-X package-list-packages

  • search mediawiki and click on it

... almost done.


Site requirements

The MediaWiki site that you wish to edit must have its API enabled:

$wgEnableAPI=true;

Customization

M-x load-library RET mediawiki RET
Load the library
M-x customize-variable RET mediawiki-site-alist
Configure as follows and save your settings
Site Name: WikEmacs
URL: http://wikemacs.org/w/
Username: InCognito
Password: s!cr!t
First Page: Main Page
You can provide "Username" and "Password" in your .authinfo file, located in you home directory. For a MediaWiki, .authinfo lines have the form:
machine https://mymediawiki.com/wiki/ login myUsername password myPassword

Alternatively you can add this snippet of Emacs Lisp code to your .emacs:

(require 'mediawiki)

(setq mediawiki-site-alist '(("Wikipedia" "http://en.wikipedia.org/w/ "" "" "Main Page") ; put your user name and password if not using .authinfo
                             ("WikEmacs" "http://wikemacs.org/" "" "" "Main Page")))

;; Emacs users care more for WikEmacs than Wikipedia :-). 
;; In any case, do not forget the slash at the end of the URL.
(setq mediawiki-site-default "WikEmacs")

You can naturally add more MediaWiki sites to the mediawiki-site-alist variable.

Usage

M-x mediawiki-site
Choose a site (say "WikEmacs") for the current session.
[C-c C-o] (or M-x mediawiki-open)
Open a page. To edit the main page, type "Main Page". Make your edits.
[C-x C-s] (or M-x mediawiki-save)
Submit your modifications.
[C-c C-c] (or M-x mediawiki-save-and-bury)
Submit modifications and bury the buffer.

Helpful Keybindings

[C-return] (or M-x mediawiki-open-page-at-point)
Follow or browse to a WikiLink.
[M-g] (or M-x mediawiki-reload)
Reload a page
[Tab] (or M-x mediawiki-mediawiki-goto-next-link)
Get to next link

Customizations

Word Wrap

Mediawiki sites are generally unfilled: do not add hard line breaks within a paragraph. There are various ways to wrap lines visually while you edit. For example in Emacs 24 you may want to enable Visual Line mode with a mode hook:

(setq mediawiki-mode-hook (lambda ()
                            (visual-line-mode 1)))

Edit or Create a page in a web browser

Right now Mediawiki.el fails silently whenever the site asks for number challenge (spam protection). The following snippet allows you to edit/create a page in a web browser

(defun yyr-mediawiki-browser-edit/create-page (page &optional site)
  "Edit a page in browser, asks for page name (sitename also if needed)"
  (interactive "sPage name (words): ")
  (let* ((site (mediawiki-prompt-for-site))
         (url (mediawiki-site-extract site 1))
         (index "index.php?title=")
         (et "&action=edit"))
    (funcall 'browse-url
             (message "%s%s%s%s"
                      url index (mediawiki-translate-pagename page) et))))

Call yyr-mediawiki-browser-edit/create-page

Key binding to open current editing file in web browser

Bind mediawiki-browse to some key chord. The following uses [C-c o]

(define-key mediawiki-mode-map (kbd "C-c o") 'mediawiki-browse)

Known Bugs

  • Version 2.2.2 works fine on GNU Emacs 24.0.94.1 (i386-mingw-nt5.1.2600) when there is no challenge (e.g. arithmetic problem). But when external links are added, so there is a challenge, mediawiki doesn't alert the user or show the arithmetic problem. The only evidence of failure is that the page is never updated.

External Links