Difference between revisions of "Mediawiki.el"

From WikEmacs
Jump to navigation Jump to search
(snippet)
m (→‎Customization: Better format .authinfo example.)
(20 intermediate revisions by 11 users not shown)
Line 2: Line 2:
 
|name=mediawiki.el
 
|name=mediawiki.el
 
|description=Mediawiki interface and markup mode
 
|description=Mediawiki interface and markup mode
 +
|author= Jerry et al
 
|maintainer=Mark A. Hershberger
 
|maintainer=Mark A. Hershberger
 
|source=https://code.launchpad.net/~hexmode/mediawiki-el/trunk
 
|source=https://code.launchpad.net/~hexmode/mediawiki-el/trunk
Line 16: Line 17:
  
 
Install '''mediawiki.el''' from [[el-get]] or [[ELPA]].
 
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:
 +
<syntaxhighlight lang="lisp">
 +
(require 'package)
 +
(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)
 +
</syntaxhighlight>
 +
 +
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:
 +
 +
<pre>
 +
$wgEnableAPI=true;
 +
</pre>
  
 
==Customization==
 
==Customization==
Line 29: Line 53:
 
:: '''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 37: Line 64:
 
(require 'mediawiki)
 
(require 'mediawiki)
  
(setq mediawiki-site-alist '(("Wikipedia" "http://en.wikipedia.org/w" "" "" "Main Page")
+
(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 :-).
 +
;; In any case, do not forget the slash at the end of the URL.
 
(setq mediawiki-site-default "WikEmacs")
 
(setq mediawiki-site-default "WikEmacs")
 
</syntaxhighlight>
 
</syntaxhighlight>
Line 57: Line 85:
 
: Submit your modifications.
 
: Submit your modifications.
  
; {{CommandKeys|C-c|mediawiki-save-and-bury}}
+
; {{CommandKeys|C-c C-c|mediawiki-save-and-bury}}
 
: Submit modifications and bury the buffer.
 
: Submit modifications and bury the buffer.
  
Line 67: Line 95:
 
; {{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==
=== Word Wrapping ===
+
=== Word Wrap ===
Mediawiki sites are generally [[Fill | unfilled ]].
 
[[Newline character]] are not used for breaking paragraphs. Emacs does supports [[word wrap]] but from [Emacs 24].
 
  
==== Emacs 24 ====
+
Mediawiki sites are generally [[Emacs_Terminology#Fill |unfilled]]: do not add hard line breaks within a paragraph. There are various ways to wrap lines [[Emacs_Terminology#Screen Lines |visually]] while you edit. For example in Emacs 24 you may want to enable [[Visual Line]] mode with a [[mode hook]]:
You may want to turn on word wrapping.
 
  
 
<syntaxhighlight lang="lisp">
 
<syntaxhighlight lang="lisp">
Line 81: Line 109:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
=== Edit or Create a page in browser ===
+
=== Edit or Create a page in a web browser ===
  
 
Right now '''Mediawiki.el''' fails silently whenever the site asks for number challenge
 
Right now '''Mediawiki.el''' fails silently whenever the site asks for number challenge
 
(spam protection). The following snippet allows you to edit/create a
 
(spam protection). The following snippet allows you to edit/create a
page
+
page in a web browser
  
 
<syntaxhighlight lang="lisp">
 
<syntaxhighlight lang="lisp">
Line 100: Line 128:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Call {{Function| yyr-mediawiki-browser-edit/create-page}}  
+
Call {{Function| yyr-mediawiki-browser-edit/create-page}}
  
=== key binding for 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 113: Line 141:
 
</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==
Line 120: Line 148:
 
*[https://launchpad.net/mediawiki-el Project Page]
 
*[https://launchpad.net/mediawiki-el Project Page]
  
 
[[Category:Wikemacs]]
 
[[Category:Markup Modes]]
 
[[Category:Wikemacs Contributor]]
 
[[Category:Wikemacs Contributor]]
 
[[Category:Markup Modes]]
 
 
[[Category:Third Party Package]]
 
[[Category:Third Party Package]]
 
[[Category:Markup languages]]
 
[[Category:Markup languages]]

Revision as of 16:46, 7 November 2014

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)
;; 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)

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