Difference between pages "Help:Magic words" and "Package:Emacs"

(Difference between pages)
m (1 revision: Importing the public domain help content from Mediawiki)
 
(.folders)
 
Line 1: Line 1:
'''Magic words''' are strings of text that MediaWiki associates with a return value or function, such as time, site details, or page names. This page is about usage of standard magic words; for a technical reference, see {{Mediawiki|Manual:Magic words}}.
+
[[File:emacs-logo.png]]
  
There are three general types of magic words:
+
Emacs is a famous text editor, famous by its flexibility and extensibility. One manual describes it as "the extensible, customizable, self-documenting, real-time display editor".
*'''[[#Behavior switches|Behavior switches]]''': these are uppercase words surrounded by double underscores, ''e.g.'' '''__FOO__'''
+
*'''[[#Variables|Variables]]''': these are uppercase words surrounded by double braces, ''e.g.'' '''<tt><tt><nowiki>{{FOO}}</nowiki></tt></tt>'''. As such, they look a lot like [[Help:Templates|templates]].
+
*'''[[#Parser functions|Parser functions]]''': these take parameters and are either of the form '''<tt><tt><nowiki>{{foo:...}}</nowiki></tt></tt>''' or '''<tt><tt><nowiki>{{#foo:...}}</nowiki></tt></tt>'''. See also {{mediawiki|Help:Extension:ParserFunctions}}.
+
  
Page-dependent magic words will affect or return data about the ''current'' page (by default), even if the word is added through a transcluded template or included system message.
+
This page is designed to give users a good place to share their config and settings for a nice emacs setup.
  
==Behavior switches==
+
== Installing emacs ==
A behavior switch controls the layout or behaviour of the page and can often be used to specify desired omissions and inclusions in the content.
+
To install {{Package|app-editors/emacs}}, run the following command:
 +
<console>
 +
###i## emerge -av emacs
 +
</console>
 +
for the standard gnu emacs {{Package|app-editors/xemacs}} and
 +
<console>
 +
###i## emerge -av xemacs
 +
</console>
  
{| {{prettytable}}
+
for the 1980 created fork of emacs, both should handle the same, while emacs on its own stands here for both. If you install additional extensions for both you might need to add <tt>app-emacs</tt> or <tt>app-xemacs</tt> to the package as there are two different versions for both.
|-
+
!{{Hl2}}| Word
+
!{{Hl2}}| Description
+
!{{Hl2}}| Versions
+
|-
+
|{{Hl3}} colspan="3"| '''Table of contents'''
+
|-
+
| <nowiki>__NOTOC__</nowiki>
+
| Hides the table of contents (TOC).
+
|
+
|-
+
|<nowiki>__FORCETOC__</nowiki>
+
| Forces the table of content to appear at its normal position (above the first header).
+
|
+
|-
+
| <nowiki>__TOC__</nowiki>
+
| Places a table of contents at the word's current position (overriding <nowiki>__NOTOC__</nowiki>). If this is used multiple times, the table of contents will appear at the first word's position.
+
|
+
|-
+
|{{Hl3}} colspan="3"| '''Editing'''
+
|-
+
| <nowiki>__NOEDITSECTION__</nowiki>
+
| Hides the section edit links beside headings.
+
|
+
|-
+
| <nowiki>__NEWSECTIONLINK__</nowiki>
+
| Adds a link ([[MediaWiki:Addsection|"+" by default]]) beside the "edit" tab for adding a new section on a non-talk page (see {{mediawiki|m:Help:Section#Adding a section at the end|Adding a section to the end}}).
+
| 1.7+
+
|-
+
| <nowiki>__NONEWSECTIONLINK__</nowiki>
+
| Removes the link beside the "edit" tab on pages in talk namespaces.
+
| {{mediawiki|rev:47522|1.15+}}
+
|-
+
|{{Hl3}} colspan="3"| '''Categories'''
+
|-
+
| <nowiki>__NOGALLERY__</nowiki>
+
| Used on a category page, replaces thumbnails in the category view with normal links.
+
| 1.7+
+
|-
+
| <nowiki>__HIDDENCAT__</nowiki>
+
| Used on a category page, hides the category from the lists of categories in its members and parent categories (there is an option in the [[Help:Preferences|user preferences]] to show them).<!-- hiddencategory hiddencat hide category categories -->
+
| 1.13+
+
|-
+
|{{Hl3}} colspan="3"| '''Language conversion'''
+
|-
+
| <nowiki>__NOCONTENTCONVERT__</nowiki><br /><nowiki>__NOCC__</nowiki>
+
| On wikis with language variants, don't perform any content language conversion (character and phase) in article display; for example, only show Chinese (zh) instead of variants like zh_cn, zh_tw, zh_sg, or zh_hk.
+
|
+
|-
+
| <nowiki>__NOTITLECONVERT__</nowiki><br /><nowiki>__NOTC__</nowiki>
+
| On wikis with language variants, don't perform language conversion on the title (all other content is converted).
+
|
+
|-
+
|{{Hl3}} colspan="3"| '''Other'''
+
|-
+
| <nowiki>__START__</nowiki>
+
| No effect.
+
|
+
|-
+
| <nowiki>__END__</nowiki>
+
| Explicitly marks the end of the article, to prevent MediaWiki from removing trailing whitespace. Removed in {{mediawiki|rev:19213|19213}}.
+
| 1.1 - 1.8
+
|-
+
|  <nowiki>__INDEX__</nowiki>
+
| Tell search engines to index the page (overrides {{mediawiki|Manual:$wgArticleRobotPolicies|$wgArticleRobotPolicies}}, but not robots.txt).
+
| 1.14+
+
|-
+
|  <nowiki>__NOINDEX__</nowiki>
+
| Tell search engines not to index the page (ie, do not list in search engines' results).
+
| {{mediawiki|rev:37973|1.14+}}
+
|-
+
|  <nowiki>__STATICREDIRECT__</nowiki>
+
| On redirect pages, don't allow MediaWiki to automatically update the link when someone moves a page and checks "Update any redirects that point to the original title".
+
| {{mediawiki|rev:37928|1.13+}}
+
|}
+
  
==Variables==
+
== What emacs is and what it is not ==
Variables return information about the current page, wiki, or date. Their syntax is similar to [[Help:Templates|templates]]. Variables marked as "<span style="background:#FED;">'''[expensive]'''</span>" are tracked by the software, and the number that can be included on a page is limited.
+
  
If a template name conflicts with a variable, the variable will be used (so to transclude the template [[{{ns:10}}:PAGENAME]] you would need to write <code><tt><nowiki>{{</nowiki>{{ns:10}}:PAGENAME<nowiki>}}</nowiki></tt></code>). In some cases, adding parameters will force the parser to treat a variable as a template; for example, <code><tt><nowiki>{{CURRENTDAYNAME|x}}</nowiki></tt></code> transcludes [[{{ns:10}}:CURRENTDAYNAME]].
+
# Emacs is primarily a text editor and not a word processor, it concentrates on manipulating any kind of text, rather than manipulating the font and look. It is client and GUI based, so can be used on local box in graphical environments with a GUI and remote on a server in a client mode.
 +
# Emacs provides commands for manipulate every kind of text and syntax highlighting.
  
===Date & time===
+
=== Customizability ===
The following variables return the current date and time in UTC.
+
  
Due to MediaWiki and browser caching, these variables frequently show when the page was ''cached'' rather than the current time.
+
'''Emacs is highly customizable:'''
  
{| {{prettytable}}
+
* the <tt>customize</tt> extension, which allows settings of customized variables, such as color themes, graphical interface, etc. This part is intended for emacs beginners, who do not want to work with Emacs lisp code.
|-
+
* combine keystrokes to execute complex makros.
!{{Hl2}}| Variable
+
* using Emacs Lisp. Designed for the emacs professional.
!{{Hl2}}| Output
+
!{{Hl2}}| Description
+
!{{Hl2}}| Versions
+
|-
+
|{{Hl3}} colspan="4"| '''Year'''
+
|-
+
| <tt><nowiki>{{CURRENTYEAR}}</nowiki></tt>
+
| {{CURRENTYEAR}}
+
| Year
+
|
+
|-
+
|{{Hl3}} colspan="4"| '''Month'''
+
|-
+
| <tt><nowiki>{{CURRENTMONTH}}</nowiki></tt>
+
| {{CURRENTMONTH}}
+
| Month (zero-padded number)
+
|
+
|-
+
| <tt><nowiki>{{CURRENTMONTHNAME}}</nowiki></tt>
+
| {{CURRENTMONTHNAME}}
+
| Month (name)
+
|
+
|-
+
| <tt><nowiki>{{CURRENTMONTHNAMEGEN}}</nowiki></tt>
+
| {{CURRENTMONTHNAMEGEN}}
+
| Month ([[w:genitive|genitive form]])
+
|
+
|-
+
| <tt><nowiki>{{CURRENTMONTHABBREV}}</nowiki></tt>
+
| {{CURRENTMONTHABBREV}}
+
| Month (abbreviation)
+
| 1.5+
+
|-
+
|{{Hl3}} colspan="4"| '''Day'''
+
|-
+
| <tt><nowiki>{{CURRENTDAY}}</nowiki></tt>
+
| {{CURRENTDAY}}
+
| Day of the month (unpadded number)
+
|
+
|-
+
| <tt><nowiki>{{CURRENTDAY2}}</nowiki></tt>
+
| {{CURRENTDAY2}}
+
| Day of the month (zero-padded number)
+
| 1.6+
+
|-
+
| <tt><nowiki>{{CURRENTDOW}}</nowiki></tt>
+
| {{CURRENTDOW}}
+
| Day of the week (unpadded number)
+
|
+
|-
+
| <tt><nowiki>{{CURRENTDAYNAME}}</nowiki></tt>
+
| {{CURRENTDAYNAME}}
+
| Day of the week (name)
+
|
+
|-
+
|{{Hl3}} colspan="4"| '''Time'''
+
|-
+
| <tt><nowiki>{{CURRENTTIME}}</nowiki></tt>
+
| {{CURRENTTIME}}
+
| Time (24-hour HH:mm format)
+
|
+
|-
+
| <tt><nowiki>{{CURRENTHOUR}}</nowiki></tt>
+
| {{CURRENTHOUR}}
+
| Hour (24-hour zero-padded number)
+
|
+
|-
+
|{{Hl3}} colspan="4"| '''Other'''
+
|-
+
| <tt><nowiki>{{CURRENTWEEK}}</nowiki></tt>
+
| {{CURRENTWEEK}}
+
| Week (number)
+
|
+
|-
+
| <tt><nowiki>{{CURRENTTIMESTAMP}}</nowiki></tt>
+
| {{CURRENTTIMESTAMP}}
+
| YYYYMMDDHHmmss timestamp
+
| 1.7+
+
|}
+
  
The following variables do the same as the above, but using the site's server config or $wgLocaltimezone.
+
=== Extensibility ===
* <tt><nowiki>{{LOCALYEAR}}</nowiki></tt>
+
* <tt><nowiki>{{LOCALMONTH}}</nowiki></tt>
+
* <tt><nowiki>{{LOCALMONTHNAME}}</nowiki></tt>
+
* <tt><nowiki>{{LOCALMONTHNAMEGEN}}</nowiki></tt>
+
* <tt><nowiki>{{LOCALMONTHABBREV}}</nowiki></tt>
+
* <tt><nowiki>{{LOCALDAY}}</nowiki></tt>
+
* <tt><nowiki>{{LOCALDAY2}}</nowiki></tt>
+
* <tt><nowiki>{{LOCALDOW}}</nowiki></tt>
+
* <tt><nowiki>{{LOCALDAYNAME}}</nowiki></tt>
+
* <tt><nowiki>{{LOCALTIME}}</nowiki></tt>
+
* <tt><nowiki>{{LOCALHOUR}}</nowiki></tt>
+
* <tt><nowiki>{{LOCALWEEK}}</nowiki></tt>
+
* <tt><nowiki>{{LOCALTIMESTAMP}}</nowiki></tt>
+
  
:''For more thorough time formatting, you may want to install [[Extension:ParserFunctions]] to use the [[Help:Extension:ParserFunctions#.23time|#time parser function]]''
+
As a result of the above points, Emacs behaviour can be easily definied to all text behavings without limit. Like some of the examples below show you:
  
===Technical metadata===
+
* AUCTeX, A suite for LaTeX and other TeX versions,
Revision variables return data about the '''latest edit to the current page''', even if viewing an older version of the page.
+
* ERC, A Emacs IRC client,
{| {{prettytable}}
+
* ORG-mode, A Emacs PIM and Orga tool
|-
+
* Wanderlust, A highly flexible Mail tool for Emacs
!{{Hl2}}| Variable
+
!{{Hl2}}| Output
+
!{{Hl2}}| Description
+
!{{Hl2}}| Versions
+
|-
+
|{{Hl3}} colspan="4"| '''Site'''
+
|-
+
| <tt><nowiki>{{SITENAME}}</nowiki></tt>
+
| {{SITENAME}}
+
| The wiki's site name ({{mediawiki|Manual:$wgSitename|$wgSitename}}).
+
|
+
|-
+
| <tt><nowiki>{{SERVER}}</nowiki></tt>
+
| {{SERVER}}
+
| domain URL ({{mediawiki|Manual:$wgServer|$wgServer}})
+
|
+
|-
+
| <tt><nowiki>{{SERVERNAME}}</nowiki></tt>
+
| {{SERVERNAME}}
+
| domain name ({{mediawiki|Manual:$wgServerName|$wgServerName}})
+
| - 1.16
+
|-
+
| <tt><nowiki>{{DIRMARK}}</nowiki></tt><br /><tt><nowiki>{{DIRECTIONMARK}}</nowiki></tt>
+
| {{DIRMARK}}<br />{{DIRECTIONMARK}}
+
| Outputs a unicode-directional mark that matches the wiki's default language's direction (<code>&amp;lrm;</code> on left-to-right wikis, <code>&amp;rlm;</code> on right-to-left wikis), useful in text with multi-directional text.
+
| 1.7+
+
|-
+
| <tt><nowiki>{{SCRIPTPATH}}</nowiki></tt>
+
| {{SCRIPTPATH}}
+
| relative script path ({{mediawiki|Manual:$wgScriptPath|$wgScriptPath}})
+
|
+
|-
+
| <tt><nowiki>{{STYLEPATH}}</nowiki></tt>
+
| {{STYLEPATH}}
+
| relative style path ({{mediawiki|Manual:$wgStylePath|$wgStylePath}})
+
| 1.16+
+
|-
+
| <tt><nowiki>{{CURRENTVERSION}}</nowiki></tt>
+
| {{CURRENTVERSION}}
+
| The wiki's MediaWiki version.
+
| 1.7+
+
|-
+
| <tt><nowiki>{{CONTENTLANGUAGE}}</nowiki></tt><br /><tt><nowiki>{{CONTENTLANG}}</nowiki></tt>
+
| {{CONTENTLANGUAGE}}<br />{{CONTENTLANG}}
+
| The wiki's default interface language ({{mediawiki|Manual:$wgLanguageCode|$wgLanguageCode}})
+
| 1.7+
+
|-
+
|{{Hl3}} colspan="4"| '''Latest revision to current page'''
+
|-
+
| <tt><nowiki>{{REVISIONID}}</nowiki></tt>
+
| {{REVISIONID}}
+
| Unique revision ID
+
| 1.5+
+
|-
+
| <tt><nowiki>{{REVISIONDAY}}</nowiki></tt>
+
| {{REVISIONDAY}}
+
| Day edit was made (unpadded number)
+
| 1.8+
+
|-
+
| <tt><nowiki>{{REVISIONDAY2}}</nowiki></tt>
+
| {{REVISIONDAY2}}
+
| Day edit was made (zero-padded number)
+
| 1.8+
+
|-
+
| <tt><nowiki>{{REVISIONMONTH}}</nowiki></tt>
+
| {{REVISIONMONTH}}
+
| Month edit was made (zero-padded number)
+
| 1.8+<br/>Changed to zero-padded number in {{mediawiki|rev:66200|1.17+}}
+
<!--|-
+
| <tt><nowiki>{{REVISIONMONTH1}}</nowiki></tt>
+
| {{REVISIONMONTH1}}
+
| Month edit was made (unpadded number)
+
| {{mediawiki|rev:66200|1.17+}}-->
+
|-
+
| <tt><nowiki>{{REVISIONYEAR}}</nowiki></tt>
+
| {{REVISIONYEAR}}
+
| Year edit was made
+
| 1.8+
+
|-
+
| <tt><nowiki>{{REVISIONTIMESTAMP}}</nowiki></tt>
+
| {{REVISIONTIMESTAMP}}
+
| Timestamp as of time of edit
+
| 1.8+
+
|-
+
| <tt><nowiki>{{REVISIONUSER}}</nowiki></tt>
+
| {{REVISIONUSER}}
+
| The username of the user who made the most recent edit to the page
+
| {{mediawiki|rev:48149|1.15+}}
+
|-style="background:#FED;"
+
| <tt><nowiki>{{PAGESIZE:</nowiki>''page name''<nowiki>}}</nowiki></tt>
+
| {{PAGESIZE:Help:Magic_words}}
+
| '''[expensive]''' Returns the byte size of the specified page.
+
| {{mediawiki|rev:33551|1.13+}}
+
|-
+
| <tt><nowiki>{{PROTECTIONLEVEL:</nowiki>''action''<nowiki>}}</nowiki></tt>
+
| protection level
+
| Outputs the protection level (e.g. 'autoconfirm', 'sysop') for a given action (e.g. 'edit', 'move') on the current page or an empty string if not protected.
+
| {{mediawiki|rev:45587|1.15+}}
+
|-
+
|{{Hl3}} colspan="4"| '''Affects page content'''
+
|-
+
| <tt><nowiki>{{DISPLAYTITLE:</nowiki>''title''<nowiki>}}</nowiki></tt>
+
|
+
| Format the current page's title header. The value must be equivalent to the default title: only capitalization changes and replacing spaces with underscores. It can be disabled or enabled by {{mediawiki|Manual:$wgAllowDisplayTitle|$wgAllowDisplayTitle}}; disabled by default before 1.10+, enabled by default thereafter.
+
| 1.7+
+
|-
+
| <tt><nowiki>{{DEFAULTSORT:</nowiki>''sortkey''<nowiki>}}</nowiki></tt><br /><tt><nowiki>{{DEFAULTSORTKEY:</nowiki>''sortkey''<nowiki>}}</nowiki></tt><br /><tt><nowiki>{{DEFAULTCATEGORYSORT:</nowiki>''sortkey''<nowiki>}}</nowiki></tt>
+
|
+
| Used for categorizing pages, sets a default [[Help:Categories|category sort key]]. For example if you put <tt><nowiki>{{DEFAULTSORT:Smith, John}}</nowiki></tt> at the end of [[John Smith]], the page would be sorted under "S" by default in categories.
+
| 1.10+
+
|}
+
  
===Statistics===
+
== User Configs ==
Numbers returned by these variables normally contain separators (commas or spaces, depending on the local language), but can return raw numbers with the ":R" flag (for example, <code><tt><nowiki>{{NUMBEROFPAGES}}</nowiki></tt></code> &rarr; {{NUMBEROFPAGES}} and <code><tt><nowiki>{{NUMBEROFPAGES:R}}</nowiki></tt></code> &rarr; {{NUMBEROFPAGES:R}}). Use "|R" for magic words that require a parameter like PAGESINCATEGORY (for example <code><tt><nowiki>{{PAGESINCATEGORY:Help}}</nowiki></tt></code> and <code><tt><nowiki>{{PAGESINCATEGORY:Help|R}}</nowiki></tt></code>).
+
=== golodhrim's config ===
{| {{prettytable}}
+
==== .emacs ====
|-
+
Edit the file <tt>~/.emacs</tt>:
!{{Hl2}}| Variable
+
!{{Hl2}}| Output
+
!{{Hl2}}| Description
+
!{{Hl2}}| Versions
+
|-
+
|{{Hl3}} colspan="4"| '''Entire wiki'''
+
|-
+
| <tt><nowiki>{{NUMBEROFPAGES}}</nowiki></tt>
+
| {{NUMBEROFPAGES}}
+
| Number of wiki pages.
+
| 1.7+
+
|-
+
| <tt><nowiki>{{NUMBEROFARTICLES}}</nowiki></tt>
+
| {{NUMBEROFARTICLES}}
+
| Number of pages in {{mediawiki|Manual:Using custom namespaces#Content namespaces|content namespaces}}.
+
|
+
|-
+
| <tt><nowiki>{{NUMBEROFFILES}}</nowiki></tt>
+
| {{NUMBEROFFILES}}
+
| Number of uploaded files.
+
| 1.5+
+
|-
+
| <tt><nowiki>{{NUMBEROFEDITS}}</nowiki></tt>
+
| {{NUMBEROFEDITS}}
+
| Number of page edits.
+
| {{mediawiki|rev:21319|1.10+}}
+
|-
+
| <tt><nowiki>{{NUMBEROFVIEWS}}</nowiki></tt>
+
| {{NUMBEROFVIEWS}}
+
| Number of page views. Usually useless on a wiki using [[Manual:Cache|caching]].
+
| {{mediawiki|rev:42721|1.14+}}
+
|-
+
| <tt><nowiki>{{NUMBEROFUSERS}}</nowiki></tt>
+
| {{NUMBEROFUSERS}}
+
| Number of registered users.
+
| 1.7+
+
|-
+
| <tt><nowiki>{{NUMBEROFADMINS}}</nowiki></tt>
+
| {{NUMBEROFADMINS}}
+
| Number of users in the ''sysop'' {{mediawiki|Manual:User rights|group}}.
+
| 1.7+
+
|-
+
| <tt><nowiki>{{NUMBEROFACTIVEUSERS}}</nowiki></tt>
+
| {{NUMBEROFACTIVEUSERS}}
+
| Number of active users, based on the criteria used in [[Special:Statistics]].
+
| {{mediawiki|rev:47392|1.15+}}
+
|-style="background:#FED;"
+
| <tt><nowiki>{{PAGESINCATEGORY:</nowiki>''categoryname''<nowiki>}}</nowiki></tt><br /><tt><nowiki>{{PAGESINCAT:Help}}</nowiki></tt>
+
| {{PAGESINCATEGORY:Help}}<br />{{PAGESINCAT:Help}}
+
| '''[expensive]''' Number of pages in the given [[Help:Categories|category]] (replace "Help" with the relevant category name).
+
| {{mediawiki|rev:32932|1.13+}}
+
|-
+
| <tt><nowiki>{{NUMBERINGROUP:</nowiki>''groupname''<nowiki>}}</nowiki></tt><br /><tt><nowiki>{{NUMINGROUP:</nowiki>''groupname''<nowiki>}}</nowiki></tt>
+
| {{NUMBERINGROUP:bureaucrat}}<br />{{NUMINGROUP:bureaucrat}}<br /><small><nowiki>({{NUMBERINGROUP:bureaucrat}} used here)</nowiki></small>
+
| Number of users in a specific {{mediawiki|Manual:User rights|group}}.
+
| {{mediawiki|rev:40116|1.14+}}
+
|-
+
| <tt><nowiki>{{PAGESINNS:</nowiki>''index''<nowiki>}}</nowiki></tt><br /><tt><nowiki>{{PAGESINNAMESPACE:</nowiki>''index''<nowiki>}}</nowiki></tt>
+
| ''not enabled''
+
| Number of pages in the given [[Help:Namespaces|namespace]] (replace ''index'' with the relevant [[Manual:Namespace|namespace index]]). For instance, <tt><nowiki>{{PAGESINNAMESPACE:</nowiki>''14''<nowiki>}}</nowiki></tt> will output the number of category pages. <tt><nowiki>{{PAGESINNS:0}}</nowiki></tt> differs from <tt><nowiki>{{NUMBEROFARTICLES}}</nowiki></tt> in that the former includes redirects and disambiguation pages. Disabled by default, enable with {{mediawiki|Manual:$wgAllowSlowParserFunctions|$wgAllowSlowParserFunctions}}.
+
| 1.7+
+
|}
+
  
===Page names===
+
<pre>
{| {{prettytable}}
+
;;;;;;;;;;;;;;;;;;;;;;
|-
+
;; General Settings ;;
!{{Hl2}}| Variable
+
;;;;;;;;;;;;;;;;;;;;;;
!{{Hl2}}| Output
+
!{{Hl2}}| Description
+
!{{Hl2}}| Versions
+
|-
+
| <tt><nowiki>{{FULLPAGENAME}}</nowiki></tt>
+
| {{FULLPAGENAME}}
+
| Namespace and page title.
+
| 1.6+
+
|-
+
| <tt><nowiki>{{PAGENAME}}</nowiki></tt>
+
| {{PAGENAME}}
+
| Page title.
+
|
+
|-
+
| <tt><nowiki>{{BASEPAGENAME}}</nowiki></tt>
+
| {{BASEPAGENAME}}
+
| Page title excluding the current [[Help:Subpages|subpage]] and namespace ("Title/foo" on "Title/foo/bar").
+
For more complex splitting, use <nowiki>{{</nowiki>[[Help:Extension:ParserFunctions#.23titleparts|#titleparts:]] <nowiki>}}</nowiki> from [[Help:Extension:ParserFunctions|ParserFunctions extension]].
+
| 1.7+
+
|-
+
| <tt><nowiki>{{SUBPAGENAME}}</nowiki></tt>
+
| {{SUBPAGENAME}}
+
| The [[Help:Subpages|subpage]] title ("foo" on "Title/foo").
+
| 1.6+
+
|-
+
| <tt><nowiki>{{SUBJECTPAGENAME}}</nowiki></tt>
+
| {{SUBJECTPAGENAME}}
+
| The namespace and title of the associated content page.
+
| 1.7+
+
|-
+
| <tt><nowiki>{{TALKPAGENAME}}</nowiki></tt>
+
| {{TALKPAGENAME}}
+
| The namespace and title of the associated talk page.
+
| 1.7+
+
|}
+
  
The <tt><nowiki>{{BASEPAGENAME}}</nowiki></tt> and <tt><nowiki>{{SUBPAGENAME}}</nowiki></tt> magic words only work in namespaces that have subpages enabled.  See {{mediawiki|Manual:$wgNamespacesWithSubpages}} for information on enabling subpages.
+
(setq emacs-root-dir (concat (getenv "HOME") "/em/"))
  
The following are equivalents encoded for use in MediaWiki URLs (i.e. spaces replaced with underscores and some characters [[w:percent-encoding|percent-encoded]]):
+
(setq inhibit-startup-message t)   ;; Suppress the startup message
* <tt><nowiki>{{FULLPAGENAMEE}}</nowiki></tt>
+
(setq standard-indent 4)            ;; Default indent level is 3 chars
* <tt><nowiki>{{PAGENAMEE}}</nowiki></tt>
+
(setq-default indent-tabs-mode nil) ;; Indent with spaces, not tabs
* <tt><nowiki>{{BASEPAGENAMEE}}</nowiki></tt>
+
* <tt><nowiki>{{SUBPAGENAMEE}}</nowiki></tt>
+
* <tt><nowiki>{{SUBJECTPAGENAMEE}}</nowiki></tt>
+
* <tt><nowiki>{{TALKPAGENAMEE}}</nowiki></tt>
+
  
As of {{mediawiki|rev:46662|1.15+}}, these can all take a parameter, allowing specification of the page to be operated on, instead of just the current page:
+
(setq make-backup-files nil)          ;; Enable backup files.
* <tt><nowiki>{{PAGENAME:Template:Main Page}}</nowiki></tt> &rarr; '''{{PAGENAME:Template:Main Page}}'''
+
(setq version-control nil)            ;; Enable versioning with default values
 +
(setq backup-directory-alist (quote ((".*" . "~/.emacs_backups/"))))  ;; Save all backup file in this directory.
  
 +
(line-number-mode 1)                ;; Show line-number in the mode line
 +
(column-number-mode 1)              ;; Show column-number in the mode line
  
{{Warning|Page titles containing certain characters, such as single quotes (') or asterisks <tt>*</tt>, may produce unexpected results when handled with these magic words, e.g. <tt><nowiki>{{PAGESINCATEGORY:{{PAGENAME}}}}</nowiki></tt>. See bugs {{mediawiki|bugzilla:14779|14779}}, {{mediawiki|bugzilla:16474|16474}}.}}
+
(setq auto-fill-mode 1)             ;; Line wrap
  
===Namespaces===
+
(set-default-font "Inconsolata-12")
{| {{prettytable}}
+
|-
+
!{{Hl2}}| Variable
+
!{{Hl2}}| Output
+
!{{Hl2}}| Description
+
!{{Hl2}}| Versions
+
|-
+
| <tt><nowiki>{{NAMESPACE}}</nowiki></tt>
+
| {{NAMESPACE}}
+
| Name of the page's namespace
+
|
+
|-
+
| <tt><nowiki>{{SUBJECTSPACE}}</nowiki></tt><br /><tt><nowiki>{{ARTICLESPACE}}</nowiki></tt>
+
| {{SUBJECTSPACE}}<br />{{ARTICLESPACE}}
+
| Name of the associated content namespace
+
| 1.7+
+
|-
+
| <tt><nowiki>{{TALKSPACE}}</nowiki></tt>
+
| {{TALKSPACE}}
+
| Name of the associated talk namespace
+
| 1.7+
+
|}
+
  
The following are equivalents encoded for use in MediaWiki URLs (spaces replaced with underscores and some characters percent-encoded):
+
(setq browse-url-browser-function 'browse-url-generic
* <tt><nowiki>{{NAMESPACEE}}</nowiki></tt>
+
      browse-url-generic-program "google-chrome")
* <tt><nowiki>{{SUBJECTSPACEE}}</nowiki></tt>
+
* <tt><nowiki>{{TALKSPACEE}}</nowiki></tt>
+
  
As of {{mediawiki|rev:46630|1.15+}}, these can take a page name parameter and will return the namespace of the page name parameter, instead of the current page's:
+
(global-set-key (kbd "C-<prior>") 'previous-buffer)
* <tt><nowiki>{{NAMESPACE:Template:Main Page}}</nowiki></tt> &rarr; '''{{NAMESPACE:Template:Main Page}}'''
+
(global-set-key (kbd "C-<next>" ) 'next-buffer    )
* <tt><nowiki>{{SUBJECTSPACE:Template:Main Page}}</nowiki></tt> &rarr; '''{{SUBJECTSPACE:Template:Main Page}}'''
+
* <tt><nowiki>{{TALKSPACE:Template:Main Page}}</nowiki></tt> &rarr; '''{{TALKSPACE:Template:Main Page}}'''
+
  
==Parser functions==
 
  
Parser functions are very similar to variables, but take one or more parameters (technically, any magic word that takes a parameter is a parser function), and the name is sometimes prefixed with a hash to distinguish them from templates.
+
(setq load-path (cons "~/.emacs.d/plugins" load-path))
  
This page only describes parser functions that are integral to the MediaWiki software. Other parser functions may be added by MediaWiki extensions such as the {{mediawiki|Extension:ParserFunctions|ParserFunctions extension}}. For those see [[Help:Extension:ParserFunctions]].
+
(setq global-font-lock-mode 1)
  
===URL data===
+
(show-paren-mode 1)
{| {{prettytable}}
+
|-
+
!{{Hl2}}| Parser function
+
!{{Hl2}}| Input → Output
+
!{{Hl2}}| Description
+
!{{Hl2}}| Versions
+
|-
+
| <tt><nowiki>{{localurl:</nowiki>''page name''<nowiki>}}</nowiki></tt><br /><tt><nowiki>{{localurl:</nowiki>''page name''<nowiki>|</nowiki>''query_string''<nowiki>}}</nowiki></tt>
+
| <nowiki>{{localurl:MediaWiki}}</nowiki> → {{localurl:MediaWiki}}<br /><nowiki>{{localurl:MediaWiki|printable=yes}}</nowiki>  → {{localurl:MediaWiki|printable=yes}}
+
| The relative path to the title.
+
|
+
|-
+
| <tt><nowiki>{{fullurl:</nowiki>''page name''<nowiki>}}</nowiki></tt><br /><tt><nowiki>{{fullurl:</nowiki>''page name''<nowiki>|</nowiki>''query_string''<nowiki>}}</nowiki></tt><br /><tt><nowiki>{{fullurl:</nowiki>''interwiki:remote page name''<nowiki>|</nowiki>''query_string''<nowiki>}}</nowiki></tt>
+
| <nowiki>{{fullurl:Category:Top level}}</nowiki> → {{fullurl:Category:Top level}}<br />
+
<nowiki>{{fullurl:Category:Top level|action=edit}}</nowiki> → {{fullurl:Category:Top level|action=edit}}
+
| The absolute path to the title. This will also resolve [[Manual:Interwiki|Interwiki]] prefixes.
+
| 1.5+
+
|-
+
| <tt><nowiki>{{filepath:</nowiki>''file name''<nowiki>}}</nowiki></tt><br /><tt><nowiki>{{filepath:</nowiki>''file name''<nowiki>|nowiki}}</nowiki></tt>
+
| <nowiki>{{filepath:Wiki.png}}</nowiki> → {{filepath:Wiki.png}}<br /><nowiki>{{filepath:Wiki.png|nowiki}}</nowiki> → {{filepath:Wiki.png|nowiki}}
+
| The absolute URL to a media file.
+
| {{mediawiki|rev:25854|1.12+}}
+
|-
+
| <tt><nowiki>{{urlencode:</nowiki>''string''<nowiki>}}</nowiki></tt>
+
| <nowiki>{{urlencode:x y z á é}}</nowiki> → {{urlencode:x y z á é}}
+
| The input encoded for use in URLs.
+
| {{mediawiki|rev:14273|1.7+}}
+
|-
+
| <tt><nowiki>{{anchorencode:</nowiki>''string''<nowiki>}}</nowiki></tt>
+
| <nowiki>{{anchorencode:x y z á é}}</nowiki> → {{anchorencode:x y z á é}}
+
| The input encoded for use in URL section anchors (after the '#' symbol in a URL).
+
| {{mediawiki|rev:16279|1.8+}}
+
|}
+
  
===Namespaces===
+
;;;;;;;;;;;;;;;;;;
<tt><nowiki>{{ns:}}</nowiki></tt> returns the localized name for the [[Help:Namespace|namespace]] with that index. <tt><nowiki>{{nse:}}</nowiki></tt> is the equivalent encoded for MediaWiki URLs. It does the same, but it replaces spaces with underscores, making it usable in external links.
+
;; el-get setup ;;
{| {{prettytable}}
+
;;;;;;;;;;;;;;;;;;
|-
+
(add-to-list 'load-path "~/.emacs.d/el-get/el-get")
! {{hl3}} colspan="2" width="50%" | Content namespaces
+
(unless (require 'el-get nil t)
! rowspan="12" |
+
  (with-current-buffer
! {{hl3}} colspan="2" width=%50%" | Talk namespaces
+
    (url-retrieve-synchronously "https://raw.github.com/golodhrim/el-get/master/el-get-install.el")
|-
+
  (end-of-buffer)
!{{Hl2}}| Usage
+
  (eval-print-last-sexp)))
!{{Hl2}}| Output
+
!{{Hl2}}| Usage
+
!{{Hl2}}| Output
+
|-
+
| <tt><nowiki>{{ns:-2}}</nowiki></tt> or <tt><nowiki>{{ns:Media}}</nowiki></tt>
+
| {{ns:-2}} || ||
+
|-
+
| <tt><nowiki>{{ns:-1}}</nowiki></tt> or <tt><nowiki>{{ns:Special}}</nowiki></tt>
+
| {{ns:-1}} || ||
+
|-
+
| <tt><nowiki>{{ns:0}}</nowiki></tt> or <tt><nowiki>{{ns:}}</nowiki></tt>
+
| {{ns:}}
+
| <tt><nowiki>{{ns:1}}</nowiki></tt> or <tt><nowiki>{{ns:Talk}}</nowiki></tt>
+
| {{ns:1}}
+
|-
+
| <tt><nowiki>{{ns:2}}</nowiki></tt> or <tt><nowiki>{{ns:User}}</nowiki></tt>
+
| {{ns:2}}
+
| <tt><nowiki>{{ns:3}}</nowiki></tt> or <tt><nowiki>{{ns:User talk}}</nowiki></tt>
+
| {{ns:3}}
+
|-
+
| <tt><nowiki>{{ns:4}}</nowiki></tt> or <tt><nowiki>{{ns:Project}}</nowiki></tt>
+
| {{ns:4}}
+
| <tt><nowiki>{{ns:5}}</nowiki></tt> or <tt><nowiki>{{ns:Project talk}}</nowiki></tt>
+
| {{ns:5}}
+
|-
+
| <tt><nowiki>{{ns:6}}</nowiki></tt> or <tt><nowiki>{{ns:File}}</nowiki></tt> or <tt><nowiki>{{ns:Image}}</nowiki></tt>
+
| {{ns:6}}
+
| <tt><nowiki>{{ns:7}}</nowiki></tt> or <tt><nowiki>{{ns:File talk}}</nowiki></tt> or <tt><nowiki>{{ns:Image talk}}</nowiki></tt>
+
| {{ns:7}}
+
|-
+
| <tt><nowiki>{{ns:8}}</nowiki></tt> or <tt><nowiki>{{ns:MediaWiki}}</nowiki></tt>
+
| {{ns:8}}
+
| <tt><nowiki>{{ns:9}}</nowiki></tt> or <tt><nowiki>{{ns:MediaWiki talk}}</nowiki></tt>
+
| {{ns:9}}
+
|-
+
| <tt><nowiki>{{ns:10}}</nowiki></tt> or <tt><nowiki>{{ns:Template}}</nowiki></tt>
+
| {{ns:10}}
+
| <tt><nowiki>{{ns:11}}</nowiki></tt> or <tt><nowiki>{{ns:Template talk}}</nowiki></tt>
+
| {{ns:11}}
+
|-
+
| <tt><nowiki>{{ns:12}}</nowiki></tt> or <tt><nowiki>{{ns:Help}}</nowiki></tt>
+
| {{ns:12}}
+
| <tt><nowiki>{{ns:13}}</nowiki></tt> or <tt><nowiki>{{ns:Help talk}}</nowiki></tt>
+
| {{ns:13}}
+
|-
+
| <tt><nowiki>{{ns:14}}</nowiki></tt> or <tt><nowiki>{{ns:Category}}</nowiki></tt>
+
| {{ns:14}}
+
| <tt><nowiki>{{ns:15}}</nowiki></tt> or <tt><nowiki>{{ns:Category talk}}</nowiki></tt>
+
| {{ns:15}}
+
|}
+
  
===Formatting===
+
(el-get 'sync)
<!--Well gosh, with the source of the examples hidden, who can tell what you are inputting without looking here in the source?-->
+
{| {{prettytable}}
+
!{{Hl2}}| Usage
+
!{{Hl2}}| Input → Output
+
!{{Hl2}}| Description
+
!{{Hl2}}| Version
+
|-
+
|-
+
| <tt><nowiki>{{lc:</nowiki>''string''<nowiki>}}</nowiki></tt>
+
| <tt><nowiki>{{lc:DATA CENTER}}</nowiki></tt> → {{lc:DATA CENTER}}
+
| The lowercase input.
+
| 1.5+
+
|-
+
| <tt><nowiki>{{lcfirst:</nowiki>''string''<nowiki>}}</nowiki></tt>
+
| <tt><nowiki>{{lcfirst:DATA center}}</nowiki></tt> → {{lcfirst:DATA center}}
+
| The input with the <u>very first</u> character lowercase.
+
| 1.5+
+
|-
+
| <tt><nowiki>{{uc:</nowiki>''string''<nowiki>}}</nowiki></tt>
+
| <tt><nowiki>{{uc:text transform}}</nowiki></tt> → {{uc:text transform}}
+
| The uppercase input.
+
| 1.5+
+
|-
+
| <tt><nowiki>{{ucfirst:</nowiki>''string''<nowiki>}}</nowiki></tt>
+
| <tt><nowiki>{{ucfirst:text TRANSFORM}}</nowiki></tt> → {{ucfirst:text TRANSFORM}}
+
| The input with the <u>very first</u> character uppercase.
+
| 1.5+
+
|-
+
| <tt><nowiki>{{formatnum:</nowiki>''unformatted&nbsp;num''<nowiki>}}</nowiki></tt><br /><tt><nowiki>{{formatnum:</nowiki>''formatted&nbsp;num''<nowiki>|R}}</nowiki></tt>
+
| <tt><nowiki>{{formatnum:987654321.654321}}</nowiki></tt><br/> → {{formatnum:987654321.654321}}<br /> <tt><nowiki>{{formatnum:987,654,321.654321|R}}</nowiki></tt><br/> → {{formatnum:987,654,321.654321|R}}
+
| The input with decimal and decimal group separators, and localized digit script, according to the wiki's default locale. The <tt><nowiki>|</nowiki>R</tt> parameter can be used to unformat a number, for use in mathematical situations.
+
| 1.7+<br />{{mediawiki|rev:32012|1.13+}}
+
|-
+
|
+
<code><nowiki>{{#dateformat:</nowiki>''date''<nowiki>}}
+
{{#formatdate:</nowiki>''date''<nowiki>}}
+
{{#dateformat:</nowiki>''date''{{!}}''format''<nowiki>}}
+
{{#formatdate:</nowiki>''date''{{!}}''format''<nowiki>}}</nowiki></code>
+
|
+
<tt><nowiki>{{#dateformat:25 deC 2009|ymd}}</nowiki></tt><br/>
+
→ {{#dateformat:25 deC 2009|ymd}} (your pref),  2009 DeC 25 (default)<br/>
+
<tt><nowiki>{{#formatdate:dec 25,2009|dmy}}</nowiki></tt><br/>
+
→ {{#formatdate:dec 25,2009|dmy}} (your pref), 25 Dec 2009 (default)<br/>
+
<tt><nowiki>{{#dateformat:2009-12-25|mdy}}</nowiki></tt><br/>
+
→ {{#dateformat:2009-12-25|mdy}} (your pref), December 25, 2009 (default)<br/>
+
<tt><nowiki>{{#formatdate:2009 dec 25|ISO 8601}}</nowiki></tt><br/>
+
→ {{#formatdate:2009 dec 25|ISO 8601}} (your pref), 2009-12-25 (default)<br/>
+
<tt><nowiki>{{#dateformat:25 decEmber|mdy}}</nowiki></tt><br/>
+
→ {{#dateformat:25 decEmber|mdy}} (your pref), DecEmber 25 (default)<br/>
+
  
 +
;;;;;;;;;;;;;;;
 +
;; mediawiki ;;
 +
;;;;;;;;;;;;;;;
 +
(require 'mediawiki)
  
Note: In the example above, "your pref" refers to your date preference on the current MediaWiki wiki only.
+
;;;;;;;;;;;;;;;;;;;;
| Formats an unlinked date based on user "Date format" preference, and adds metadata tagging it as a formatted date. For logged-out users and those who have not set a date format in their preferences, dates can be given a default: <tt>mdy</tt>, <tt>dmy</tt>, <tt>ymd</tt>, <tt>ISO&nbsp;8601</tt> (all case sensitive). If only the month and day are given, only <tt>mdy</tt> and <tt>dmy</tt> are valid. If a format is not specified or is invalid, the input format is used as a default. If the supplied date is not recognized as a valid date (specifically, if it contains any metadata such as from a nested use of these or a similar template), it is rendered unchanged, and no (additional) metadata is generated.<br/><small>{{warning}}Although the ISO 8601 standard requires that dates be in the Gregorian calendar, the ISO parameter in this function will still format dates that fall outside the usual Gregorian range (e.g. dates prior to 1583). Also, the magic word cannot properly convert between negative years (used with ISO 8601) and years BC or years BCE (used in general writing).</small>
+
;; Org-mode stuff ;;
| {{mediawiki|rev:48249|1.15+}}
+
;;;;;;;;;;;;;;;;;;;;
|-
+
| <tt><nowiki>{{padleft:xyz|</nowiki>''stringlength''<nowiki>}}</nowiki></tt><br /><tt><nowiki>{{padleft:xyz|</nowiki>''strlen''<nowiki>|</nowiki>''char''<nowiki>}}</nowiki></tt><br /><tt><nowiki>{{padleft:xyz|</nowiki>''strlen''<nowiki>|</nowiki>''string''<nowiki>}}</nowiki></tt>
+
| <tt><nowiki>{{padleft:xyz|5}}</nowiki></tt> → {{padleft:xyz|5}}<br /> <tt><nowiki>{{padleft:xyz|5|_}}</nowiki></tt> → {{padleft:xyz|5|_}} <tt><nowiki>{{padleft:xyz|5|abc}}</nowiki></tt> → {{padleft:xyz|5|abc}}
+
| Inserts a string of padding characters (character chosen in third parameter; default '0') of a specified length (second parameter) next to a chosen base character or variable (first parameter). The final digits or characters in the base replace the final characters in the padding; i.e. <nowiki>{{padleft:44|3|0}}</nowiki> produces {{padleft:44|3}}. The padding string may be truncated if its length does not evenly divide the required number of characters.<br />'''{{mediawiki|bugzilla:16852|bug}} (fixed in {{mediawiki|rev:45734|r45734}}):''' multibyte characters are interpreted as two characters, which can skew width. These also cannot be used as padding characters.
+
| 1.8+
+
|-
+
| <tt><nowiki>{{padright:xyz|</nowiki>''stringlength''<nowiki>}}</nowiki></tt><br /><tt><nowiki>{{padright:xyz|</nowiki>''strlen''<nowiki>|</nowiki>''char''<nowiki>}}</nowiki></tt><br /><tt><nowiki>{{padright:xyz|</nowiki>''strlen''<nowiki>|</nowiki>''string''<nowiki>}}</nowiki></tt>
+
| <tt><nowiki>{{padright:xyz|5}}</nowiki></tt> → {{padright:xyz|5}}<br /> <tt><nowiki>{{padright:xyz|5|_}}</nowiki></tt> → {{padright:xyz|5|_}} <tt><nowiki>{{padright:xyz|5|abc}}</nowiki></tt> → {{padright:xyz|5|abc}}
+
| Identical to padleft, but adds padding characters to the right side.
+
|
+
|-
+
| <tt><nowiki>{{plural:2|</nowiki>''is''<nowiki>|</nowiki>''are''<nowiki>}}</nowiki></tt>
+
| <tt><nowiki>{{plural:1|is|are}}</nowiki></tt> → {{plural:1|is|are}}<br /> <tt><nowiki>{{plural:2|is|are}}</nowiki></tt> → {{plural:2|is|are}}
+
| Outputs the correct given pluralization form (parameters except first) depending on the count (first parameter). Plural transformations are used for languages like Russian based on "count mod 10".
+
|
+
|-
+
| <tt><nowiki>{{grammar:N|</nowiki>''noun''<nowiki>}}</nowiki></tt>
+
|
+
| Outputs the correct inflected form of the given word described by the inflection code after the colon (language-dependent).  Grammar transformations are used for inflected languages like Polish.  See also {{mediawiki|Manual:$wgGrammarForms}}.
+
| 1.7+
+
|}
+
  
===Miscellaneous===
+
;; Tell emacs where org-mode is
{| {{prettytable|class="plainlinks"}}
+
;;(setq load-path (cons "/usr/share/emacs/site-lisp/org-mode/" load-path))
!{{Hl2}}| Usage
+
;;(setq load-path (cons "/usr/share/emacs/site-lisp/org-mode/contrib/" load-path))
!{{Hl2}}| Output
+
(require 'org-install) ;; Tell emacs to use org-mode
!{{Hl2}}| Description
+
(add-to-list 'auto-mode-alist '("\\.org$" . org-mode)) ;; Turn on org-mode for all *.org files
!{{Hl2}}| Version
+
|-
+
| <tt><nowiki>{{int:</nowiki>''message name''<nowiki>}}</nowiki>
+
| <tt><nowiki>{{int:</nowiki>edit<nowiki>}}</nowiki></tt> &rarr; '''{{int:edit}}''' <br /><small>''(depends on user language, try: [{{fullurl:{{FULLPAGENAME}}|uselang=fr}}#Miscellaneous fr] &bull;[{{fullurl:{{FULLPAGENAME}}|uselang=ja}}#Miscellaneous ja])''</small>
+
| Internationalizes (translates) the given '''int'''erface (MediaWiki namespace) message into the user language. ''Note that this can damage/confuse cache consistency, see [[bugzilla:14404|bug 14404]].''
+
|
+
|-
+
| <tt><nowiki>{{#language:</nowiki>''language code''<nowiki>}}</nowiki></tt><br /><tt><nowiki>{{#language:ar}}</nowiki></tt><br /><tt><nowiki>{{#language:th}}</nowiki></tt>
+
| {{#language:language code}}<br />{{#language:ar}}<br />{{#language:th}}
+
| The native name for the given language code, in accordance with [[w:ISO 639|ISO 639]].
+
| {{mediawiki|rev:14490|1.7+}}
+
|-
+
| <tt><nowiki>{{#special:</nowiki>''special page name''<nowiki>}}</nowiki><br /><nowiki>{{#special:userlogin}}</nowiki></tt>
+
| {{#special:special page name}}<br />{{#special:userlogin}}
+
| The localized name for the given canonical Special: page.
+
| {{mediawiki|rev:17321|1.9+}}
+
|-
+
| <tt><nowiki>{{#tag:</nowiki>''tagname''<br><nowiki>|</nowiki>''content''<br><nowiki>|</nowiki>''parameter1=value1''<br /><nowiki>|</nowiki>''parameter2=value2''<br /><nowiki>}}</nowiki></tt>
+
| ''(depends on parser tag)''
+
| Alias for XML-style parser or extension tags, but parsing wiki code. Inner content can be passed as first parameter, and attributes as subsequent ones:
+
  
<code><</code>''tagname'' ''attribute1''="''value1''" ''attribute2''="''value2''"<code>></code> ''content'' <code></</code>''tagname'' <code>></code> &rarr; <code><nowiki>{{#tag:</nowiki></code>''tagname''<code><nowiki>|</nowiki></code>''content''<code><nowiki>|</nowiki></code>''attribute1''=''value1''<code><nowiki>|</nowiki></code>''attribute2''=''value2''<code><nowiki>}}</nowiki></code>
+
;; Some key sequences
 +
(define-key global-map "\C-cl" 'org-store-link)
 +
(define-key global-map "\C-ca" 'org-agenda)
 +
(global-set-key [f9]    'org-archive-subtree-default)
  
'''Warning''' : You must write <code><nowiki>{{#tag:</nowiki></code>''tagname''<code><nowiki>||</nowiki></code>''attribute1''=''value1''<code><nowiki>|</nowiki></code>''attribute2''=''value2''<code><nowiki>}}</nowiki></code> to pass an empty content.
+
(setq org-log-done t) ;; I have no idea what this does, it was in the manual -- think it controls whether or not to log time completed for tasks
| {{mediawiki|rev:29482|1.12+}}
+
|-
+
| <tt><nowiki>{{gender:</nowiki>''username''<br /><nowiki>|</nowiki>''return text if user is male''<br /><nowiki>|</nowiki>''return text if user is female''<br /><nowiki>|</nowiki>''return text if user hasn't defined their gender''<nowiki>}}</nowiki></tt>
+
| ''(depends on the named user's gender)''
+
| A switch for the gender set in [[Special:Preferences]]
+
| {{mediawiki|rev:46247|1.15+}}
+
|}
+
  
{{languages}}
+
(setq org-directory "~/notes")
  
[[Category:Help|{{PAGENAME}}]]
+
;; Files that should be included in agenda views:
[[Category:Time|{{PAGENAME}}]]
+
(setq org-agenda-files (list "~/notes/business.org"
[[Category:Magic words|{{PAGENAME}}]]
+
                            "~/notes/personal.org"
 +
                            "~/notes/projects/"
 +
    "~/notes/projects/writing/"))
 +
 
 +
(setq org-todo-keywords '((type "TODO" "Postponed" "Upcoming" "Doing" "|" "DONE(#)"))) ;; TODO workflows
 +
 
 +
(setq org-tag-alist '(("work" . ?k) ("personal" . ?p) ("organization" . ?o) ("writing" . ?w) ("code" . ?c) ("blog" . ?b) ("funtoo" . ?f) ("social" . ?s))) ;; Most-used tags, with shortcuts
 +
 
 +
;; Capture stuff
 +
(setq org-default-notes-file "~/.org/capture.org")
 +
(define-key global-map "\C-cc" 'org-capture)
 +
(setq org-refile-targets '((org-agenda-files :level . 1)(org-agenda-files :level . 2)))
 +
(setq org-refile-use-outline-path 'file)
 +
 
 +
(setq org-capture-templates
 +
      '(("t" "Todo" entry (file+headline "~/.org/capture.org" "Tasks")
 +
            "- TODO %?\n  %i\n  %a")
 +
        ("j" "Journal" entry (file+datetree "~/.org/journal.org")
 +
            "- %?\nEntered on %U\n  %i\n  %a")))
 +
 
 +
(setq org-mobile-directory "~/Dropbox/MobileOrg")
 +
(setq org-mobile-use-encryption)
 +
(setq org-mobile-use-encryption-password "PASSWORD")
 +
(setq org-mobile-inbox-for-pull "~/notes/mobileorg/inbox.org")
 +
 
 +
;;;;;;;;;;;;;;;;;;;
 +
;; Markdown Mode ;;
 +
;;;;;;;;;;;;;;;;;;;
 +
 
 +
(require 'markdown-mode)
 +
(add-to-list 'auto-mode-alist '("\\.markdown$" . markdown-mode))
 +
(add-to-list 'auto-mode-alist '("\\.md$" . markdown-mode))
 +
 
 +
;;;;;;;;;;;;;;;;
 +
;; Python IDE ;;
 +
;;;;;;;;;;;;;;;;
 +
(c-add-style
 +
  "python-new"
 +
  '((indent-tabs-mode . nil)
 +
    (fill-column      . 78)
 +
    (c-basic-offset  . 4)
 +
    (c-offsets-alist  . ((substatement-open . 0)
 +
                          (inextern-lang    . 0)
 +
                          (arglist-intro    . +)
 +
                          (knr-argdecl-intro . +)))
 +
    (c-hanging-braces-alist . ((brace-list-open)
 +
                                (brace-list-intro)
 +
                                (brace-list-close)
 +
                                (brace-entry-open)
 +
                                (substatement-open after)
 +
                                (block-close . c-snug-do-while)))
 +
    (c-block-comment-prefix . "* "))
 +
)
 +
 
 +
;; This is a very crude hook that auto-selects the C style depending on
 +
;; whether it finds a line starting with tab in the first 3000 characters
 +
;; in the file
 +
(defun c-select-style ()
 +
  (save-excursion
 +
    (if (re-search-forward "^\t" 3000 t)
 +
        (c-set-style "python")
 +
      (c-set-style "python-new"))))
 +
(add-hook 'c-mode-hook 'c-select-style)
 +
 
 +
;;;;;;;;;;;;
 +
;; Django ;;
 +
;;;;;;;;;;;;
 +
(yas/initialize)
 +
(add-to-list 'load-path "~/.emacs.d/el-get/django-mode/")
 +
(require 'django-html-mode)
 +
(require 'django-mode)
 +
(yas/load-directory "~/.emacs.d/el-get/django-mode/snippets")
 +
(add-to-list 'auto-mode-alist '("\\.djhtml$" . django-html-mode))
 +
 
 +
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 +
;; Document Engineering (AUCTeX + ConTeXt) ;;
 +
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 +
(load "auctex.el" nil t t)
 +
(load "preview-latex.el" nil t t)
 +
 
 +
(setq TeX-auto-save 1)
 +
(setq TeX-parse-self 1)
 +
(setq TeX-auto-untabify 1)
 +
(setq TeX-display-help 1)
 +
(setq TeX-save-query nil)
 +
(setq TeX-clean-confirm nil)
 +
(setq-default TeX-master nil)
 +
 
 +
(add-hook 'TeX-mode-hook (lambda () (TeX-fold-mode 1)))
 +
(add-hook 'TeX-mode-hook (lambda () (TeX-source-specials-mode 1)))
 +
(add-hook 'TeX-mode-hook (lambda () (TeX-toggle-debug-bad-boxes)))
 +
(add-hook 'TeX-mode-hook (lambda () (TeX-toggle-debug-warnings)))
 +
(add-hook 'TeX-mode-hook (lambda () (outline-minor-mode)))
 +
(add-hook 'TeX-mode-hook (lambda () (abbrev-mode t)))
 +
(add-hook 'TeX-mode-hook (lambda () (auto-fill-mode 1)))
 +
 
 +
(add-hook 'TeX-mode-hook 'LaTeX-math-mode)
 +
 
 +
(autoload 'etexshow "etexshow" "Browser for ConTeXt commands." t)
 +
 
 +
(setq etexshow-xml-files-alist
 +
  `((,(concat emacs-root-dir "libs/etexshow/cont-en.xml") .
 +
      ,(concat "/tmp/cont-en.cache"))))
 +
 
 +
(setq etexshow-comment-file
 +
  (concat emacs-root-dir "libs/etexshow/cont-en-comments.xml"))
 +
 
 +
(setq TeX-PDF-mode 1)
 +
(setq revert-without-query '(".+pdf$"))
 +
(add-hook 'doc-view-mode-hook 'auto-revert-mode)
 +
 
 +
;;;;;;;;;;
 +
;; bbdb ;;
 +
;;;;;;;;;;
 +
(setq bbdb-file "~/.emacs.d/.bbdb")
 +
(require 'bbdb)
 +
(bbdb-initialize)
 +
(setq
 +
bbdb-offer-save 1                        ;; 1 means save-without-asking
 +
bbdb-use-pop-up t                        ;; allow popups for addresses
 +
bbdb-electric-p t                        ;; be disposable with SPC
 +
bbdb-popup-target-lines 1                ;; very small
 +
bbdb-dwim-net-address-allow-redundancy t  ;; always use full name
 +
bbdb-quiet-about-name-mismatches 2        ;; show name-mismatches 2 secs
 +
bbdb-always-add-address t                ;; add new addresses to existing...
 +
                                          ;; ...contacts automatically
 +
bbdb-canonicalize-redundant-nets-p t      ;; x@foo.bar.cx => x@bar.cx
 +
bbdb-completion-type nil                  ;; complete on anything
 +
bbdb-complete-name-allow-cycling t        ;; cycle through matches
 +
                                          ;; this only works partially
 +
bbdb-message-caching-enabled t            ;; be fast
 +
bbdb-use-alternate-names t                ;; use AKA
 +
bbdb-elided-display t                    ;; single-line addresses
 +
;; auto-create addresses from mail
 +
bbdb/mail-auto-create-p 'bbdb-ignore-some-messages-hook
 +
bbdb-ignore-some-messages-alist          ;; don't ask about fake addresses
 +
;; NOTE: there can be only one entry per header (such as To, From)
 +
;; http://flex.ee.uec.ac.jp/texi/bbdb/bbdb_11.html
 +
'(( "From" . "no.?reply\\|DAEMON\\|daemon\\|facebookmail\\|twitter")))
 +
 
 +
;;;;;;;;;;;;;;;;;
 +
;; Jabber Mode ;;
 +
;;;;;;;;;;;;;;;;;
 +
 
 +
(require 'jabber-autoloads)
 +
(setq jabber-account-list '(
 +
                            ("USER@jabber-server.tld"
 +
                            (:password . "PASSWORD")
 +
                            )
 +
                          )
 +
)
 +
(setq
 +
    jabber-history-enabled t
 +
    jabber-use-global-history nil
 +
    jabber-backlog-number 40
 +
    jabber-backlog-days 30
 +
)
 +
 
 +
(add-hook 'jabber-chat-mode-hook 'goto-address)
 +
 
 +
(load "~/.emacs.d/plugins/autosmiley.el")
 +
(require 'autosmiley)
 +
(add-hook 'jabber-chat-mode-hook 'autosmiley-mode)
 +
 
 +
(defvar libnotify-program "/usr/bin/notify-send")
 +
 
 +
(defun notify-send (title message)
 +
  (start-process "notify" " notify"
 +
                libnotify-program "--expire-time=4000" title message))
 +
 
 +
(defun libnotify-jabber-notify (from buf text proposed-alert)
 +
  "(jabber.el hook) Notify of new Jabber chat messages via libnotify"
 +
  (when (or jabber-message-alert-same-buffer
 +
                        (not (memq (selected-window) (get-buffer-window-list buf))))
 +
    (if (jabber-muc-sender-p from)
 +
        (notify-send (format "(PM) %s"
 +
                            (jabber-jid-displayname (jabber-jid-user from)))
 +
                    (format "%s: %s" (jabber-jid-resource from) text)))
 +
    (notify-send (format "%s" (jabber-jid-displayname from))
 +
                text)))
 +
 
 +
(add-hook 'jabber-alert-message-hooks 'libnotify-jabber-notify)
 +
 
 +
(defun jabber-visit-history (jid)
 +
  "Visit jabber history with JID in a new buffer.
 +
 
 +
Performs well only for small files. Expect to wait a few seconds
 +
for large histories. Adapted from `jabber-chat-create-buffer'."
 +
  (interactive (list (jabber-read-jid-completing "JID: ")))
 +
  (let ((buffer (generate-new-buffer (format "*-jabber-history-%s-*"
 +
                                            (jabber-jid-displayname jid)))))
 +
    (switch-to-buffer buffer)
 +
    (make-local-variable 'jabber-chat-ewoc)
 +
    (setq jabber-chat-ewoc (ewoc-create #'jabber-chat-pp))
 +
    (mapc 'jabber-chat-insert-backlog-entry
 +
          (nreverse (jabber-history-query nil nil t t "."
 +
                                          (jabber-history-filename jid))))
 +
    (view-mode)))
 +
 
 +
;;;;;;;;;;
 +
;; EMMS ;;
 +
;;;;;;;;;;
 +
(require 'emms-setup)
 +
(emms-devel)
 +
(emms-default-players)
 +
 
 +
;;;;;;;;;
 +
;; ERC ;;
 +
;;;;;;;;;
 +
(require 'erc)
 +
(require 'erc-extension)
 +
(require 'erc-services)
 +
(require 'erc-tex)
 +
(require 'tls)
 +
(require 'erc-nicklist)
 +
 
 +
(and
 +
(require 'erc-highlight-nicknames)
 +
(add-to-list 'erc-modules 'highlight-nicknames)
 +
(erc-update-modules))
 +
 
 +
(erc-services-mode 1)
 +
 
 +
(setq tls-program '("openssl s_client -connect %h:%p -no_ssl2 -ign_eof
 +
                            -CAfile /home/USER/.ssl/USER.pem
 +
                            -cert /home/USER/.ssl/USER.pem"
 +
                    "gnutls-cli --priority secure256
 +
                                --x509cafile /home/USER/.ssl/USER.pem
 +
                                --x509certfile /home/USER/.ssl/USER.pem -p %p %h"
 +
                    "gnutls-cli --priority secure256 -p %p %h"))
 +
 
 +
(autoload 'erc-nick-notify-mode "erc-nick-notify" "Minor mode that calls `erc-nick-notify-cmd' when his nick gets mentioned in an erc channel" t)
 +
(eval-after-load 'erc '(erc-nick-notify-mode t))
 +
(defun irc-erc ()
 +
  "Fire up IRC."
 +
  (interactive)
 +
  (erc-tls :server "chat.freenode.net" :port 7000 :nick "USER" :full-name "FULL NAME" :password "PASSWORD"))
 +
 
 +
(setq erc-autojoin-channels-alist '(("freenode.net" "#frogandowl" "#funtoo" "#funtoo-quebec" "#syntazia" "#context" "#nginx" "#emacs" "#openvswitch")))
 +
(setq erc-log-channels-directory "~/.erc/logs/")
 +
(setq erc-log-insert-log-on-open nil)
 +
(setq erc-save-buffer-on-part nil
 +
      erc-save-buffer-queries-on-quit nil
 +
      erc-log-write-after-send t
 +
      erc-log-write-after-insert t)
 +
 
 +
(require 'smiley)
 +
    (add-to-list 'smiley-regexp-alist '("\\(:-?]\\)\\W" 1 "forced"))
 +
    (add-to-list 'smiley-regexp-alist '("\\s-\\(:-?/\\)\\W" 1 "wry"))
 +
    (add-to-list 'smiley-regexp-alist '("\\(:-?(\\)\\W" 1 "sad"))
 +
    (add-to-list 'smiley-regexp-alist '("\\((-?:\\)\\W" 1 "reverse-smile"))
 +
    (add-to-list 'smiley-regexp-alist '("\\(:-?D\\)\\W" 1 "grin"))
 +
    (add-to-list 'smiley-regexp-alist '("\\(:-?P\\)\\W" 1 "poke"))
 +
 
 +
;; (setq smiley-cached-regexp-alist nil)
 +
;; (smiley-update-cache)
 +
 
 +
;;;;;;;;;;;;;;;;
 +
;; Wanderlust ;;
 +
;;;;;;;;;;;;;;;;
 +
(autoload 'wl "wl" "Wanderlust" t)
 +
 
 +
;;;;;;;;;;;;;;;
 +
;; mailcrypt ;;
 +
;;;;;;;;;;;;;;;
 +
(require 'mailcrypt)
 +
(add-hook 'wl-summary-mode-hook 'mc-install-read-mode)
 +
(add-hook 'wl-mail-setup-hook 'mc-install-write-mode)
 +
 
 +
(defun mc-wl-verify-signature ()
 +
  (interactive)
 +
  (save-window-excursion
 +
    (wl-summary-jump-to-current-message)
 +
    (mc-verify)))
 +
 
 +
(defun mc-wl-decrypt-message ()
 +
  (interactive)
 +
  (save-window-excursion
 +
    (wl-summary-jump-to-current-message)
 +
    (let ((inhibit-read-only t))
 +
      (mc-decrypt))))
 +
 
 +
(eval-after-load "mailcrypt"
 +
  '(setq mc-modes-alist
 +
        (append
 +
          (quote
 +
          ((wl-draft-mode (encrypt . mc-encrypt-message)
 +
                          (sign . mc-sign-message))
 +
            (wl-summary-mode (decrypt . mc-wl-decrypt-message)
 +
                            (verify . mc-wl-verify-signature))))
 +
          mc-modes-alist)))
 +
 
 +
;;;;;;;;;;;;;;;;;;;;;
 +
;; notify function ;;
 +
;;;;;;;;;;;;;;;;;;;;;
 +
(defun djcb-popup (title msg &optional icon sound)
 +
  "Show a popup if we're on X, or echo it otherwise; TITLE is the title of the message, MSG is the context. Optionally, you can provide an ICON and a sound to be played"
 +
  (interactive)
 +
  (when sound (shell-command
 +
              (concat "mplayer2 -really-quiet " sound " 2> /dev/null")))
 +
  (if (eq window-system 'x)
 +
      (shell-command (concat "notify-send "
 +
                           
 +
                            (if icon (concat "-i " icon) "")
 +
                            " '" title "' '" msg "'"))
 +
    ;; text only version
 +
    (message (concat title ": " msg))))
 +
 
 +
;; the appointment notification facility
 +
(setq
 +
appt-message-warning-time 15 ;; warn 15 min in advance
 +
appt-display-mode-line t    ;; show in the modeline
 +
appt-display-format 'window) ;; usr our func
 +
(appt-activate t)            ;; active appt (appointment notification)
 +
(display-time)
 +
 
 +
;; update appt each time agenda opened
 +
(add-hook 'org-finalize-agenda-hook 'org-agenda-to-appt)
 +
 
 +
;; our little facade-function for djcb-popup
 +
(defun djcb-appt-display (min-to-app new-time msg)
 +
  (djcb-popup (format "Appointment in %s minute(s)" min-to-app) msg
 +
              "/usr/share/icons/gnome/32x32/status/appointment-soon.png"
 +
              "/usr/share/sounds/purple/alert.wav"))
 +
(setq appt-disp-window-function (function djcb-appt-display))
 +
 
 +
;;;;;;;;;;;;;;;;;;;;;;;;;;
 +
;; Custom Variable sets ;;
 +
;;;;;;;;;;;;;;;;;;;;;;;;;;
 +
(custom-set-variables
 +
  ;; custom-set-variables was added by Custom.
 +
  ;; If you edit it by hand, you could mess it up, so be careful.
 +
  ;; Your init file should contain only one such instance.
 +
  ;; If there is more than one, they won't work right.
 +
'(TeX-command-list (quote (("TeX" "%(PDF)%(tex) %`%S%(PDFout)%(mode)%' %t" TeX-run-TeX nil (plain-tex-mode texinfo-mode ams-tex-mode) :help "Run plain TeX") ("LaTeX" "%`%l%(mode)%' %t" TeX-run-TeX nil (latex-mode doctex-mode) :help "Run LaTeX") ("Makeinfo" "makeinfo %t" TeX-run-compile nil (texinfo-mode) :help "Run Makeinfo with Info output") ("Makeinfo HTML" "makeinfo --html %t" TeX-run-compile nil (texinfo-mode) :help "Run Makeinfo with HTML output") ("AmSTeX" "%(PDF)amstex %`%S%(PDFout)%(mode)%' %t" TeX-run-TeX nil (ams-tex-mode) :help "Run AMSTeX") ("ConTeXt MKIV" "context %t" TeX-run-TeX nil (context-mode) :help "Run ConTeXt MKIV") ("ConTeXt" "texexec --once --texutil %(execopts)%t" TeX-run-TeX nil (context-mode) :help "Run ConTeXt once") ("ConTeXt Full" "texexec %(execopts)%t" TeX-run-TeX nil (context-mode) :help "Run ConTeXt until completion") ("BibTeX" "bibtex %s" TeX-run-BibTeX nil t :help "Run BibTeX") ("View" "%V" TeX-run-discard-or-function t t :help "Run Viewer") ("Print" "%p" TeX-run-command t t :help "Print the file") ("Queue" "%q" TeX-run-background nil t :help "View the printer queue" :visible TeX-queue-command) ("File" "%(o?)dvips %d -o %f " TeX-run-command t t :help "Generate PostScript file") ("Index" "makeindex %s" TeX-run-command nil t :help "Create index file") ("Check" "lacheck %s" TeX-run-compile nil (latex-mode) :help "Check LaTeX file for correctness") ("Spell" "(TeX-ispell-document \"\")" TeX-run-function nil t :help "Spell-check the document") ("Clean" "TeX-clean" TeX-run-function nil t :help "Delete generated intermediate files") ("Clean All" "(TeX-clean t)" TeX-run-function nil t :help "Delete generated intermediate and output files") ("Other" "" TeX-run-command t t :help "Run an arbitrary command"))))
 +
'(column-number-mode t)
 +
'(erc-modules (quote (autojoin bbdb button completion fill irccontrols list log match menu move-to-prompt netsplit networks noncommands readonly ring services smiley stamp spelling track)))
 +
'(mediawiki-site-alist (quote (("Funtoo" "http://www.funtoo.org/" "USER" "PASSWORD" "")))))
 +
(custom-set-faces
 +
  ;; custom-set-faces was added by Custom.
 +
  ;; If you edit it by hand, you could mess it up, so be careful.
 +
  ;; Your init file should contain only one such instance.
 +
  ;; If there is more than one, they won't work right.
 +
)
 +
 
 +
;;;;;;;;;;;;;;;;;;
 +
;; Color-Themes ;;
 +
;;;;;;;;;;;;;;;;;;
 +
;;(add-to-list 'load-path "/usr/share/emacs/site-lisp/color-theme/color-theme.el")
 +
;;(add-to-list 'load-path "~/.emacs.d/themes/")
 +
(require 'color-theme)
 +
(color-theme-initialize)
 +
;;(color-theme-subtle-hacker)
 +
(color-theme-twilight)
 +
;;(eval-after-load "color-theme"
 +
;;  '(progn
 +
;;    (color-theme-initialize)
 +
;;    (require 'color-theme-citrus)
 +
;;    (require 'color-theme-candy)
 +
;;    (require 'color-theme-autumn-leaves)
 +
;;    (require 'color-theme-inthedark)
 +
;;    (require 'color-theme-marine)
 +
;;    (require 'color-theme-october)
 +
;;    (require 'color-theme-eatyourgreens)
 +
;;    (require 'color-theme-august)
 +
;;    (require 'color-theme-saddle-2)
 +
;;    (color-theme-saddle-2)))
 +
;;    (color-theme-subtle-hacker)))
 +
 
 +
(setq css-indent-offset 2)
 +
</pre>
 +
 
 +
==== .wl ====
 +
<pre>
 +
;; load bbdb support
 +
(require 'bbdb-wl)
 +
(bbdb-wl-setup)
 +
 
 +
;; setup from where to get addresses
 +
(setq bbdb-wl-folder-regexp "^\.INBOX|^\.inbox|^\.Sent|^\.sent|^\.\[IMAPS\]\\Sent")
 +
 
 +
;; define keybinding
 +
(define-key wl-draft-mode-map (kbd "<C-tab>") 'bbdb-complete-name)
 +
 
 +
;; set multiple e-mail addresses
 +
(setq wl-user-mail-address-list (quote ("User@googlemail.com" "USER@own-server.tld")))
 +
 
 +
;; handle ("d") mark
 +
;; remove = instant removal (same as "D"), thrash = move to wl-trash-folder
 +
;; string = move to string
 +
(setq wl-dispose-folder-alist
 +
      '(
 +
        ("\.\*googlemail\\.com" "%[Imap]/Trash:"User@googlemail.com"/clear@imap.gmail.com:993!")
 +
        ("\.\*@own\-\server\\.tld" "%INBOX.Trash:"USER"/clear@imap.own-server.tld")
 +
))
 +
 
 +
;; notify hook
 +
(add-hook 'wl-biff-notify-hook
 +
          (lambda()
 +
            (djcb-popup "Wanderlust" "You have new mail!"
 +
                        "/usr/share/icons/gnome/32x32/status/mail-unread.png"
 +
                        "/usr/share/sounds/purple/alert.wav")))
 +
 
 +
;; timer settings
 +
(setq
 +
wl-biff-check-interval 30 ;; check every 30 seconds
 +
wl-biff-use-idle-timer t) ;; in the background
 +
 
 +
;; Name of top-folder, default "Desktop"
 +
(setq wl-folder-desktop-name "e-Mail")
 +
 
 +
;; select correct email address when we _start_ writing a draft.
 +
(add-hook 'wl-mail-setup-hook 'wl-draft-config-exec)
 +
 
 +
(setq wl-draft-config-alist
 +
      '(
 +
        ((string-match "googlemail.com" wl-draft-parent-folder)
 +
        (template . "User"))
 +
        ((string-match "own-server.tld" wl-draft-parent-folder)
 +
        (template . "USER"))
 +
))
 +
 
 +
;; choose template with C-c C-j
 +
(setq wl-template-alist
 +
      '(("User"
 +
        (wl-from . "Full Name <User@googlemail.com>")
 +
        ("From" . wl-from)
 +
        (wl-smtp-posting-user . "User")
 +
        (wl-smtp-posting-server . "smtp.gmail.com")
 +
        (wl-smtp-authenticate-type . "plain")
 +
        (wl-smtp-connection-type . 'starttls)
 +
        (wl-smtp-posting-port . 587)
 +
        (wl-local-domain . "googlemail.com")
 +
        (wl-message-id-domain . "smtp.gmail.com")
 +
       
 +
        (wl-fcc .  "%[IMAPS]/Sent:\"User@googlemail.com\"/clear@imap.gmail.com:993!")
 +
        (wl-draft-folder .  "%[IMAPS]/Draft:\"User@googlemail.com\"/clear@imap.gmail.com:993!")
 +
        )
 +
        ("USER"
 +
        (wl-from  . "Full Name <USER@own-server.tld>")
 +
        ("From"  . wl-from)
 +
        (wl-smtp-posting-user  . "USER")
 +
        (wl-smtp-posting-server  . "smtp.own-server.tld")
 +
        (wl-local-domain . "own-server.tld")
 +
       
 +
        (wl-fcc  "%INBOX.Sent:USER/digest-md5@imap.own-server.tld:143")
 +
        (wl-draft-folder  "%INBOX.Drafts:USER/digest-md5@imap.own-server.tld:143")
 +
        )
 +
      )
 +
)
 +
 
 +
(define-key wl-template-mode-map (kbd "<right>") 'wl-template-next)
 +
(define-key wl-template-mode-map (kbd "<left>") 'wl-template-prev)
 +
 
 +
(setq wl-default-spec "%")
 +
 
 +
(setq wl-fcc-force-as-read t)
 +
(setq wl-auto-save-drafts-interval nil)
 +
</pre>
 +
 
 +
==== .folders ====
 +
<pre>
 +
User@googlemail{
 +
        %INBOX:"User@googlemail.com"/clear@imap.gmail.com:993!    "Inbox"
 +
        [IMAPS-gmail]{
 +
                %[IMAPS]/Sent:"User@googlemail.com"/clear@imap.gmail.com:993!      "Sent"
 +
                %[IMAPS]/Draft:"User@googlemail.com"/clear@imap.gmail.com:993!      "Draft"
 +
                %[IMAPS]/Spam:"User@googlemail.com"/clear@imap.gmail.com:993!      "Spam"
 +
                %[IMAPS]/Trash:"User@googlemail.com"/clear@imap.gmail.com:993!      "Trash"
 +
        }
 +
}
 +
USER@own-server.tld{
 +
        %INBOX:USER/digest-md5@imap.own-server.tld  "Inbox"
 +
        %INBOX.Sent:USER/digest-md5@imap.own-server.tld "Sent"
 +
        %INBOX.Drafts:USER/digest-md5@imap.own-server.tld "Drafts"
 +
}
 +
</pre>
 +
 
 +
[[Category:HOWTO]]
 +
[[Category:Featured]]

Revision as of 17:35, 22 February 2014

Emacs-logo.png

Emacs is a famous text editor, famous by its flexibility and extensibility. One manual describes it as "the extensible, customizable, self-documenting, real-time display editor".

This page is designed to give users a good place to share their config and settings for a nice emacs setup.

Installing emacs

To install app-editors/emacs (package not on wiki - please add), run the following command:

# emerge -av emacs

for the standard gnu emacs app-editors/xemacs (package not on wiki - please add) and

# emerge -av xemacs

for the 1980 created fork of emacs, both should handle the same, while emacs on its own stands here for both. If you install additional extensions for both you might need to add app-emacs or app-xemacs to the package as there are two different versions for both.

What emacs is and what it is not

  1. Emacs is primarily a text editor and not a word processor, it concentrates on manipulating any kind of text, rather than manipulating the font and look. It is client and GUI based, so can be used on local box in graphical environments with a GUI and remote on a server in a client mode.
  2. Emacs provides commands for manipulate every kind of text and syntax highlighting.

Customizability

Emacs is highly customizable:

  • the customize extension, which allows settings of customized variables, such as color themes, graphical interface, etc. This part is intended for emacs beginners, who do not want to work with Emacs lisp code.
  • combine keystrokes to execute complex makros.
  • using Emacs Lisp. Designed for the emacs professional.

Extensibility

As a result of the above points, Emacs behaviour can be easily definied to all text behavings without limit. Like some of the examples below show you:

  • AUCTeX, A suite for LaTeX and other TeX versions,
  • ERC, A Emacs IRC client,
  • ORG-mode, A Emacs PIM and Orga tool
  • Wanderlust, A highly flexible Mail tool for Emacs

User Configs

golodhrim's config

.emacs

Edit the file ~/.emacs:

;;;;;;;;;;;;;;;;;;;;;;
;; General Settings ;;
;;;;;;;;;;;;;;;;;;;;;;

(setq emacs-root-dir (concat (getenv "HOME") "/em/"))

(setq inhibit-startup-message t)    ;; Suppress the startup message
(setq standard-indent 4)            ;; Default indent level is 3 chars
(setq-default indent-tabs-mode nil) ;; Indent with spaces, not tabs

(setq make-backup-files nil)          ;; Enable backup files.
(setq version-control nil)            ;; Enable versioning with default values
(setq backup-directory-alist (quote ((".*" . "~/.emacs_backups/"))))  ;; Save all backup file in this directory.

(line-number-mode 1)                ;; Show line-number in the mode line
(column-number-mode 1)              ;; Show column-number in the mode line

(setq auto-fill-mode 1)             ;; Line wrap

(set-default-font "Inconsolata-12")

(setq browse-url-browser-function 'browse-url-generic
      browse-url-generic-program "google-chrome")

(global-set-key (kbd "C-<prior>") 'previous-buffer)
(global-set-key (kbd "C-<next>" ) 'next-buffer    )


(setq load-path (cons "~/.emacs.d/plugins" load-path))

(setq global-font-lock-mode 1)

(show-paren-mode 1)

;;;;;;;;;;;;;;;;;;
;; el-get setup ;;
;;;;;;;;;;;;;;;;;;
(add-to-list 'load-path "~/.emacs.d/el-get/el-get") 
(unless (require 'el-get nil t) 
  (with-current-buffer 
    (url-retrieve-synchronously "https://raw.github.com/golodhrim/el-get/master/el-get-install.el") 
  (end-of-buffer) 
  (eval-print-last-sexp)))

(el-get 'sync)

;;;;;;;;;;;;;;;
;; mediawiki ;;
;;;;;;;;;;;;;;;
(require 'mediawiki)

;;;;;;;;;;;;;;;;;;;;
;; Org-mode stuff ;;
;;;;;;;;;;;;;;;;;;;;

;; Tell emacs where org-mode is
;;(setq load-path (cons "/usr/share/emacs/site-lisp/org-mode/" load-path))
;;(setq load-path (cons "/usr/share/emacs/site-lisp/org-mode/contrib/" load-path))
(require 'org-install) ;; Tell emacs to use org-mode
(add-to-list 'auto-mode-alist '("\\.org$" . org-mode)) ;; Turn on org-mode for all *.org files

;; Some key sequences
(define-key global-map "\C-cl" 'org-store-link) 
(define-key global-map "\C-ca" 'org-agenda)
(global-set-key [f9]    'org-archive-subtree-default)

(setq org-log-done t) ;; I have no idea what this does, it was in the manual -- think it controls whether or not to log time completed for tasks

(setq org-directory "~/notes")

;; Files that should be included in agenda views:
(setq org-agenda-files (list "~/notes/business.org"
                             "~/notes/personal.org" 
                             "~/notes/projects/"
			     "~/notes/projects/writing/"))

(setq org-todo-keywords '((type "TODO" "Postponed" "Upcoming" "Doing" "|" "DONE(#)"))) ;; TODO workflows

(setq org-tag-alist '(("work" . ?k) ("personal" . ?p) ("organization" . ?o) ("writing" . ?w) ("code" . ?c) ("blog" . ?b) ("funtoo" . ?f) ("social" . ?s))) ;; Most-used tags, with shortcuts

;; Capture stuff
(setq org-default-notes-file "~/.org/capture.org")
(define-key global-map "\C-cc" 'org-capture)
(setq org-refile-targets '((org-agenda-files :level . 1)(org-agenda-files :level . 2)))
(setq org-refile-use-outline-path 'file)

(setq org-capture-templates
      '(("t" "Todo" entry (file+headline "~/.org/capture.org" "Tasks")
             "- TODO %?\n  %i\n  %a")
        ("j" "Journal" entry (file+datetree "~/.org/journal.org")
             "- %?\nEntered on %U\n  %i\n  %a")))

(setq org-mobile-directory "~/Dropbox/MobileOrg")
(setq org-mobile-use-encryption)
(setq org-mobile-use-encryption-password "PASSWORD")
(setq org-mobile-inbox-for-pull "~/notes/mobileorg/inbox.org")

;;;;;;;;;;;;;;;;;;;
;; Markdown Mode ;;
;;;;;;;;;;;;;;;;;;;

(require 'markdown-mode)
(add-to-list 'auto-mode-alist '("\\.markdown$" . markdown-mode))
(add-to-list 'auto-mode-alist '("\\.md$" . markdown-mode))

;;;;;;;;;;;;;;;;
;; Python IDE ;;
;;;;;;;;;;;;;;;;
(c-add-style
   "python-new"
   '((indent-tabs-mode . nil)
     (fill-column      . 78)
     (c-basic-offset   . 4)
     (c-offsets-alist  . ((substatement-open . 0)
                          (inextern-lang     . 0)
                          (arglist-intro     . +)
                          (knr-argdecl-intro . +)))
     (c-hanging-braces-alist . ((brace-list-open)
                                (brace-list-intro)
                                (brace-list-close)
                                (brace-entry-open)
                                (substatement-open after)
                                (block-close . c-snug-do-while)))
     (c-block-comment-prefix . "* "))
)

;; This is a very crude hook that auto-selects the C style depending on
;; whether it finds a line starting with tab in the first 3000 characters
;; in the file
(defun c-select-style ()
   (save-excursion
     (if (re-search-forward "^\t" 3000 t)
         (c-set-style "python")
       (c-set-style "python-new"))))
(add-hook 'c-mode-hook 'c-select-style)

;;;;;;;;;;;;
;; Django ;;
;;;;;;;;;;;;
(yas/initialize)
(add-to-list 'load-path "~/.emacs.d/el-get/django-mode/")
(require 'django-html-mode)
(require 'django-mode)
(yas/load-directory "~/.emacs.d/el-get/django-mode/snippets")
(add-to-list 'auto-mode-alist '("\\.djhtml$" . django-html-mode))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Document Engineering (AUCTeX + ConTeXt) ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(load "auctex.el" nil t t)
(load "preview-latex.el" nil t t)

(setq TeX-auto-save 1)
(setq TeX-parse-self 1)
(setq TeX-auto-untabify 1)
(setq TeX-display-help 1)
(setq TeX-save-query nil)
(setq TeX-clean-confirm nil)
(setq-default TeX-master nil)

(add-hook 'TeX-mode-hook (lambda () (TeX-fold-mode 1)))
(add-hook 'TeX-mode-hook (lambda () (TeX-source-specials-mode 1)))
(add-hook 'TeX-mode-hook (lambda () (TeX-toggle-debug-bad-boxes)))
(add-hook 'TeX-mode-hook (lambda () (TeX-toggle-debug-warnings)))
(add-hook 'TeX-mode-hook (lambda () (outline-minor-mode)))
(add-hook 'TeX-mode-hook (lambda () (abbrev-mode t)))
(add-hook 'TeX-mode-hook (lambda () (auto-fill-mode 1)))

(add-hook 'TeX-mode-hook 'LaTeX-math-mode)

(autoload 'etexshow "etexshow" "Browser for ConTeXt commands." t)

(setq etexshow-xml-files-alist
   `((,(concat emacs-root-dir "libs/etexshow/cont-en.xml") .
      ,(concat "/tmp/cont-en.cache"))))

(setq etexshow-comment-file
   (concat emacs-root-dir "libs/etexshow/cont-en-comments.xml"))

(setq TeX-PDF-mode 1)
(setq revert-without-query '(".+pdf$"))
(add-hook 'doc-view-mode-hook 'auto-revert-mode)

;;;;;;;;;;
;; bbdb ;;
;;;;;;;;;;
(setq bbdb-file "~/.emacs.d/.bbdb")
(require 'bbdb)
(bbdb-initialize)
(setq
 bbdb-offer-save 1                         ;; 1 means save-without-asking
 bbdb-use-pop-up t                         ;; allow popups for addresses
 bbdb-electric-p t                         ;; be disposable with SPC
 bbdb-popup-target-lines 1                 ;; very small
 bbdb-dwim-net-address-allow-redundancy t  ;; always use full name
 bbdb-quiet-about-name-mismatches 2        ;; show name-mismatches 2 secs
 bbdb-always-add-address t                 ;; add new addresses to existing...
                                           ;; ...contacts automatically
 bbdb-canonicalize-redundant-nets-p t      ;; x@foo.bar.cx => x@bar.cx
 bbdb-completion-type nil                  ;; complete on anything
 bbdb-complete-name-allow-cycling t        ;; cycle through matches
                                           ;; this only works partially
 bbdb-message-caching-enabled t            ;; be fast
 bbdb-use-alternate-names t                ;; use AKA
 bbdb-elided-display t                     ;; single-line addresses
 ;; auto-create addresses from mail
 bbdb/mail-auto-create-p 'bbdb-ignore-some-messages-hook
 bbdb-ignore-some-messages-alist           ;; don't ask about fake addresses
 ;; NOTE: there can be only one entry per header (such as To, From)
 ;; http://flex.ee.uec.ac.jp/texi/bbdb/bbdb_11.html
 '(( "From" . "no.?reply\\|DAEMON\\|daemon\\|facebookmail\\|twitter")))

;;;;;;;;;;;;;;;;;
;; Jabber Mode ;;
;;;;;;;;;;;;;;;;;

(require 'jabber-autoloads)
(setq jabber-account-list '(
                            ("USER@jabber-server.tld"
                            (:password . "PASSWORD")
                            )
                           )
)
(setq
    jabber-history-enabled t
    jabber-use-global-history nil
    jabber-backlog-number 40
    jabber-backlog-days 30
)

(add-hook 'jabber-chat-mode-hook 'goto-address)

(load "~/.emacs.d/plugins/autosmiley.el")
(require 'autosmiley)
(add-hook 'jabber-chat-mode-hook 'autosmiley-mode)

(defvar libnotify-program "/usr/bin/notify-send")

(defun notify-send (title message)
  (start-process "notify" " notify"
                 libnotify-program "--expire-time=4000" title message))

(defun libnotify-jabber-notify (from buf text proposed-alert)
  "(jabber.el hook) Notify of new Jabber chat messages via libnotify"
  (when (or jabber-message-alert-same-buffer
                        (not (memq (selected-window) (get-buffer-window-list buf))))
    (if (jabber-muc-sender-p from)
        (notify-send (format "(PM) %s"
                             (jabber-jid-displayname (jabber-jid-user from)))
                     (format "%s: %s" (jabber-jid-resource from) text)))
    (notify-send (format "%s" (jabber-jid-displayname from))
                 text)))

(add-hook 'jabber-alert-message-hooks 'libnotify-jabber-notify)

(defun jabber-visit-history (jid)
  "Visit jabber history with JID in a new buffer.

Performs well only for small files. Expect to wait a few seconds
for large histories. Adapted from `jabber-chat-create-buffer'."
  (interactive (list (jabber-read-jid-completing "JID: ")))
  (let ((buffer (generate-new-buffer (format "*-jabber-history-%s-*"
                                             (jabber-jid-displayname jid)))))
    (switch-to-buffer buffer)
    (make-local-variable 'jabber-chat-ewoc)
    (setq jabber-chat-ewoc (ewoc-create #'jabber-chat-pp))
    (mapc 'jabber-chat-insert-backlog-entry
          (nreverse (jabber-history-query nil nil t t "."
                                          (jabber-history-filename jid))))
    (view-mode)))

;;;;;;;;;;
;; EMMS ;;
;;;;;;;;;;
(require 'emms-setup)
(emms-devel)
(emms-default-players)

;;;;;;;;;
;; ERC ;;
;;;;;;;;;
(require 'erc)
(require 'erc-extension)
(require 'erc-services)
(require 'erc-tex)
(require 'tls)
(require 'erc-nicklist)

(and
 (require 'erc-highlight-nicknames)
 (add-to-list 'erc-modules 'highlight-nicknames)
 (erc-update-modules))

(erc-services-mode 1)

(setq tls-program '("openssl s_client -connect %h:%p -no_ssl2 -ign_eof
                            -CAfile /home/USER/.ssl/USER.pem 
                            -cert /home/USER/.ssl/USER.pem"
                    "gnutls-cli --priority secure256
                                --x509cafile /home/USER/.ssl/USER.pem 
                                --x509certfile /home/USER/.ssl/USER.pem -p %p %h"
                    "gnutls-cli --priority secure256 -p %p %h"))

(autoload 'erc-nick-notify-mode "erc-nick-notify" "Minor mode that calls `erc-nick-notify-cmd' when his nick gets mentioned in an erc channel" t)
(eval-after-load 'erc '(erc-nick-notify-mode t))
(defun irc-erc ()
  "Fire up IRC."
  (interactive)
  (erc-tls :server "chat.freenode.net" :port 7000 :nick "USER" :full-name "FULL NAME" :password "PASSWORD"))

(setq erc-autojoin-channels-alist '(("freenode.net" "#frogandowl" "#funtoo" "#funtoo-quebec" "#syntazia" "#context" "#nginx" "#emacs" "#openvswitch")))
(setq erc-log-channels-directory "~/.erc/logs/")
(setq erc-log-insert-log-on-open nil)
(setq erc-save-buffer-on-part nil
      erc-save-buffer-queries-on-quit nil
      erc-log-write-after-send t
      erc-log-write-after-insert t)

(require 'smiley)
    (add-to-list 'smiley-regexp-alist '("\\(:-?]\\)\\W" 1 "forced"))
    (add-to-list 'smiley-regexp-alist '("\\s-\\(:-?/\\)\\W" 1 "wry"))
    (add-to-list 'smiley-regexp-alist '("\\(:-?(\\)\\W" 1 "sad"))
    (add-to-list 'smiley-regexp-alist '("\\((-?:\\)\\W" 1 "reverse-smile"))
    (add-to-list 'smiley-regexp-alist '("\\(:-?D\\)\\W" 1 "grin"))
    (add-to-list 'smiley-regexp-alist '("\\(:-?P\\)\\W" 1 "poke"))

;; (setq smiley-cached-regexp-alist nil)
;; (smiley-update-cache)

;;;;;;;;;;;;;;;;
;; Wanderlust ;;
;;;;;;;;;;;;;;;;
(autoload 'wl "wl" "Wanderlust" t)

;;;;;;;;;;;;;;;
;; mailcrypt ;;
;;;;;;;;;;;;;;;
(require 'mailcrypt)
(add-hook 'wl-summary-mode-hook 'mc-install-read-mode)
(add-hook 'wl-mail-setup-hook 'mc-install-write-mode)

(defun mc-wl-verify-signature ()
  (interactive)
  (save-window-excursion
    (wl-summary-jump-to-current-message)
    (mc-verify)))

(defun mc-wl-decrypt-message ()
  (interactive)
  (save-window-excursion
    (wl-summary-jump-to-current-message)
    (let ((inhibit-read-only t))
      (mc-decrypt))))

(eval-after-load "mailcrypt"
  '(setq mc-modes-alist
         (append
          (quote
           ((wl-draft-mode (encrypt . mc-encrypt-message)
                           (sign . mc-sign-message))
            (wl-summary-mode (decrypt . mc-wl-decrypt-message)
                             (verify . mc-wl-verify-signature))))
          mc-modes-alist)))

;;;;;;;;;;;;;;;;;;;;;
;; notify function ;;
;;;;;;;;;;;;;;;;;;;;;
(defun djcb-popup (title msg &optional icon sound)
  "Show a popup if we're on X, or echo it otherwise; TITLE is the title of the message, MSG is the context. Optionally, you can provide an ICON and a sound to be played"
  (interactive)
  (when sound (shell-command
               (concat "mplayer2 -really-quiet " sound " 2> /dev/null")))
  (if (eq window-system 'x)
      (shell-command (concat "notify-send "
                             
                             (if icon (concat "-i " icon) "")
                             " '" title "' '" msg "'"))
    ;; text only version
    (message (concat title ": " msg))))

;; the appointment notification facility
(setq
 appt-message-warning-time 15 ;; warn 15 min in advance
 appt-display-mode-line t     ;; show in the modeline
 appt-display-format 'window) ;; usr our func
(appt-activate t)             ;; active appt (appointment notification)
(display-time)

;; update appt each time agenda opened
(add-hook 'org-finalize-agenda-hook 'org-agenda-to-appt)

;; our little facade-function for djcb-popup
(defun djcb-appt-display (min-to-app new-time msg)
  (djcb-popup (format "Appointment in %s minute(s)" min-to-app) msg
              "/usr/share/icons/gnome/32x32/status/appointment-soon.png"
              "/usr/share/sounds/purple/alert.wav"))
(setq appt-disp-window-function (function djcb-appt-display))

;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Custom Variable sets ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;
(custom-set-variables
  ;; custom-set-variables was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 '(TeX-command-list (quote (("TeX" "%(PDF)%(tex) %`%S%(PDFout)%(mode)%' %t" TeX-run-TeX nil (plain-tex-mode texinfo-mode ams-tex-mode) :help "Run plain TeX") ("LaTeX" "%`%l%(mode)%' %t" TeX-run-TeX nil (latex-mode doctex-mode) :help "Run LaTeX") ("Makeinfo" "makeinfo %t" TeX-run-compile nil (texinfo-mode) :help "Run Makeinfo with Info output") ("Makeinfo HTML" "makeinfo --html %t" TeX-run-compile nil (texinfo-mode) :help "Run Makeinfo with HTML output") ("AmSTeX" "%(PDF)amstex %`%S%(PDFout)%(mode)%' %t" TeX-run-TeX nil (ams-tex-mode) :help "Run AMSTeX") ("ConTeXt MKIV" "context %t" TeX-run-TeX nil (context-mode) :help "Run ConTeXt MKIV") ("ConTeXt" "texexec --once --texutil %(execopts)%t" TeX-run-TeX nil (context-mode) :help "Run ConTeXt once") ("ConTeXt Full" "texexec %(execopts)%t" TeX-run-TeX nil (context-mode) :help "Run ConTeXt until completion") ("BibTeX" "bibtex %s" TeX-run-BibTeX nil t :help "Run BibTeX") ("View" "%V" TeX-run-discard-or-function t t :help "Run Viewer") ("Print" "%p" TeX-run-command t t :help "Print the file") ("Queue" "%q" TeX-run-background nil t :help "View the printer queue" :visible TeX-queue-command) ("File" "%(o?)dvips %d -o %f " TeX-run-command t t :help "Generate PostScript file") ("Index" "makeindex %s" TeX-run-command nil t :help "Create index file") ("Check" "lacheck %s" TeX-run-compile nil (latex-mode) :help "Check LaTeX file for correctness") ("Spell" "(TeX-ispell-document \"\")" TeX-run-function nil t :help "Spell-check the document") ("Clean" "TeX-clean" TeX-run-function nil t :help "Delete generated intermediate files") ("Clean All" "(TeX-clean t)" TeX-run-function nil t :help "Delete generated intermediate and output files") ("Other" "" TeX-run-command t t :help "Run an arbitrary command"))))
 '(column-number-mode t)
 '(erc-modules (quote (autojoin bbdb button completion fill irccontrols list log match menu move-to-prompt netsplit networks noncommands readonly ring services smiley stamp spelling track)))
 '(mediawiki-site-alist (quote (("Funtoo" "http://www.funtoo.org/" "USER" "PASSWORD" "")))))
(custom-set-faces
  ;; custom-set-faces was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 )

;;;;;;;;;;;;;;;;;;
;; Color-Themes ;;
;;;;;;;;;;;;;;;;;;
;;(add-to-list 'load-path "/usr/share/emacs/site-lisp/color-theme/color-theme.el")
;;(add-to-list 'load-path "~/.emacs.d/themes/")
(require 'color-theme)
(color-theme-initialize)
;;(color-theme-subtle-hacker)
(color-theme-twilight)
;;(eval-after-load "color-theme"
;;  '(progn
;;     (color-theme-initialize)
;;     (require 'color-theme-citrus)
;;     (require 'color-theme-candy)
;;     (require 'color-theme-autumn-leaves)
;;     (require 'color-theme-inthedark)
;;     (require 'color-theme-marine)
;;     (require 'color-theme-october)
;;     (require 'color-theme-eatyourgreens)
;;     (require 'color-theme-august)
;;     (require 'color-theme-saddle-2)
;;     (color-theme-saddle-2)))
;;     (color-theme-subtle-hacker)))

(setq css-indent-offset 2)

.wl

;; load bbdb support
(require 'bbdb-wl)
(bbdb-wl-setup)

;; setup from where to get addresses
(setq bbdb-wl-folder-regexp "^\.INBOX|^\.inbox|^\.Sent|^\.sent|^\.\[IMAPS\]\\Sent")

;; define keybinding
(define-key wl-draft-mode-map (kbd "<C-tab>") 'bbdb-complete-name)

;; set multiple e-mail addresses
(setq wl-user-mail-address-list (quote ("User@googlemail.com" "USER@own-server.tld")))

;; handle ("d") mark
;; remove = instant removal (same as "D"), thrash = move to wl-trash-folder
;; string = move to string
(setq wl-dispose-folder-alist
      '(
        ("\.\*googlemail\\.com" "%[Imap]/Trash:"User@googlemail.com"/clear@imap.gmail.com:993!")
        ("\.\*@own\-\server\\.tld" "%INBOX.Trash:"USER"/clear@imap.own-server.tld")
))

;; notify hook
(add-hook 'wl-biff-notify-hook
          (lambda()
            (djcb-popup "Wanderlust" "You have new mail!"
                        "/usr/share/icons/gnome/32x32/status/mail-unread.png"
                        "/usr/share/sounds/purple/alert.wav")))

;; timer settings
(setq
 wl-biff-check-interval 30 ;; check every 30 seconds
 wl-biff-use-idle-timer t) ;; in the background

;; Name of top-folder, default "Desktop"
(setq wl-folder-desktop-name "e-Mail")

;; select correct email address when we _start_ writing a draft.
(add-hook 'wl-mail-setup-hook 'wl-draft-config-exec)

(setq wl-draft-config-alist
      '(
        ((string-match "googlemail.com" wl-draft-parent-folder)
         (template . "User"))
        ((string-match "own-server.tld" wl-draft-parent-folder)
         (template . "USER"))
))

;; choose template with C-c C-j
(setq wl-template-alist
      '(("User"
         (wl-from . "Full Name <User@googlemail.com>")
         ("From" . wl-from)
         (wl-smtp-posting-user . "User")
         (wl-smtp-posting-server . "smtp.gmail.com")
         (wl-smtp-authenticate-type . "plain")
         (wl-smtp-connection-type . 'starttls)
         (wl-smtp-posting-port . 587)
         (wl-local-domain . "googlemail.com")
         (wl-message-id-domain . "smtp.gmail.com")
         
         (wl-fcc .  "%[IMAPS]/Sent:\"User@googlemail.com\"/clear@imap.gmail.com:993!")
         (wl-draft-folder .  "%[IMAPS]/Draft:\"User@googlemail.com\"/clear@imap.gmail.com:993!")
        )
        ("USER"
         (wl-from  . "Full Name <USER@own-server.tld>")
         ("From"  . wl-from)
         (wl-smtp-posting-user  . "USER")
         (wl-smtp-posting-server  . "smtp.own-server.tld")
         (wl-local-domain . "own-server.tld")
         
         (wl-fcc  "%INBOX.Sent:USER/digest-md5@imap.own-server.tld:143")
         (wl-draft-folder  "%INBOX.Drafts:USER/digest-md5@imap.own-server.tld:143")
        )
       )
)

(define-key wl-template-mode-map (kbd "<right>") 'wl-template-next)
(define-key wl-template-mode-map (kbd "<left>") 'wl-template-prev)

(setq wl-default-spec "%")

(setq wl-fcc-force-as-read t)
(setq wl-auto-save-drafts-interval nil)

.folders

User@googlemail{
         %INBOX:"User@googlemail.com"/clear@imap.gmail.com:993!    "Inbox"
        [IMAPS-gmail]{
                %[IMAPS]/Sent:"User@googlemail.com"/clear@imap.gmail.com:993!      "Sent"
                %[IMAPS]/Draft:"User@googlemail.com"/clear@imap.gmail.com:993!      "Draft"
                %[IMAPS]/Spam:"User@googlemail.com"/clear@imap.gmail.com:993!      "Spam"
                %[IMAPS]/Trash:"User@googlemail.com"/clear@imap.gmail.com:993!      "Trash"
        }
}
USER@own-server.tld{
        %INBOX:USER/digest-md5@imap.own-server.tld   "Inbox"
        %INBOX.Sent:USER/digest-md5@imap.own-server.tld "Sent"
        %INBOX.Drafts:USER/digest-md5@imap.own-server.tld "Drafts"
}