Module:Buffer/doc
This is the documentation page for Module:Buffer
This module is rated as ready for general use. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by sandbox testing rather than repeated trial-and-error editing. |
This Lua module is used on 2,000,000+ pages, or roughly 9450% of all pages. To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Consider discussing changes on the talk page before implementing them. |
This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. |
This was originally developed to optimize string concatenation as a helper method within Module:Asbox, but has been generalized for all modules.
The interface for Module:Buffer objects is similar to that of Tɛmplet:Scribunto/helper objects in that you may build complex strings with independent child nodes. In most cases, you may use Buffer objects like a normal string, including using ..
operator. See also: #String, mw.ustring, and mw.text libraries
Additionally, there are several specialized forms and extended objects, described further in their respective sections:
Last but not least, this module has an ordered __pairs which can be more thorough than Tɛmplet:Scribunto/helper and Tɛmplet:Scribunto/helper. (Even reads nil keys!) The logical uniqueness of this iterator may be reason enough to Tɛmplet:Scribunto/helper Module:Buffer.
Usage
mali niŋ
require'Module:Buffer'
mali niŋTɛmplet:Luaself
Creates a new Module:Buffer object when the module returned by Tɛmplet:Scribunto/helper is called as a functionTɛmplet:--i.e., there is no 'main'.
Because Tɛmplet:Scribunto/helper are a pet peeve of this developer, this forwards arguments to Tɛmplet:Luaself; if that op is not desired, you may chain a Buffer object function directly to the module and the self-action will be redirected to a new Buffer objectTɛmplet:--i.e require'Module:Buffer':_inHTML'table'
is equivalent to require'Module:Buffer'():_inHTML'table'
.[note 1]
The global variable Tɛmplet:Scribunto/helper is "magic" when passed as the first arg. Such enables the global functions and, if followed by a name
string, will declare the new Buffer with that name in the global scope. If the argument following name is a table with no metatable, it and any other Tɛmplet:Scribunto/helper are forwarded to Tɛmplet:Luaself; otherwise, as long as the first vararg is not nil or false, this passes them to Tɛmplet:Luaself.[note 2] The _G passed may also gain a __call Tɛmplet:Scribunto/helper (details at _G object).
As a final note, if you Tɛmplet:Scribunto/helper text from a module which returns a Buffer object, it may be more efficient to create a new Buffer via chaining Tɛmplet:Luaself after a require statement for the other module and use Tɛmplet:Luaself at the point where you would append the required text. (Best add --:_in == indirect require Module:Buffer
so future editors won't hunt for function ...:_in
at the other module)
Basic functions
mali niŋ
Buffer object
mali niŋGet a Buffer as a Tɛmplet:Scribunto/helper via a function call on the Buffer object (as opposed to a call on the module). This is basically shorthand for Tɛmplet:Scribunto/helper, or, with no args, Tɛmplet:Scribunto/helper. However, if this Buffer is in raw mode[note 3] or contains at least one Tɛmplet:Scribunto/helper index, this reconstructs the Buffer by creating a new table, coercing it contents to strings and appending them sequentially to the temporary "buffer" via new-Tɛmplet:Luaself
(or a similar process).
Unconventionally, any Tɛmplet:Scribunto/helper-type position passed as i
or j
are treated as relative to length; that is, Tɛmplet:Luaself is equivalent to Tɛmplet:Luaself (which obviates the need to Tɛmplet:Scribunto/helper Buffer just to use the Tɛmplet:Scribunto/helper). Moreover, unlike table.concat, this automatically adjusts numerical[note 4] positions to be within the range of the lowest and greatest indicies.
Note you may append a Buffer object without tostring coercion to an Tɛmplet:Scribunto/helper object via Tɛmplet:Scribunto/helper (though not mw.html:wikitext because of type checking).
Buffer.last_concat
mali niŋWhen strung without a (valid) sep
, the result is cached at Buffer.last_concat
. Until purged, future calls to return that Buffer as a string will return this index instead.[note 5]
This should clear automatically whenever a Buffer object function changes the contents of a Buffer. You may manually purge the cache by setting this key to nil, as well as by passing nothing to Tɛmplet:Luaself.
Buffer:_
mali niŋAppends a value to the Buffer. In rough terms, Buffer:_'string1':_'string2'
is the same as Buffer = Buffer..'string1'..'string2'
. (It may help to imagine :_
as a ..
that has stood up and is now casting a shadow.)
If passed an invalid value
listed below, this is a no-op:
- Tɛmplet:Scribunto/helper
- Tɛmplet:Scribunto/helper
- empty Tɛmplet:Scribunto/helper, or any table such that Tɛmplet:Scribunto/helper returns an empty string (or nil/false)
- Tɛmplet:Scribunto/helper without a __tostring metamethod and which
table[1]
is nil or false
A table with no __tostring will pass through Tɛmplet:Scribunto/helper before insertion. An Tɛmplet:Scribunto/helper may be thrown if the table would cause table.concat to error. (Use Tɛmplet:Luaself instead for such tables.)
When passed pos
of type Tɛmplet:Scribunto/helper, the argument is identical to pos for Tɛmplet:Scribunto/helper. In fact, assuming a valid value, Tɛmplet:Luaself is exactly the same as Tɛmplet:Scribunto/helper.
Just like with the position arguments of Buffer(), any pos of type Tɛmplet:Scribunto/helper would be treated as relative to length.
Set raw
to true to force append a value without tostring coercion, including invalid values. If given only two (non-self) arguments with the second being a boolean, then the second is read as raw instead.
Buffer:_nil
mali niŋRemoves the value buffered at pos
. As with Tɛmplet:Luaself, a string pos string is treated as #Buffer + pos
.
If a non-boolean replacement
is provided, then it will replace the value indexed at pos. Passing a boolean as the second argument is a no-op.
When replacement is nil, the op is basically Tɛmplet:Scribunto/helper. As with the positional arguments of other Buffer methods, any numerical string pos is added to length, such that Tɛmplet:Luaself removes the last item. Note the only type check on replacement is a direct comparison to both booleans (nil is implied). Any other type, including strings, sets the Buffer to raw mode.
A pos that is omitted, nil, or false has the same effect as though '0'
(or Tɛmplet:Luaself) were passed. Given only one non-numerical argument which evaluates true but Tɛmplet:Scribunto/helper would return it as nil, this treats it as though it were passed as the second. If passed a non-numerical pos with any other argument, including nil, this is effectively a no op (though may still purge the cache).
Buffer:_all
mali niŋTakes a table value
, iterates through all number keys Tɛmplet:Scribunto/helper, appending each valid value to the end of the Buffer. In contrast to Tɛmplet:Scribunto/helper, this starts at the most negative key (down to Tɛmplet:Scribunto/helper) and ends at the most positive index, continuing through any nil keys and includes non-integer number keys.
A table value that has no metatable will have its contents iterated by this function before moving on to the next value. All other data types are processed by Tɛmplet:Luaself.
By default, this ignores non-number keys unless nanKeys
evaluates true. If so, non-number keys are processed after number keys. Keep in mind such keys are iterated in Tɛmplet:Scribunto/helper order, though an order may be imposed by wrapping each pair in a table indexed at a number key.
If given a value = pos
pair, defined as a number or number string indexed at a non-number key, then they will be passed as the value
and pos
arguments for Tɛmplet:Luaself. Thus,
produces the same result as:
Buffer:_(1):_(2):_(3)
if variable then
Buffer:_(4)
else
Buffer:_'four':_('zero',1)--vs :_all{four='1',zero=1}; less redundant would be
end -- :_all{'four',zero=1}, but that doesn't demo string numbers
Buffer:_'... done'
--returns "1234... done" if variable evaluates true or "zero123four... done" if false
If a non-number key points to a value that cannot be coerced into a Tɛmplet:Scribunto/helper then the pair may be treated as functionName = args
, when functionName matches a Buffer object function and args is not boolean. If args is such that value[1]
evaluates true, then this will pass the return of Tɛmplet:Scribunto/helper to the named function; otherwise, the value is passed as is.[note 6]
Buffer:_in
mali niŋPasses any arguments to Module:Buffer to create a new Buffer object, sets an external reference to the parent Buffer and returns the child.[note 7]
This does not append the child to the parent. (See Tɛmplet:Luaself)
Also, be aware that Buffer parent references are Tɛmplet:Scribunto/helper. Thus, if you were to (re-)set a local variable that is currently set to the parent, such could trigger immediate garbage collection on the parent.
Buffer:_out
mali niŋJoins a Buffer with sep
and appends result to its parent, which is returned. If no parent is found, this is a no-op and returns the same Buffer.
When given two or more arguments, this reads the first as ops
Tɛmplet:--the number of :_out() operations to perform.[note 8] This applies the first sep in sep-list
for the current Buffer, the second for its parent, the third for its grandparent, and so on.
If the last item is a Tɛmplet:Scribunto/helper, then any nil in sep-list default to table[1]
; any false mean "no-sep".[note 9] The table may be the second arg (i.e. sep-list may be omitted). If it has other keys, then table[n] would apply instead of table[1], making these synonymous:
Tɛmplet:Luaself and Tɛmplet:Luaself.
The number 0
is "magic" when passed as the first arg (even by itself), joining and appending to the same Buffer after it has been Tɛmplet:Luaself. This is the only method by which a Buffer in raw mode may lose that status. Parent references are preserved.
Buffer:_str
mali niŋJoins a Buffer with sep
and returns the string.
This uses the same helper method as Tɛmplet:Luaself to handle multiple arguments, with which, if provided, this creates a new temporary Buffer to which this appends the results of the number of generations specified by ops
, with each ancestor in front of its descendants. This then performs one additional concat op using the sep at ops + 1
and returns the result. If a parent-less Buffer is reached before ops, then the sep that follows its op number will separate the generations.
When no valid sep is given, this returns a string identical to what would append to the next ancestor, if those arguments were passed to Buffer:_out instead and one additional :_out() op performed.
However, because this does not actually append child Buffers to their parent, the result may differ where this would insert the sep at ops + 1 and Buffer:_out would place the parent's sep between it and its child instead.
Buffer:_cc
mali niŋNils all keys of the table referenced by clear
and unsets its metatable. If clear evaluates false, this simply purges the cache at Tɛmplet:Luaself.
If given a table to copy
, this will duplicate all key-value pairs of copy into clear, cloning any table value recursively via Buffer:_cc(0, value)
. This returns the Buffer unless passed the number 0
as clear, which causes this to create a new table and return that instead. Passing true
as copy is equivalent to passing the Buffer itself. If copy is not a table, then it will be set as the first item in clear as long as it is not false.
While this may resemble Tɛmplet:Scribunto/helper, there are several differences, namely that this:
- Gives clear the same metatable as copy (or sets
meta
, if given) as opposed to a "clone" of the metatable. - Conserves Tɛmplet:Scribunto/helper attribute (though empty strings may replace some nil keys[note 10])
- Tɛmplet:Scribunto/helpers values and iterates without invoking any __pairs Tɛmplet:Scribunto/helper.
- Includes Buffer parent and raw attributes (stored externally)
To obtain the key-value pairs left as empty strings in the previous copy op in a table, simply call this again such with value such that rawequal(clear, copy)
is true; call :getParent() on this table returns clear (useful after leeaving the local scope which referenced clear).
Buffer:_parent
mali niŋResembling the reverse of Tɛmplet:Luaself, this calls Tɛmplet:Luaself on the Buffer's parent with the arguments given and appends the strung ancestor(s) to the current Buffer, which is returned.
The parent is unaffected by this operation and may still be retrieved via Tɛmplet:Luaself or re-appended again with this function.
Buffer:getParent
mali niŋReturns parent Buffer, or, if none exists, creates a new Buffer and returns it as the adopted parent. As with Tɛmplet:Luaself, this does not automatically append the adoptive child to the new parent.
Pass a non-false value
and this performs an op on the parent object.
If passed anything other than value (including nil), this requires that value names a function available to the parent object, which this calls and forwards the additional Tɛmplet:Luaself.
Pass only a table value which has no metatable and this forwards value to the parent which calls Tɛmplet:Luaself.
Given only a string starting with _
and naming a parent function, this calls it on the parent without arguments. Any other valid singular argument appends to the end of the parent Buffer.[note 11]
Buffer:killParent
mali niŋUnsets Buffer parent reference.
If passed any args, they are forwarded to the current parent, if one exists, via Buffer:getParent as a "parting gift". In either case, returns the current Buffer.
This is not necessary for Tɛmplet:Scribunto/helper since Buffer parent references are weak. Rather, use this when it is desirable to assign a new parent via Buffer:getParent or, for example, to prevent the inclusion of an ancestor when passing Tɛmplet:Scribunto/helper as ops for functions such as Tɛmplet:Luaself (more useful when recycling Module:Buffer from another Module).
Stream mode
mali niŋBuffer:stream
mali niŋSwitches a Buffer to stream mode. While streaming, the __call metamethod will append values to the end of the Buffer instead of the usual op.
Aside from that, there is only one other function: Tɛmplet:Luaself. Any args passed to Buffer:stream are forwarded to that function for a reason that should be evident when you finish reading this very short section.
No special action is needed to exit this mode. The normal call to string op is restored upon the use of any regular Buffer function or any operation which coerces the Buffer into a string (e.g. the ..
operator).
Stream-Buffer object
mali niŋStream-Buffer objects accept only one argument which they append if valid. That is, the op is a streamlined version of Tɛmplet:Luaself sans the pos and raw args.
This also exploits Tɛmplet:Scribunto/helper to append a series of string literals (and tables) with nothing between them (or only Tɛmplet:Scribunto/helper if desired).
For example, both A and B will produce identical strings:
local A = require'Module:Buffer':stream'A string of text may flow''with nothing between each string' 'or perhaps only a space'
'or even tab and line-break characters''and continue to append individually''for use with a joiner'
local B = require'Module:Buffer':_'A string of text may flow':_'with nothing between each string' :_ 'or perhaps only a space'
:_'or even tab and line-break characters':_'and continue to append individually':_'for use with a joiner'
mw.log(A==B, A:_str' ')
true A string of text may flow with nothing between each string or perhaps only a space or even tab and line-break characters and continue to append individually for use with a joiner
Stream-Buffer:each
mali niŋAppends an undetermined number of valid values to the Buffer object.[note 12]
If the above line gives you Déjà vu, that is because it is drawn from Tɛmplet:Scribunto/helper. However, unlike mw.html:wikitext, this does not stop at the first nil value.[note 13]
HTML library extension
mali niŋUpon the first call to Tɛmplet:Luaself, Module:Buffer clones the Tɛmplet:Scribunto/helper, adding Module:Buffer's __eq and __concat metamethods along with a few additional functions.
Objects with this modified metatable are referred to as Buffer-HTML objects. Yet, though dressed in bells and whistles, they are only named with Buffer as an adverb since they lack most Buffer object functions.
In contrast, the Element-Buffer (returned by the function call on a Buffer-HTML object) is a true Buffer object with specialized "tricks" allowing complex structures to be built via both mw.html and Buffer object methods as well as through a builder that perhaps marries the best of both worlds.
Buffer functions for HTML
mali niŋBuffer:_inHTML
mali niŋAccepts the same parameters as Tɛmplet:Scribunto/helper to create and return a modified mw.html object. As with Tɛmplet:Luaself, this does not append the child object to the parent Buffer and instead sets a Buffer-style parent reference.
An exception to the above is when chaining this to an Element-Buffer and such produces a selfClosing tag; when both conditions are met, this appends the tag and returns to the same Buffer.[note 14]
Unlike mw.html.create, if args
has keys other than args.parent
and args.selfClosing
, it will pass for further processing through Tɛmplet:Luaself (a cousin of Tɛmplet:Luaself that handles mw.html functions). Moreover, if passed a table where mw.html.create expects tagName, this treats it as args instead.
Finally, this does not automatically set the mw.html.parent
reference, making this an alternative to mw.html:tag
Buffer:getHTML
mali niŋAvailable only after Tɛmplet:Luaself is used the first time.
Accepts the same arguments as Tɛmplet:Luaself, however this instead return the last Buffer-HTML object ("lastHTML") created, or, if available, the lastHTML passed to any of the following functions:
- Tɛmplet:Luaself
- Tɛmplet:Luaself
- Tɛmplet:Luaself (except when passed
0
)
Buffer:_html
mali niŋAvailable only after Tɛmplet:Luaself is used the first time.
This (re-)appends the last Buffer-HTML object to the current Buffer object. The raw
and pos
args are generally the same as those in Tɛmplet:Luaself.
When called with no arguments on an Element-Buffer, this appends lastHTML without string coercion. Be warned however that if the Element-Buffer belongs to lastHTML or one of its tags, such will cause an infinite loop, which can be avoided by passing an explicit nil to append lastHTML as a string.[note 15]
HTML object functions
mali niŋBuffer-HTML objects may be used like any mw.html object. (In fact, merely replacing mw.html.create
with require'Module:Buffer':_inHTML
in an existing Module should produce the same output.)
Most mw.html functions are unchanged, except Tɛmplet:Scribunto/helper, Tɛmplet:Scribunto/helper, and Tɛmplet:Scribunto/helper are embedded in a wrapper function that checks whether they return a normal mw.html object. If so, switches the metatable to convert it to a Buffer-HTML object and sets a parent reference. [note 16]
As a side bonus, the ..
may be used on Buffer-mw.html objects directly (no Tɛmplet:Scribunto/helper needed).
Buffer-HTML object
mali niŋCall this object as a function to return its .nodes
index[note 17], which this converts to an Tɛmplet:Luaself object, granting it the same metatable as regular Module:Buffer objects (as well as several additional "tricks") and assigning the Buffer-HTML as its parent Buffer.[note 18]
This takes one argument which is forwarded to its Element-Buffer. Tables pass to the specialized HTML builder Tɛmplet:Luaself. All other #valid values are appended to its Element-Buffer via Tɛmplet:Luaself.
Tɛmplet:TOC tab |
You cannot chain call regular Buffer functions on a Buffer-HTML object; however, since mw.html functions cannot read Buffer-style parent references, modified versions of methods that return the parent Buffer are available to Buffer-HTML without having to call into the Element-Buffer. For convenience, Tɛmplet:Scribunto/helper is called automatically prior to the op, though after the lastHTML
reference has been set for Tɛmplet:Luaself.[note 19]
This help page is a how-to guide. It details processes or procedures of some aspect(s) of Wikipedia's norms and practices. It is not one of Wikipedia's policies or guidelines, and may reflect varying levels of consensus and vetting. |
Preferences are the seventy or so user options for browsing, editing, searching, notifications, and more. A link to your Preferences page is available at the top of every Wikipedia page when you have an account, alongside links to your other account services such as your Contributions. Another way to get there is by navigating to the Special:Preferences page.
Once at your Preferences page, you can control much of the Wikipedia user interface through the many feature settings provided by MediaWiki (the software of Wikipedia): skins, plug-ins, date formats, a signature, and more. For example, you can select to be prompted to enter an edit summary if you forget to. The Preferences page also presents a link to customize your CSS to adjust your page style details.
Plus, there are hundreds of user tools to explore, many listed at Wikipedia:Tools § Browsing and editing, that can override or tweak preferences provided by MediaWiki. Each account has its own Custom JavaScript page where the tools install themselves, and where you can help develop them.
At their site, MediaWiki maintains a browser compatibility matrix. The time you spend in getting an account, setting your preferences, finding tools and testing your browser (before you ever lose an edit) will pay off.
Feature requests can be made, and bugs reported, as described at Wikipedia:Phabricator. The current set of preferences are largely the result of issues raised by newcomers at places such as the Village pump, and driven by regulars who hold long discussions and collectively drive issues.
Preferences page
mali niŋThe Preferences page is accessible when you are logged-in, but you must have JavaScript enabled in your browser, since the page and all its tabs are an extensive JavaScript application.
You do not need to click Save on every tab on the Preferences page, as the Save button affects all changes on all Preferences tabs.[1] You can go from tab to tab setting all your preferences before saving, because Save remembers your changes on the other tabs. To forget unsaved changes, simply leave the page without saving. If you wish to undo your saved changes, you will need to reset them manually.
Clicking Restore all default settings will harmlessly load another page, which will then offer the button to reset all preferences in every tab to their default values. This includes a few items that are stored as a preference, but that aren't directly editable in Special:Preferences. If you do reset your preferences, you can restore your custom signature from the wikitext of a history page, update your custom CSS or JavaScript from Wikipedia:Tools § Browsing and editing, and then re-select and save your preferences.
The default settings are aimed at newcomers editing articles. Intermediate editors tend to activate more features, such as "warn me if I forgot an edit summary", and advanced editors and administrators use the special settings, gadgets, and editors for their tasks.
You have the same username and password on sister projects such as Wiktionary, at MediaWiki.org itself, and on the Wikipedia of other languages. Each of your account's preferences are independent because each wiki is a website, with their own administration (namespaces, settings, accounts, etc.). Even the word "Preferences" on the top may be set differently! On the Simple English Wikipedia, it says "My settings".
User profile
mali niŋ- Preferences → User profile → Details = meta:Help:Preferences#User profile
Basic information
mali niŋ- Lists your account details and the number of edits you have made.
- Allows you to view/manage your global account info.
- Provides a link to change your password.
Internationalisation
mali niŋ- Change the language of user-interface messages. It does not affect articles and other pages made by editors. Note that many interface messages have been customized at the English Wikipedia but usually only for the default "en - English" which may for example add links to relevant help pages, processes and policies. Editors are discouraged from selecting "en-GB - British English" or "en-CA - Canadian English", which make a few spelling changes but omit many useful customizations.[2] Foreign languages also omit customizations but may be preferred by users with poor English abilities.
- Specify your preferred pronoun in order for the software to grammatically refer to you correctly. This is also visible to other users via certain tools, such as the they template and Navigation popups.
- More language settings: allows you to set the language in which Wikipedia menus and fonts are displayed; additionally, an option to set the language you edit in (input tools must be enabled).
Signature
mali niŋ- Displays the signature that will appear when you sign talk pages.
- Allows you to edit the signature, either using wiki markup (the option must be checked), or just plain text.
Email options
mali niŋ- An option to provide an email address. Although this is optional, please read the warning about losing your password and not having an email address on file.
- Options about use of your email address: enabling email from other users, sending copies of emails you send to other users, and receiving email when a page or file on your watchlist is changed.
- Before using email you must confirm your email address. See Help:Email confirmation
- "Email me when a page or file on my watchlist is changed", see Help:Email notification
Newcomer homepage
mali niŋAppearance
mali niŋ- Preferences → Appearance → Details = meta:Help:Preferences#Appearance
Change the web browser experience.
Skin
mali niŋSkin Preferences
mali niŋ- Choose the "skin", or "theme" of how Wikipedia is displayed.
- Access your Custom CSS or Custom JavaScript for individual skins and for global settings that apply to all skins. If the links are blue, you have created these special pages and this is a quick way to access and edit them. If the links are red, clicking the link will create the special page. You can also access your cross-wiki CSS and JavaScript pages from this section, but the color of the links will always be that of external links.
Reading Preferences
mali niŋDate format
mali niŋ- Option to set your date and time preferences; this is how dates will appear in article History pages, logs, etc. If set to "No preference", the format is HH:MM, DD MMMM YYYY (UTC), for example: 19:28, 5 Silimin gɔli November 2024 (UTC).
Time offset
mali niŋ- Shows the server time (UTC) and the local time based on the optional Time zone setting. You may opt to use the server time (UTC), have the offset calculated by the clock in your computer, or specify an offset from UTC in hours or by location.
- This does not affect times saved in editable pages, such as timestamps in signatures. For that, see Wikipedia:Comments in Local Time.
Files
mali niŋ- The images in an article are just a thumbnail (a preview). These will always be one of eight possible Thumbnail sizes. For the larger screen sizes choose the maximum, and for the smaller screen sizes choose the minimum thumbnail size. The default 220px is a midrange thumbnail-size. Have you changed your font size? Then you should match that font size to your chosen thumbnail size to increase caption readability.
- While viewing an article, if you click a thumbnail you will activate Media Viewer. Media Viewer is JavaScript, and it uses processing resources. It loads all the images in the article at high resolution, and this uses networking resources. This is the default. You can turn off Media Viewer to save resources: 1) to control all image sizing, 2) to navigate directly to a file page (instead) when you click on a thumbnail.
- You can target the Image size limit of the file page main image, (displayed in the front matter). On a faster network choose a larger size, and on a slower network choose a smaller Image size limit. The default 800×600px is a midrange Image size limit. File pages are on Commons wiki, and if logged in there, going there overrides your settings here.
- Note that you can both turn off Media Viewer and set a small Image size limit, and yet you will not limit your ability to avail yourself of any high resolution images listed at the bottom of that file page, when wanted. Doing so you can get full manual control of any unwanted, automatic bogging-down of your surfing speed caused by automated choices concerning File namespace interactions initiated by clicking on an image.
Diffs
mali niŋ- Option to not show page content below the diffs; checking this will suppress the page preview of the difference you're viewing.
- Option to omit a diff after performing a rollback
Advanced options
mali niŋ- Choose to display hyperlinks with underlines in your browser window always, never, or by browser or Wikipedia-skin default.
- Format links as stub links when the article they link to is smaller than the threshold you set on file size. Stub link formatting changes the link color to the dark brown displayed in this option's text. This option can help you see links to small articles (more likely to be stubs) so that you might expand them. It is also useful for spotting links to disambiguation pages, which are also relatively small. They are usually linked to in error, but often contain on their list a link to the correct article, making this error easy to fix.
- Show hidden categories.
Math
mali niŋ- Choose TeX, or MathJax for displaying mathematical formulas.
Languages
mali niŋThis section is empty. You can help by adding to it. (April 2023) |
Editing
mali niŋ- Preferences → Editing → Details = meta:Help:Preferences#Editing
Concerning the edit page, its initiation, and look and feel, Wikipedia offers a high number of options. Some of them are:
- "Teemi ma n yi ti bi sabi lahabali jia (bee din pun ku bɛni ka labisim lahabali ji' maa)" into the database. (Habit-forming.)
- "Enable VisualEditor". Get a word processor interface. No markup language at all.
- "Wuhimi johi lihi amaa ka di pa a lan yɛn labimi yooi". Get a dynamic web page. Browser reloading now gives a glimpse at the live original without having to leave the edit page. And there is no longer any need to create an entirely new page for each preview requested; live preview just reloads parts of its page, and so it offers no browser history backwards, but disturbs no history forward either. Saves some network bandwidth and lots of browser cache. Just save your edits before disabling JavaScript.[3] (First-time users should perform a simple compatibility test.[4])
The font size for the edit box can be set in Wikipedia editing preferences or in the browser. In Firefox, there are two font-size settings at Options → Content → "Default font" Advanced…, one for the edit box, and one for the rest of the page. If you just want uniformity, check to see if it allows Wikipedia to choose its own font; then you set Wikipedia's "Edit Area Font Style" to "Serif" or "Sans Serif", and the font size in the edit box will match the rest of the page.
The number of rows in the edit box is no longer set in preferences. For a temporary change, when the edit box is displayed, drag up or down the small square in the bottom right corner of the edit box. Alternatively, make the change stick by adding this line to your CSS file (in Preferences, Appearance), usually Special:MyPage/common.css:
#wpTextbox1 {height: 25em;}
where 25em
is an example (and typical), height.
Two editing toolbars are offered that will span the top of the edit box. (Wikipedia:Reftoolbar shows versions.)
- "Show edit toolbar" is the legacy 1.0 version that gives a row of buttons. (See m:help:Edit toolbar for details.)
- "Enable enhanced editing toolbar" gives a frame with icons. It is a default feature that can be turned off.
- is a search and replace dialog that can accept regular expressions as a search target for replacement text. (See a list of regular expression symbols[5])
To use more of your favorite text editor instead of just the edit box and toolbars, see Wikipedia:Text editor support. Also see the Gadgets tab.
Recent changes
mali niŋ- Preferences → Recent changes → Display options & Advanced options = meta:Help:Preferences#Recent changes
Recent changes refer to changes of pages in the database. Every time a wiki page is edited, and changes were actually made, a record is kept of the difference. For example, a page history shows the revisions for that particular page. But recent changes can report on more than just the revisions of a page, or an entire wiki, they can also report on the recent changes of an editor (their contributions). The user preferences for recent changes are the style in which these lists of revisions will appear:
- Length of the list
- Time window of the list
- Grouping methods of the list
The watchlist has even more finely tuned preferences, because like the edit window, it is often a core tool for editors.
More information about these various histories can be found at the following places. For global changes to Wikipedia pages, see Help:Recent changes. For user contributions, see Help:User contributions. For page histories, see Help:Page history. For other types of logs see Help:Log.
Pending changes
mali niŋ- Preferences → Recent changes → Pending changes = meta:Help:Preferences#Pending changes/Edit review
These settings are for advanced editors who have a detailed understanding of the five pillars and of the templates used to mark judgments on the page. Pending changes refers to the style of the presentation of
- new page "curation" tools: curation toolbar and new pages feed, and
- how recent changes appear on the page history of certain pages that have been configured for protection by reviewing any changes before they are applied to the public version of the page.
For an example of a page history showing the pending changes feature, click on the history of a page listed at Special:PendingChanges.
Watchlist
mali niŋ- Preferences → Watchlist → Details = meta:Help:Preferences#Watchlist
The watchlist options include which pages, and what "recent" means to you. If your Preferences has "Email me when a page or file on my watchlist is changed" set (at the bottom of the "User profile" tab), then only by visiting a page will you actually set its email notification flag. Once you miss the email for a particular page change or don't visit the page (or ignore the email), you will not receive any more emails for that page. You can still dutifully monitor that page by its watchlist edit-summaries, but its particular email notification flag will remain unset until you visit it. This facilitates monitoring a large watchlist while preventing potentially useless emails to you.
In case you want to set all email notifications anyway, you can at any time mark all pages "visited". If your Preferences → Gadgets has "Display pages on your watchlist that have changed since your last visit in bold", then your watchlist will have a button labeled "Mark all pages visited". That button will effectively set all of your email notification flags.
Notifications
mali niŋThese settings alter the Special:Notifications tool. The options for Notifications were first added in May 2013. See Wikipedia Signpost topic "English-language Wikipedia to be first to receive Echo deployment" for a brief overview.
For a full explanation of the specific preferences, see Wikipedia:Notifications § Preferences and settings.
- Email options
- Choose whether to opt-in or opt-out of email notifications (you must confirm your email address on your Preferences → User profile → Email options). You can also choose how often to receive email notifications, from single emails for each event to daily or weekly digests.
- Choose whether to receive plain text or HTML email.
- Notify me about these events
You can enable (or disable) individual types of notifications by checking (or unchecking) the boxes next to it. You can enable (or disable) notifications on the web or by email for most notification types (note that some notifications cannot be disabled, such as changes to your user rights or new talk page messages: these notifications are too important to be dismissed).
Wikipedia:Notifications § Types of notifications has a general list of the types of notifications. Special:DisplayNotificationsConfiguration lists all notification types available and how they are configured.
- Muted users
You can mute on-site notifications from individual users by enter their username into the box. You will still receive notifications if a muted user writes on your user talk page or reviews a page you have created. The muted user will still receive a successful mention notification, if they've enabled that preference.
- Muting pages
You can mute "page linked" notifications for specific pages by typing each page's name into the box.
Gadgets
mali niŋ- Preferences → Gadgets → Details = Wikipedia:Gadget#Currently installed gadgets
Gadgets are the software contributed by users, not the software that runs Wikipedia, and so you'll see the group names Editing and Appearance are the same as the tab names on the preferences page. If you see tabs on the preferences page your web-browsers already has JavaScript enabled. The gadgets go through an authoritative process before they appear on the list. There are gadgets for, browsing, editing, appearance and for compatibility. A general overview of the select gadgetry available there is as follows.
- Browsing
- Language translating
- Media files, search results, and diffs
- Twinkle admin tools for the advancing editor
- Teahouse for the new editor question
- Mousing over or hovering over an inline citation to read it
- Editing
- Citation modifying/expediting/proving
- Colorizing wikitext; Character toolsets
- Categorizing; Reviewing new articles; Filing disputes
- The Wiki Editor, WikEd, and WikEdDiff
- Appearance
- Editing the introductory section.
- Admin tools; Changing and adding to page layouts and controls
- Displaying diffs, or animations, or your very own local time on all timestamps
- Enabling an external search engine for searching Wikipedia
- Show the assessed class of an article, Featured, A, B, C, etc.
- Justifying paragraphs
- Compatibility
- Font and JavaScript support
- Advanced
- Regular expression tools
- Tracking software bugs
- Patrolling recent changes
See much more customization available in the pages in the See also section, such as a search and replace dialog that understands JavaScript regular expressions.
Beta features
mali niŋ- Preferences → Beta features → Details = mw:Beta Features
Beta Features is a way for users to test new features on Wikipedia and other Wikimedia sites before they are released for everyone.
Other tools
mali niŋThe MediaWiki preferences page offers a set of options for the generic user. If you discover a special role on Wikipedia, there is probably a powerful tool for it at Wikipedia:Tools § Browsing and editing.
Operating an account with a tool may carry side effects, such as popups, toolbars and frame objects on your browsing or editing page space that are sometimes burdensome, yet sometimes powerfully necessary. Rather than uninstalling, it is possible to just switch skins, because there are four skins, each with a pair of customizations. 1) Custom JavaScript has the tools. 2) Custom CSS can carry over your preferred fonts, colors, and frame borders to each skin, no matter what tools that skin may also be loaded with.
See also
mali niŋ- meta:Help:Preferences
- Wikipedia:Skin
- Wikipedia:Customisation
- Wikipedia:Scripts
- Wikipedia:Tools
- Wikipedia:Database reports/User preferences
Notes
mali niŋ- ↑ It is true that each tab will create a URL in the browser history, but these URLs do not represent historical differences in the JavaScript instance that loaded with the Preferences page itself. The per-tab URLs only purpose is to serve the browser's back- and forward-navigation.
- ↑ Wikipedia:Village pump (proposals)/Archive 184#Discourage en-xx UI variants
- ↑ If you disable JavaScript for any page on MediaWiki.org or Wikipedia.org, you will lose all unsaved edits in all tabs; yet disabling JavaScript is a common troubleshooting technique when diagnosing some preference-related browser behaviors.
- ↑ The danger in using Live preview is on first use with an incompatible browser. Try a simple test: make a change to the edit box, then reload the page.
- ↑ Compiled by the Mozilla Contributors.
!
This help page is a how-to guide. It details processes or procedures of some aspect(s) of Wikipedia's norms and practices. It is not one of Wikipedia's policies or guidelines, and may reflect varying levels of consensus and vetting. |
Preferences are the seventy or so user options for browsing, editing, searching, notifications, and more. A link to your Preferences page is available at the top of every Wikipedia page when you have an account, alongside links to your other account services such as your Contributions. Another way to get there is by navigating to the Special:Preferences page.
Once at your Preferences page, you can control much of the Wikipedia user interface through the many feature settings provided by MediaWiki (the software of Wikipedia): skins, plug-ins, date formats, a signature, and more. For example, you can select to be prompted to enter an edit summary if you forget to. The Preferences page also presents a link to customize your CSS to adjust your page style details.
Plus, there are hundreds of user tools to explore, many listed at Wikipedia:Tools § Browsing and editing, that can override or tweak preferences provided by MediaWiki. Each account has its own Custom JavaScript page where the tools install themselves, and where you can help develop them.
At their site, MediaWiki maintains a browser compatibility matrix. The time you spend in getting an account, setting your preferences, finding tools and testing your browser (before you ever lose an edit) will pay off.
Feature requests can be made, and bugs reported, as described at Wikipedia:Phabricator. The current set of preferences are largely the result of issues raised by newcomers at places such as the Village pump, and driven by regulars who hold long discussions and collectively drive issues.
Preferences page
mali niŋThe Preferences page is accessible when you are logged-in, but you must have JavaScript enabled in your browser, since the page and all its tabs are an extensive JavaScript application.
You do not need to click Save on every tab on the Preferences page, as the Save button affects all changes on all Preferences tabs.[1] You can go from tab to tab setting all your preferences before saving, because Save remembers your changes on the other tabs. To forget unsaved changes, simply leave the page without saving. If you wish to undo your saved changes, you will need to reset them manually.
Clicking Restore all default settings will harmlessly load another page, which will then offer the button to reset all preferences in every tab to their default values. This includes a few items that are stored as a preference, but that aren't directly editable in Special:Preferences. If you do reset your preferences, you can restore your custom signature from the wikitext of a history page, update your custom CSS or JavaScript from Wikipedia:Tools § Browsing and editing, and then re-select and save your preferences.
The default settings are aimed at newcomers editing articles. Intermediate editors tend to activate more features, such as "warn me if I forgot an edit summary", and advanced editors and administrators use the special settings, gadgets, and editors for their tasks.
You have the same username and password on sister projects such as Wiktionary, at MediaWiki.org itself, and on the Wikipedia of other languages. Each of your account's preferences are independent because each wiki is a website, with their own administration (namespaces, settings, accounts, etc.). Even the word "Preferences" on the top may be set differently! On the Simple English Wikipedia, it says "My settings".
User profile
mali niŋ- Preferences → User profile → Details = meta:Help:Preferences#User profile
Basic information
mali niŋ- Lists your account details and the number of edits you have made.
- Allows you to view/manage your global account info.
- Provides a link to change your password.
Internationalisation
mali niŋ- Change the language of user-interface messages. It does not affect articles and other pages made by editors. Note that many interface messages have been customized at the English Wikipedia but usually only for the default "en - English" which may for example add links to relevant help pages, processes and policies. Editors are discouraged from selecting "en-GB - British English" or "en-CA - Canadian English", which make a few spelling changes but omit many useful customizations.[2] Foreign languages also omit customizations but may be preferred by users with poor English abilities.
- Specify your preferred pronoun in order for the software to grammatically refer to you correctly. This is also visible to other users via certain tools, such as the they template and Navigation popups.
- More language settings: allows you to set the language in which Wikipedia menus and fonts are displayed; additionally, an option to set the language you edit in (input tools must be enabled).
Signature
mali niŋ- Displays the signature that will appear when you sign talk pages.
- Allows you to edit the signature, either using wiki markup (the option must be checked), or just plain text.
Email options
mali niŋ- An option to provide an email address. Although this is optional, please read the warning about losing your password and not having an email address on file.
- Options about use of your email address: enabling email from other users, sending copies of emails you send to other users, and receiving email when a page or file on your watchlist is changed.
- Before using email you must confirm your email address. See Help:Email confirmation
- "Email me when a page or file on my watchlist is changed", see Help:Email notification
Newcomer homepage
mali niŋAppearance
mali niŋ- Preferences → Appearance → Details = meta:Help:Preferences#Appearance
Change the web browser experience.
Skin
mali niŋSkin Preferences
mali niŋ- Choose the "skin", or "theme" of how Wikipedia is displayed.
- Access your Custom CSS or Custom JavaScript for individual skins and for global settings that apply to all skins. If the links are blue, you have created these special pages and this is a quick way to access and edit them. If the links are red, clicking the link will create the special page. You can also access your cross-wiki CSS and JavaScript pages from this section, but the color of the links will always be that of external links.
Reading Preferences
mali niŋDate format
mali niŋ- Option to set your date and time preferences; this is how dates will appear in article History pages, logs, etc. If set to "No preference", the format is HH:MM, DD MMMM YYYY (UTC), for example: 19:28, 5 Silimin gɔli November 2024 (UTC).
Time offset
mali niŋ- Shows the server time (UTC) and the local time based on the optional Time zone setting. You may opt to use the server time (UTC), have the offset calculated by the clock in your computer, or specify an offset from UTC in hours or by location.
- This does not affect times saved in editable pages, such as timestamps in signatures. For that, see Wikipedia:Comments in Local Time.
Files
mali niŋ- The images in an article are just a thumbnail (a preview). These will always be one of eight possible Thumbnail sizes. For the larger screen sizes choose the maximum, and for the smaller screen sizes choose the minimum thumbnail size. The default 220px is a midrange thumbnail-size. Have you changed your font size? Then you should match that font size to your chosen thumbnail size to increase caption readability.
- While viewing an article, if you click a thumbnail you will activate Media Viewer. Media Viewer is JavaScript, and it uses processing resources. It loads all the images in the article at high resolution, and this uses networking resources. This is the default. You can turn off Media Viewer to save resources: 1) to control all image sizing, 2) to navigate directly to a file page (instead) when you click on a thumbnail.
- You can target the Image size limit of the file page main image, (displayed in the front matter). On a faster network choose a larger size, and on a slower network choose a smaller Image size limit. The default 800×600px is a midrange Image size limit. File pages are on Commons wiki, and if logged in there, going there overrides your settings here.
- Note that you can both turn off Media Viewer and set a small Image size limit, and yet you will not limit your ability to avail yourself of any high resolution images listed at the bottom of that file page, when wanted. Doing so you can get full manual control of any unwanted, automatic bogging-down of your surfing speed caused by automated choices concerning File namespace interactions initiated by clicking on an image.
Diffs
mali niŋ- Option to not show page content below the diffs; checking this will suppress the page preview of the difference you're viewing.
- Option to omit a diff after performing a rollback
Advanced options
mali niŋ- Choose to display hyperlinks with underlines in your browser window always, never, or by browser or Wikipedia-skin default.
- Format links as stub links when the article they link to is smaller than the threshold you set on file size. Stub link formatting changes the link color to the dark brown displayed in this option's text. This option can help you see links to small articles (more likely to be stubs) so that you might expand them. It is also useful for spotting links to disambiguation pages, which are also relatively small. They are usually linked to in error, but often contain on their list a link to the correct article, making this error easy to fix.
- Show hidden categories.
Math
mali niŋ- Choose TeX, or MathJax for displaying mathematical formulas.
Languages
mali niŋThis section is empty. You can help by adding to it. (April 2023) |
Editing
mali niŋ- Preferences → Editing → Details = meta:Help:Preferences#Editing
Concerning the edit page, its initiation, and look and feel, Wikipedia offers a high number of options. Some of them are:
- "Teemi ma n yi ti bi sabi lahabali jia (bee din pun ku bɛni ka labisim lahabali ji' maa)" into the database. (Habit-forming.)
- "Enable VisualEditor". Get a word processor interface. No markup language at all.
- "Wuhimi johi lihi amaa ka di pa a lan yɛn labimi yooi". Get a dynamic web page. Browser reloading now gives a glimpse at the live original without having to leave the edit page. And there is no longer any need to create an entirely new page for each preview requested; live preview just reloads parts of its page, and so it offers no browser history backwards, but disturbs no history forward either. Saves some network bandwidth and lots of browser cache. Just save your edits before disabling JavaScript.[3] (First-time users should perform a simple compatibility test.[4])
The font size for the edit box can be set in Wikipedia editing preferences or in the browser. In Firefox, there are two font-size settings at Options → Content → "Default font" Advanced…, one for the edit box, and one for the rest of the page. If you just want uniformity, check to see if it allows Wikipedia to choose its own font; then you set Wikipedia's "Edit Area Font Style" to "Serif" or "Sans Serif", and the font size in the edit box will match the rest of the page.
The number of rows in the edit box is no longer set in preferences. For a temporary change, when the edit box is displayed, drag up or down the small square in the bottom right corner of the edit box. Alternatively, make the change stick by adding this line to your CSS file (in Preferences, Appearance), usually Special:MyPage/common.css:
#wpTextbox1 {height: 25em;}
where 25em
is an example (and typical), height.
Two editing toolbars are offered that will span the top of the edit box. (Wikipedia:Reftoolbar shows versions.)
- "Show edit toolbar" is the legacy 1.0 version that gives a row of buttons. (See m:help:Edit toolbar for details.)
- "Enable enhanced editing toolbar" gives a frame with icons. It is a default feature that can be turned off.
- is a search and replace dialog that can accept regular expressions as a search target for replacement text. (See a list of regular expression symbols[5])
To use more of your favorite text editor instead of just the edit box and toolbars, see Wikipedia:Text editor support. Also see the Gadgets tab.
Recent changes
mali niŋ- Preferences → Recent changes → Display options & Advanced options = meta:Help:Preferences#Recent changes
Recent changes refer to changes of pages in the database. Every time a wiki page is edited, and changes were actually made, a record is kept of the difference. For example, a page history shows the revisions for that particular page. But recent changes can report on more than just the revisions of a page, or an entire wiki, they can also report on the recent changes of an editor (their contributions). The user preferences for recent changes are the style in which these lists of revisions will appear:
- Length of the list
- Time window of the list
- Grouping methods of the list
The watchlist has even more finely tuned preferences, because like the edit window, it is often a core tool for editors.
More information about these various histories can be found at the following places. For global changes to Wikipedia pages, see Help:Recent changes. For user contributions, see Help:User contributions. For page histories, see Help:Page history. For other types of logs see Help:Log.
Pending changes
mali niŋ- Preferences → Recent changes → Pending changes = meta:Help:Preferences#Pending changes/Edit review
These settings are for advanced editors who have a detailed understanding of the five pillars and of the templates used to mark judgments on the page. Pending changes refers to the style of the presentation of
- new page "curation" tools: curation toolbar and new pages feed, and
- how recent changes appear on the page history of certain pages that have been configured for protection by reviewing any changes before they are applied to the public version of the page.
For an example of a page history showing the pending changes feature, click on the history of a page listed at Special:PendingChanges.
Watchlist
mali niŋ- Preferences → Watchlist → Details = meta:Help:Preferences#Watchlist
The watchlist options include which pages, and what "recent" means to you. If your Preferences has "Email me when a page or file on my watchlist is changed" set (at the bottom of the "User profile" tab), then only by visiting a page will you actually set its email notification flag. Once you miss the email for a particular page change or don't visit the page (or ignore the email), you will not receive any more emails for that page. You can still dutifully monitor that page by its watchlist edit-summaries, but its particular email notification flag will remain unset until you visit it. This facilitates monitoring a large watchlist while preventing potentially useless emails to you.
In case you want to set all email notifications anyway, you can at any time mark all pages "visited". If your Preferences → Gadgets has "Display pages on your watchlist that have changed since your last visit in bold", then your watchlist will have a button labeled "Mark all pages visited". That button will effectively set all of your email notification flags.
Notifications
mali niŋThese settings alter the Special:Notifications tool. The options for Notifications were first added in May 2013. See Wikipedia Signpost topic "English-language Wikipedia to be first to receive Echo deployment" for a brief overview.
For a full explanation of the specific preferences, see Wikipedia:Notifications § Preferences and settings.
- Email options
- Choose whether to opt-in or opt-out of email notifications (you must confirm your email address on your Preferences → User profile → Email options). You can also choose how often to receive email notifications, from single emails for each event to daily or weekly digests.
- Choose whether to receive plain text or HTML email.
- Notify me about these events
You can enable (or disable) individual types of notifications by checking (or unchecking) the boxes next to it. You can enable (or disable) notifications on the web or by email for most notification types (note that some notifications cannot be disabled, such as changes to your user rights or new talk page messages: these notifications are too important to be dismissed).
Wikipedia:Notifications § Types of notifications has a general list of the types of notifications. Special:DisplayNotificationsConfiguration lists all notification types available and how they are configured.
- Muted users
You can mute on-site notifications from individual users by enter their username into the box. You will still receive notifications if a muted user writes on your user talk page or reviews a page you have created. The muted user will still receive a successful mention notification, if they've enabled that preference.
- Muting pages
You can mute "page linked" notifications for specific pages by typing each page's name into the box.
Gadgets
mali niŋ- Preferences → Gadgets → Details = Wikipedia:Gadget#Currently installed gadgets
Gadgets are the software contributed by users, not the software that runs Wikipedia, and so you'll see the group names Editing and Appearance are the same as the tab names on the preferences page. If you see tabs on the preferences page your web-browsers already has JavaScript enabled. The gadgets go through an authoritative process before they appear on the list. There are gadgets for, browsing, editing, appearance and for compatibility. A general overview of the select gadgetry available there is as follows.
- Browsing
- Language translating
- Media files, search results, and diffs
- Twinkle admin tools for the advancing editor
- Teahouse for the new editor question
- Mousing over or hovering over an inline citation to read it
- Editing
- Citation modifying/expediting/proving
- Colorizing wikitext; Character toolsets
- Categorizing; Reviewing new articles; Filing disputes
- The Wiki Editor, WikEd, and WikEdDiff
- Appearance
- Editing the introductory section.
- Admin tools; Changing and adding to page layouts and controls
- Displaying diffs, or animations, or your very own local time on all timestamps
- Enabling an external search engine for searching Wikipedia
- Show the assessed class of an article, Featured, A, B, C, etc.
- Justifying paragraphs
- Compatibility
- Font and JavaScript support
- Advanced
- Regular expression tools
- Tracking software bugs
- Patrolling recent changes
See much more customization available in the pages in the See also section, such as a search and replace dialog that understands JavaScript regular expressions.
Beta features
mali niŋ- Preferences → Beta features → Details = mw:Beta Features
Beta Features is a way for users to test new features on Wikipedia and other Wikimedia sites before they are released for everyone.
Other tools
mali niŋThe MediaWiki preferences page offers a set of options for the generic user. If you discover a special role on Wikipedia, there is probably a powerful tool for it at Wikipedia:Tools § Browsing and editing.
Operating an account with a tool may carry side effects, such as popups, toolbars and frame objects on your browsing or editing page space that are sometimes burdensome, yet sometimes powerfully necessary. Rather than uninstalling, it is possible to just switch skins, because there are four skins, each with a pair of customizations. 1) Custom JavaScript has the tools. 2) Custom CSS can carry over your preferred fonts, colors, and frame borders to each skin, no matter what tools that skin may also be loaded with.
See also
mali niŋ- meta:Help:Preferences
- Wikipedia:Skin
- Wikipedia:Customisation
- Wikipedia:Scripts
- Wikipedia:Tools
- Wikipedia:Database reports/User preferences
Notes
mali niŋ- ↑ It is true that each tab will create a URL in the browser history, but these URLs do not represent historical differences in the JavaScript instance that loaded with the Preferences page itself. The per-tab URLs only purpose is to serve the browser's back- and forward-navigation.
- ↑ Wikipedia:Village pump (proposals)/Archive 184#Discourage en-xx UI variants
- ↑ If you disable JavaScript for any page on MediaWiki.org or Wikipedia.org, you will lose all unsaved edits in all tabs; yet disabling JavaScript is a common troubleshooting technique when diagnosing some preference-related browser behaviors.
- ↑ The danger in using Live preview is on first use with an incompatible browser. Try a simple test: make a change to the edit box, then reload the page.
- ↑ Compiled by the Mozilla Contributors.
!
This help page is a how-to guide. It details processes or procedures of some aspect(s) of Wikipedia's norms and practices. It is not one of Wikipedia's policies or guidelines, and may reflect varying levels of consensus and vetting. |
Preferences are the seventy or so user options for browsing, editing, searching, notifications, and more. A link to your Preferences page is available at the top of every Wikipedia page when you have an account, alongside links to your other account services such as your Contributions. Another way to get there is by navigating to the Special:Preferences page.
Once at your Preferences page, you can control much of the Wikipedia user interface through the many feature settings provided by MediaWiki (the software of Wikipedia): skins, plug-ins, date formats, a signature, and more. For example, you can select to be prompted to enter an edit summary if you forget to. The Preferences page also presents a link to customize your CSS to adjust your page style details.
Plus, there are hundreds of user tools to explore, many listed at Wikipedia:Tools § Browsing and editing, that can override or tweak preferences provided by MediaWiki. Each account has its own Custom JavaScript page where the tools install themselves, and where you can help develop them.
At their site, MediaWiki maintains a browser compatibility matrix. The time you spend in getting an account, setting your preferences, finding tools and testing your browser (before you ever lose an edit) will pay off.
Feature requests can be made, and bugs reported, as described at Wikipedia:Phabricator. The current set of preferences are largely the result of issues raised by newcomers at places such as the Village pump, and driven by regulars who hold long discussions and collectively drive issues.
Preferences page
mali niŋThe Preferences page is accessible when you are logged-in, but you must have JavaScript enabled in your browser, since the page and all its tabs are an extensive JavaScript application.
You do not need to click Save on every tab on the Preferences page, as the Save button affects all changes on all Preferences tabs.[1] You can go from tab to tab setting all your preferences before saving, because Save remembers your changes on the other tabs. To forget unsaved changes, simply leave the page without saving. If you wish to undo your saved changes, you will need to reset them manually.
Clicking Restore all default settings will harmlessly load another page, which will then offer the button to reset all preferences in every tab to their default values. This includes a few items that are stored as a preference, but that aren't directly editable in Special:Preferences. If you do reset your preferences, you can restore your custom signature from the wikitext of a history page, update your custom CSS or JavaScript from Wikipedia:Tools § Browsing and editing, and then re-select and save your preferences.
The default settings are aimed at newcomers editing articles. Intermediate editors tend to activate more features, such as "warn me if I forgot an edit summary", and advanced editors and administrators use the special settings, gadgets, and editors for their tasks.
You have the same username and password on sister projects such as Wiktionary, at MediaWiki.org itself, and on the Wikipedia of other languages. Each of your account's preferences are independent because each wiki is a website, with their own administration (namespaces, settings, accounts, etc.). Even the word "Preferences" on the top may be set differently! On the Simple English Wikipedia, it says "My settings".
User profile
mali niŋ- Preferences → User profile → Details = meta:Help:Preferences#User profile
Basic information
mali niŋ- Lists your account details and the number of edits you have made.
- Allows you to view/manage your global account info.
- Provides a link to change your password.
Internationalisation
mali niŋ- Change the language of user-interface messages. It does not affect articles and other pages made by editors. Note that many interface messages have been customized at the English Wikipedia but usually only for the default "en - English" which may for example add links to relevant help pages, processes and policies. Editors are discouraged from selecting "en-GB - British English" or "en-CA - Canadian English", which make a few spelling changes but omit many useful customizations.[2] Foreign languages also omit customizations but may be preferred by users with poor English abilities.
- Specify your preferred pronoun in order for the software to grammatically refer to you correctly. This is also visible to other users via certain tools, such as the they template and Navigation popups.
- More language settings: allows you to set the language in which Wikipedia menus and fonts are displayed; additionally, an option to set the language you edit in (input tools must be enabled).
Signature
mali niŋ- Displays the signature that will appear when you sign talk pages.
- Allows you to edit the signature, either using wiki markup (the option must be checked), or just plain text.
Email options
mali niŋ- An option to provide an email address. Although this is optional, please read the warning about losing your password and not having an email address on file.
- Options about use of your email address: enabling email from other users, sending copies of emails you send to other users, and receiving email when a page or file on your watchlist is changed.
- Before using email you must confirm your email address. See Help:Email confirmation
- "Email me when a page or file on my watchlist is changed", see Help:Email notification
Newcomer homepage
mali niŋAppearance
mali niŋ- Preferences → Appearance → Details = meta:Help:Preferences#Appearance
Change the web browser experience.
Skin
mali niŋSkin Preferences
mali niŋ- Choose the "skin", or "theme" of how Wikipedia is displayed.
- Access your Custom CSS or Custom JavaScript for individual skins and for global settings that apply to all skins. If the links are blue, you have created these special pages and this is a quick way to access and edit them. If the links are red, clicking the link will create the special page. You can also access your cross-wiki CSS and JavaScript pages from this section, but the color of the links will always be that of external links.
Reading Preferences
mali niŋDate format
mali niŋ- Option to set your date and time preferences; this is how dates will appear in article History pages, logs, etc. If set to "No preference", the format is HH:MM, DD MMMM YYYY (UTC), for example: 19:28, 5 Silimin gɔli November 2024 (UTC).
Time offset
mali niŋ- Shows the server time (UTC) and the local time based on the optional Time zone setting. You may opt to use the server time (UTC), have the offset calculated by the clock in your computer, or specify an offset from UTC in hours or by location.
- This does not affect times saved in editable pages, such as timestamps in signatures. For that, see Wikipedia:Comments in Local Time.
Files
mali niŋ- The images in an article are just a thumbnail (a preview). These will always be one of eight possible Thumbnail sizes. For the larger screen sizes choose the maximum, and for the smaller screen sizes choose the minimum thumbnail size. The default 220px is a midrange thumbnail-size. Have you changed your font size? Then you should match that font size to your chosen thumbnail size to increase caption readability.
- While viewing an article, if you click a thumbnail you will activate Media Viewer. Media Viewer is JavaScript, and it uses processing resources. It loads all the images in the article at high resolution, and this uses networking resources. This is the default. You can turn off Media Viewer to save resources: 1) to control all image sizing, 2) to navigate directly to a file page (instead) when you click on a thumbnail.
- You can target the Image size limit of the file page main image, (displayed in the front matter). On a faster network choose a larger size, and on a slower network choose a smaller Image size limit. The default 800×600px is a midrange Image size limit. File pages are on Commons wiki, and if logged in there, going there overrides your settings here.
- Note that you can both turn off Media Viewer and set a small Image size limit, and yet you will not limit your ability to avail yourself of any high resolution images listed at the bottom of that file page, when wanted. Doing so you can get full manual control of any unwanted, automatic bogging-down of your surfing speed caused by automated choices concerning File namespace interactions initiated by clicking on an image.
Diffs
mali niŋ- Option to not show page content below the diffs; checking this will suppress the page preview of the difference you're viewing.
- Option to omit a diff after performing a rollback
Advanced options
mali niŋ- Choose to display hyperlinks with underlines in your browser window always, never, or by browser or Wikipedia-skin default.
- Format links as stub links when the article they link to is smaller than the threshold you set on file size. Stub link formatting changes the link color to the dark brown displayed in this option's text. This option can help you see links to small articles (more likely to be stubs) so that you might expand them. It is also useful for spotting links to disambiguation pages, which are also relatively small. They are usually linked to in error, but often contain on their list a link to the correct article, making this error easy to fix.
- Show hidden categories.
Math
mali niŋ- Choose TeX, or MathJax for displaying mathematical formulas.
Languages
mali niŋThis section is empty. You can help by adding to it. (April 2023) |
Editing
mali niŋ- Preferences → Editing → Details = meta:Help:Preferences#Editing
Concerning the edit page, its initiation, and look and feel, Wikipedia offers a high number of options. Some of them are:
- "Teemi ma n yi ti bi sabi lahabali jia (bee din pun ku bɛni ka labisim lahabali ji' maa)" into the database. (Habit-forming.)
- "Enable VisualEditor". Get a word processor interface. No markup language at all.
- "Wuhimi johi lihi amaa ka di pa a lan yɛn labimi yooi". Get a dynamic web page. Browser reloading now gives a glimpse at the live original without having to leave the edit page. And there is no longer any need to create an entirely new page for each preview requested; live preview just reloads parts of its page, and so it offers no browser history backwards, but disturbs no history forward either. Saves some network bandwidth and lots of browser cache. Just save your edits before disabling JavaScript.[3] (First-time users should perform a simple compatibility test.[4])
The font size for the edit box can be set in Wikipedia editing preferences or in the browser. In Firefox, there are two font-size settings at Options → Content → "Default font" Advanced…, one for the edit box, and one for the rest of the page. If you just want uniformity, check to see if it allows Wikipedia to choose its own font; then you set Wikipedia's "Edit Area Font Style" to "Serif" or "Sans Serif", and the font size in the edit box will match the rest of the page.
The number of rows in the edit box is no longer set in preferences. For a temporary change, when the edit box is displayed, drag up or down the small square in the bottom right corner of the edit box. Alternatively, make the change stick by adding this line to your CSS file (in Preferences, Appearance), usually Special:MyPage/common.css:
#wpTextbox1 {height: 25em;}
where 25em
is an example (and typical), height.
Two editing toolbars are offered that will span the top of the edit box. (Wikipedia:Reftoolbar shows versions.)
- "Show edit toolbar" is the legacy 1.0 version that gives a row of buttons. (See m:help:Edit toolbar for details.)
- "Enable enhanced editing toolbar" gives a frame with icons. It is a default feature that can be turned off.
- is a search and replace dialog that can accept regular expressions as a search target for replacement text. (See a list of regular expression symbols[5])
To use more of your favorite text editor instead of just the edit box and toolbars, see Wikipedia:Text editor support. Also see the Gadgets tab.
Recent changes
mali niŋ- Preferences → Recent changes → Display options & Advanced options = meta:Help:Preferences#Recent changes
Recent changes refer to changes of pages in the database. Every time a wiki page is edited, and changes were actually made, a record is kept of the difference. For example, a page history shows the revisions for that particular page. But recent changes can report on more than just the revisions of a page, or an entire wiki, they can also report on the recent changes of an editor (their contributions). The user preferences for recent changes are the style in which these lists of revisions will appear:
- Length of the list
- Time window of the list
- Grouping methods of the list
The watchlist has even more finely tuned preferences, because like the edit window, it is often a core tool for editors.
More information about these various histories can be found at the following places. For global changes to Wikipedia pages, see Help:Recent changes. For user contributions, see Help:User contributions. For page histories, see Help:Page history. For other types of logs see Help:Log.
Pending changes
mali niŋ- Preferences → Recent changes → Pending changes = meta:Help:Preferences#Pending changes/Edit review
These settings are for advanced editors who have a detailed understanding of the five pillars and of the templates used to mark judgments on the page. Pending changes refers to the style of the presentation of
- new page "curation" tools: curation toolbar and new pages feed, and
- how recent changes appear on the page history of certain pages that have been configured for protection by reviewing any changes before they are applied to the public version of the page.
For an example of a page history showing the pending changes feature, click on the history of a page listed at Special:PendingChanges.
Watchlist
mali niŋ- Preferences → Watchlist → Details = meta:Help:Preferences#Watchlist
The watchlist options include which pages, and what "recent" means to you. If your Preferences has "Email me when a page or file on my watchlist is changed" set (at the bottom of the "User profile" tab), then only by visiting a page will you actually set its email notification flag. Once you miss the email for a particular page change or don't visit the page (or ignore the email), you will not receive any more emails for that page. You can still dutifully monitor that page by its watchlist edit-summaries, but its particular email notification flag will remain unset until you visit it. This facilitates monitoring a large watchlist while preventing potentially useless emails to you.
In case you want to set all email notifications anyway, you can at any time mark all pages "visited". If your Preferences → Gadgets has "Display pages on your watchlist that have changed since your last visit in bold", then your watchlist will have a button labeled "Mark all pages visited". That button will effectively set all of your email notification flags.
Notifications
mali niŋThese settings alter the Special:Notifications tool. The options for Notifications were first added in May 2013. See Wikipedia Signpost topic "English-language Wikipedia to be first to receive Echo deployment" for a brief overview.
For a full explanation of the specific preferences, see Wikipedia:Notifications § Preferences and settings.
- Email options
- Choose whether to opt-in or opt-out of email notifications (you must confirm your email address on your Preferences → User profile → Email options). You can also choose how often to receive email notifications, from single emails for each event to daily or weekly digests.
- Choose whether to receive plain text or HTML email.
- Notify me about these events
You can enable (or disable) individual types of notifications by checking (or unchecking) the boxes next to it. You can enable (or disable) notifications on the web or by email for most notification types (note that some notifications cannot be disabled, such as changes to your user rights or new talk page messages: these notifications are too important to be dismissed).
Wikipedia:Notifications § Types of notifications has a general list of the types of notifications. Special:DisplayNotificationsConfiguration lists all notification types available and how they are configured.
- Muted users
You can mute on-site notifications from individual users by enter their username into the box. You will still receive notifications if a muted user writes on your user talk page or reviews a page you have created. The muted user will still receive a successful mention notification, if they've enabled that preference.
- Muting pages
You can mute "page linked" notifications for specific pages by typing each page's name into the box.
Gadgets
mali niŋ- Preferences → Gadgets → Details = Wikipedia:Gadget#Currently installed gadgets
Gadgets are the software contributed by users, not the software that runs Wikipedia, and so you'll see the group names Editing and Appearance are the same as the tab names on the preferences page. If you see tabs on the preferences page your web-browsers already has JavaScript enabled. The gadgets go through an authoritative process before they appear on the list. There are gadgets for, browsing, editing, appearance and for compatibility. A general overview of the select gadgetry available there is as follows.
- Browsing
- Language translating
- Media files, search results, and diffs
- Twinkle admin tools for the advancing editor
- Teahouse for the new editor question
- Mousing over or hovering over an inline citation to read it
- Editing
- Citation modifying/expediting/proving
- Colorizing wikitext; Character toolsets
- Categorizing; Reviewing new articles; Filing disputes
- The Wiki Editor, WikEd, and WikEdDiff
- Appearance
- Editing the introductory section.
- Admin tools; Changing and adding to page layouts and controls
- Displaying diffs, or animations, or your very own local time on all timestamps
- Enabling an external search engine for searching Wikipedia
- Show the assessed class of an article, Featured, A, B, C, etc.
- Justifying paragraphs
- Compatibility
- Font and JavaScript support
- Advanced
- Regular expression tools
- Tracking software bugs
- Patrolling recent changes
See much more customization available in the pages in the See also section, such as a search and replace dialog that understands JavaScript regular expressions.
Beta features
mali niŋ- Preferences → Beta features → Details = mw:Beta Features
Beta Features is a way for users to test new features on Wikipedia and other Wikimedia sites before they are released for everyone.
Other tools
mali niŋThe MediaWiki preferences page offers a set of options for the generic user. If you discover a special role on Wikipedia, there is probably a powerful tool for it at Wikipedia:Tools § Browsing and editing.
Operating an account with a tool may carry side effects, such as popups, toolbars and frame objects on your browsing or editing page space that are sometimes burdensome, yet sometimes powerfully necessary. Rather than uninstalling, it is possible to just switch skins, because there are four skins, each with a pair of customizations. 1) Custom JavaScript has the tools. 2) Custom CSS can carry over your preferred fonts, colors, and frame borders to each skin, no matter what tools that skin may also be loaded with.
See also
mali niŋ- meta:Help:Preferences
- Wikipedia:Skin
- Wikipedia:Customisation
- Wikipedia:Scripts
- Wikipedia:Tools
- Wikipedia:Database reports/User preferences
Notes
mali niŋ- ↑ It is true that each tab will create a URL in the browser history, but these URLs do not represent historical differences in the JavaScript instance that loaded with the Preferences page itself. The per-tab URLs only purpose is to serve the browser's back- and forward-navigation.
- ↑ Wikipedia:Village pump (proposals)/Archive 184#Discourage en-xx UI variants
- ↑ If you disable JavaScript for any page on MediaWiki.org or Wikipedia.org, you will lose all unsaved edits in all tabs; yet disabling JavaScript is a common troubleshooting technique when diagnosing some preference-related browser behaviors.
- ↑ The danger in using Live preview is on first use with an incompatible browser. Try a simple test: make a change to the edit box, then reload the page.
- ↑ Compiled by the Mozilla Contributors.
!
In addition to the above, global functions may be available to Buffer-HTML if enabled; these functions are the same for all Module:Buffer objectsTɛmplet:--i.e. the self action is never redirected.
Element-Buffer functions
mali niŋ
Element-Buffer object
mali niŋSharing the same metatable as with regular Buffer objects, Element-Buffers concatenate the same way when called to produce a string analogous to the JavaScript DOM "innerHTML" property. In other words, when strung, it is generally the contents of the Buffer-HTML object without the "outerHTML" or tag.
There are exceptions to this "innerHTML" behavior. For instance, as appended to another object via Tɛmplet:Scribunto/helper, an Element-Buffer and its Buffer-HTML are interchangeable (though appending the former via Tɛmplet:Luaself only includes the inner result).
Also, using the concatenation operator ..
on an Element-Buffer includes its tag in a manner depending on if it is selfClosing:
- For most tags, the conjoined string is placed inside the tag, e.g.
Buffer:_inHTML'p' 'inner text' .. 1
returns'<p>inner text1</p>'
. - For selfClosers, the
..
op redirects to its Buffer-HTML, e.g. insert:_add{selfClosing=true}
in the above example before.. 1
to produce'<p />1'
.
You may use most Buffer object functions normally, however if there is a Buffer-HTML version, it instead behaves as though chained on the outer HTML object.[note 20] You may also chain any mw.html object function. Unless otherwise indicated, such returns a wrapper method that merely redirects the self-action to the outside Buffer-HTML.[note 21]
As a final note, Element-Buffers are in permanent raw mode since it is expected that some mw.html method (e.g. :tag and :node) may or will append non-string elements.
Element-Buffer:done
mali niŋWhen passed nothing, this should behave just like Tɛmplet:Scribunto/helper as called the "outer" HTML objectTɛmplet:--returning Buffer-HTML.parent
, if available, or Buffer-HTML if not.
However, this has been re-designed to accept ops
, the number of :done() operations to perform. Thus, Element–Buffer:done(4)
is equivalent to Buffer–HTML:done():done():done():done()
.
Pass 0
(zero) as dones to return to the Element-Buffer's direct HTML container.
Finally, keep in mind that Buffer-HTML objects use the original mw.html:done (albeit in a light wrapper).
Element-Buffer:tag
mali niŋThis uses the same helper method as Tɛmplet:Luaself to handle arguments and produce new Buffer-HTML objects, selectively passing args to Tɛmplet:Luaself when it contains keys not used by Tɛmplet:Scribunto/helper.
As may be expected, this differs from Buffer:_inHTML in that this actually appends the tag and will set a mw.html-style parent reference. This also lacks the other function's "auto-done" feature for selfClosing tags.
As with the other Element-Buffer remake of an mw.html method, the features described here do not apply to the version used by Buffer-HTML objects.
Element-Buffer:_add
mali niŋTakes a table as its only argument. This then thoroughly iterates all number keys from lowest† to highest using this module's custom __pairs method. Most values append as wikitext if valid. If a table is indexed at a number key, this recursively iterates the table before moving on to the next key.
After processing all number key-value pairs, this then iterates the other (non-number) keys. For those naming a core Buffer object function, this selectively unpacks args
in a manner described at Tɛmplet:Luaself when that function is passed the nanKey parameter (excepting that this does not read numbers as pos, i.e. treats them the same way as strings).
This also accepts keys naming HTML and global functions as well as mw.html arguments. Thus, Element–Buffer:_add{ tag = 'br', 'text'}
appends a BR tag after the text and Element–Buffer:_add{ {tag = 'br' }, 'text'}
appends the BR before the text. Note however that how this handles args for such keys depends on the particular function or argument named:
args.argName
mali niŋElement–Buffer:_add{ arg = value }
The effect of passing args with keys such as args.selfClosing
and args.parent
is the same as though args were passed to Tɛmplet:Scribunto/helper. This also takes one additional arg, i.e. args.tagName
, which value replaces the original tagName of the HTML object (or, if false, removes the tag).
Note that these are the only keys for which a boolean arg would result in an op. (For Buffer object functions that do not no-op when passed only a boolean, place the boolean in an args table for unpacking.)
args.cssName
mali niŋElement–Buffer:_add{ cssName = cssValue }
A non-number key and value pair may default as the cssName
and cssValue
parameters for Tɛmplet:Scribunto/helper when the key matches none of the three argName keys nor the name of any available function for Buffer and mw.html objects.
This sends non-boolean cssValue though Tɛmplet:Scribunto/helper prior to forwarding it to mw.html:css. Because this is the default, any typoed key goes to mw.html:css as cssName. Names of functions not yet loaded also end up there.
For convenience, any _
character in the key string is automatically substituted with the -
character; thus border_bottom_style =
is equivalent to ['border-bottom-style'] =
.
The form Element-Buffer:_add{ css = { cssName = cssValue } }
also works (or to clear a previously set value; see example at args.htmlFunction for more details).
Element–Buffer:_add{ tag = tagName }
Element–Buffer:_add{ tag = { tagName, args–list } }
Set the key args.tag
to a string and this calls Tɛmplet:Scribunto/helper with it as the tagName argument. This then raw inserts the returned mw.html object ("tag"), emulating the effect of Tɛmplet:Scribunto/helper minus parent references, which are unnecessary.
Pair the args.tag key with a table value and this calls mw.html.create with table[1]
as tagName (or nil if #invalid), appending it as described above for string values, but also pointing tag.parent
to the Element-Buffer's parent as well as temporarily setting the tag as the parent Buffer of tag.nodes
. This then treats tag.nodes as a pseudo-Element-Buffer, recursing tag.nodes as "self" and the table as args, though only iterating keys not equal to 1
(or less).[*]
Note this appends normal mw.html objects. That said, most Buffer functions named in args-list should still work as though the tag and tag.nodes
were Buffer objects.[note 22]
Upon completing a recursive iteration for args.tag, this checks if the tag is selfClosing, in which case, this sets tag.nodes to nil. Likewise, if its tagName property evaluates false, this nils tag.styles and tag.attributes. Such presumes those properties will not be modified afterwards, so use mw.html:tag outside of Element-Buffer:_add if such is not the case.
Element–Buffer:_add{ done = wikitext }
Element–Buffer:_add{ done = { ops, args–list } }
Similar to args.tag, this treats the first index of the table as the ops argument of Tɛmplet:Luaself. After calling that function, this then iterates all subsequent keys in a recursive call on the Element-Buffer of the Buffer-HTML object returned.
args.allDone
mali niŋElement–Buffer:_add{ allDone = wikitext }
Element–Buffer:_add{ allDone = { args–list } }
Similar to the previous two, except that the first index is not used as an argument; thus, the entire table is iterated.
Element–Buffer:_add{ globalFunction = name }
Element–Buffer:_add{ globalFunction = { name, save, args–list } }
Element–Buffer:_add{ _B = { var, args–list } }
If the global functions have been loaded and a key matches one, this calls the function with the first two arguments Tɛmplet:Scribunto/helpered from the paired args-list table. This then recursively iterates the list, excluding keys less than or equal to 2
, with whatever object is returned as self. However, if the returned object has a metatable and object.nodes
exists, the self will be object.nodes instead.
Because Tɛmplet:Luaself takes only one argument, args._B only unpacks the first index and starts the iteration after that key.
If neither of the first two keys evaluate true, this assumes the paired value is a string for use as the name argument for the function matching its key.[note 23] In that case, the current call stack's self (an Element-Buffer or tag.nodes if this was called indirectly) is self for the global function.
args.htmlFunction
mali niŋElement–Buffer:_add{ htmlFunction = object }
Element–Buffer:_add{ htmlFunction = { arg-list, name = value } }
If args.key matches an Tɛmplet:Scribunto/helper that does not have its own args section, this checks if the associated object is table. If not a table, or if object.nodes
evaluates true, this calls the mw.html function with the object as the only argument.
For table objects without an object.nodes, this iterates the table (non-recursively), repeatedly calling the named mw.html function with one or two arguments depending on key's type in each loop. Non-number key-value pairs are both passed as arguments. For numeric indices, only the value is passed. Boolean values are a no-op.
Unlike with most implementions of Module:Buffer's __pairs, this first loops through non-number keys, followed by number keys (still ordered from lowest to highest). Thus, something like Element–Buffer:_add{ attr = { 'width', width = 20 } }
is equivalent to Element–Buffer:attr( 'width', 20 ):attr( 'width' )()
, setting then unsetting the width attribute and returning the Element-Buffer for a net no-op (though the practical purpose of such is a mystery for this developer).
For args.css
only, this auto-replaces underscores with hypens for string keysTɛmplet:--i.e., you may save four keystrokes/pair by typing css_property =
instead of ["css-property"] =
. This does not apply to strings indexed at number keys.
This help page is a how-to guide. It details processes or procedures of some aspect(s) of Wikipedia's norms and practices. It is not one of Wikipedia's policies or guidelines, and may reflect varying levels of consensus and vetting. |
Preferences are the seventy or so user options for browsing, editing, searching, notifications, and more. A link to your Preferences page is available at the top of every Wikipedia page when you have an account, alongside links to your other account services such as your Contributions. Another way to get there is by navigating to the Special:Preferences page.
Once at your Preferences page, you can control much of the Wikipedia user interface through the many feature settings provided by MediaWiki (the software of Wikipedia): skins, plug-ins, date formats, a signature, and more. For example, you can select to be prompted to enter an edit summary if you forget to. The Preferences page also presents a link to customize your CSS to adjust your page style details.
Plus, there are hundreds of user tools to explore, many listed at Wikipedia:Tools § Browsing and editing, that can override or tweak preferences provided by MediaWiki. Each account has its own Custom JavaScript page where the tools install themselves, and where you can help develop them.
At their site, MediaWiki maintains a browser compatibility matrix. The time you spend in getting an account, setting your preferences, finding tools and testing your browser (before you ever lose an edit) will pay off.
Feature requests can be made, and bugs reported, as described at Wikipedia:Phabricator. The current set of preferences are largely the result of issues raised by newcomers at places such as the Village pump, and driven by regulars who hold long discussions and collectively drive issues.
Preferences page
mali niŋThe Preferences page is accessible when you are logged-in, but you must have JavaScript enabled in your browser, since the page and all its tabs are an extensive JavaScript application.
You do not need to click Save on every tab on the Preferences page, as the Save button affects all changes on all Preferences tabs.[1] You can go from tab to tab setting all your preferences before saving, because Save remembers your changes on the other tabs. To forget unsaved changes, simply leave the page without saving. If you wish to undo your saved changes, you will need to reset them manually.
Clicking Restore all default settings will harmlessly load another page, which will then offer the button to reset all preferences in every tab to their default values. This includes a few items that are stored as a preference, but that aren't directly editable in Special:Preferences. If you do reset your preferences, you can restore your custom signature from the wikitext of a history page, update your custom CSS or JavaScript from Wikipedia:Tools § Browsing and editing, and then re-select and save your preferences.
The default settings are aimed at newcomers editing articles. Intermediate editors tend to activate more features, such as "warn me if I forgot an edit summary", and advanced editors and administrators use the special settings, gadgets, and editors for their tasks.
You have the same username and password on sister projects such as Wiktionary, at MediaWiki.org itself, and on the Wikipedia of other languages. Each of your account's preferences are independent because each wiki is a website, with their own administration (namespaces, settings, accounts, etc.). Even the word "Preferences" on the top may be set differently! On the Simple English Wikipedia, it says "My settings".
User profile
mali niŋ- Preferences → User profile → Details = meta:Help:Preferences#User profile
Basic information
mali niŋ- Lists your account details and the number of edits you have made.
- Allows you to view/manage your global account info.
- Provides a link to change your password.
Internationalisation
mali niŋ- Change the language of user-interface messages. It does not affect articles and other pages made by editors. Note that many interface messages have been customized at the English Wikipedia but usually only for the default "en - English" which may for example add links to relevant help pages, processes and policies. Editors are discouraged from selecting "en-GB - British English" or "en-CA - Canadian English", which make a few spelling changes but omit many useful customizations.[2] Foreign languages also omit customizations but may be preferred by users with poor English abilities.
- Specify your preferred pronoun in order for the software to grammatically refer to you correctly. This is also visible to other users via certain tools, such as the they template and Navigation popups.
- More language settings: allows you to set the language in which Wikipedia menus and fonts are displayed; additionally, an option to set the language you edit in (input tools must be enabled).
Signature
mali niŋ- Displays the signature that will appear when you sign talk pages.
- Allows you to edit the signature, either using wiki markup (the option must be checked), or just plain text.
Email options
mali niŋ- An option to provide an email address. Although this is optional, please read the warning about losing your password and not having an email address on file.
- Options about use of your email address: enabling email from other users, sending copies of emails you send to other users, and receiving email when a page or file on your watchlist is changed.
- Before using email you must confirm your email address. See Help:Email confirmation
- "Email me when a page or file on my watchlist is changed", see Help:Email notification
Newcomer homepage
mali niŋAppearance
mali niŋ- Preferences → Appearance → Details = meta:Help:Preferences#Appearance
Change the web browser experience.
Skin
mali niŋSkin Preferences
mali niŋ- Choose the "skin", or "theme" of how Wikipedia is displayed.
- Access your Custom CSS or Custom JavaScript for individual skins and for global settings that apply to all skins. If the links are blue, you have created these special pages and this is a quick way to access and edit them. If the links are red, clicking the link will create the special page. You can also access your cross-wiki CSS and JavaScript pages from this section, but the color of the links will always be that of external links.
Reading Preferences
mali niŋDate format
mali niŋ- Option to set your date and time preferences; this is how dates will appear in article History pages, logs, etc. If set to "No preference", the format is HH:MM, DD MMMM YYYY (UTC), for example: 19:28, 5 Silimin gɔli November 2024 (UTC).
Time offset
mali niŋ- Shows the server time (UTC) and the local time based on the optional Time zone setting. You may opt to use the server time (UTC), have the offset calculated by the clock in your computer, or specify an offset from UTC in hours or by location.
- This does not affect times saved in editable pages, such as timestamps in signatures. For that, see Wikipedia:Comments in Local Time.
Files
mali niŋ- The images in an article are just a thumbnail (a preview). These will always be one of eight possible Thumbnail sizes. For the larger screen sizes choose the maximum, and for the smaller screen sizes choose the minimum thumbnail size. The default 220px is a midrange thumbnail-size. Have you changed your font size? Then you should match that font size to your chosen thumbnail size to increase caption readability.
- While viewing an article, if you click a thumbnail you will activate Media Viewer. Media Viewer is JavaScript, and it uses processing resources. It loads all the images in the article at high resolution, and this uses networking resources. This is the default. You can turn off Media Viewer to save resources: 1) to control all image sizing, 2) to navigate directly to a file page (instead) when you click on a thumbnail.
- You can target the Image size limit of the file page main image, (displayed in the front matter). On a faster network choose a larger size, and on a slower network choose a smaller Image size limit. The default 800×600px is a midrange Image size limit. File pages are on Commons wiki, and if logged in there, going there overrides your settings here.
- Note that you can both turn off Media Viewer and set a small Image size limit, and yet you will not limit your ability to avail yourself of any high resolution images listed at the bottom of that file page, when wanted. Doing so you can get full manual control of any unwanted, automatic bogging-down of your surfing speed caused by automated choices concerning File namespace interactions initiated by clicking on an image.
Diffs
mali niŋ- Option to not show page content below the diffs; checking this will suppress the page preview of the difference you're viewing.
- Option to omit a diff after performing a rollback
Advanced options
mali niŋ- Choose to display hyperlinks with underlines in your browser window always, never, or by browser or Wikipedia-skin default.
- Format links as stub links when the article they link to is smaller than the threshold you set on file size. Stub link formatting changes the link color to the dark brown displayed in this option's text. This option can help you see links to small articles (more likely to be stubs) so that you might expand them. It is also useful for spotting links to disambiguation pages, which are also relatively small. They are usually linked to in error, but often contain on their list a link to the correct article, making this error easy to fix.
- Show hidden categories.
Math
mali niŋ- Choose TeX, or MathJax for displaying mathematical formulas.
Languages
mali niŋThis section is empty. You can help by adding to it. (April 2023) |
Editing
mali niŋ- Preferences → Editing → Details = meta:Help:Preferences#Editing
Concerning the edit page, its initiation, and look and feel, Wikipedia offers a high number of options. Some of them are:
- "Teemi ma n yi ti bi sabi lahabali jia (bee din pun ku bɛni ka labisim lahabali ji' maa)" into the database. (Habit-forming.)
- "Enable VisualEditor". Get a word processor interface. No markup language at all.
- "Wuhimi johi lihi amaa ka di pa a lan yɛn labimi yooi". Get a dynamic web page. Browser reloading now gives a glimpse at the live original without having to leave the edit page. And there is no longer any need to create an entirely new page for each preview requested; live preview just reloads parts of its page, and so it offers no browser history backwards, but disturbs no history forward either. Saves some network bandwidth and lots of browser cache. Just save your edits before disabling JavaScript.[3] (First-time users should perform a simple compatibility test.[4])
The font size for the edit box can be set in Wikipedia editing preferences or in the browser. In Firefox, there are two font-size settings at Options → Content → "Default font" Advanced…, one for the edit box, and one for the rest of the page. If you just want uniformity, check to see if it allows Wikipedia to choose its own font; then you set Wikipedia's "Edit Area Font Style" to "Serif" or "Sans Serif", and the font size in the edit box will match the rest of the page.
The number of rows in the edit box is no longer set in preferences. For a temporary change, when the edit box is displayed, drag up or down the small square in the bottom right corner of the edit box. Alternatively, make the change stick by adding this line to your CSS file (in Preferences, Appearance), usually Special:MyPage/common.css:
#wpTextbox1 {height: 25em;}
where 25em
is an example (and typical), height.
Two editing toolbars are offered that will span the top of the edit box. (Wikipedia:Reftoolbar shows versions.)
- "Show edit toolbar" is the legacy 1.0 version that gives a row of buttons. (See m:help:Edit toolbar for details.)
- "Enable enhanced editing toolbar" gives a frame with icons. It is a default feature that can be turned off.
- is a search and replace dialog that can accept regular expressions as a search target for replacement text. (See a list of regular expression symbols[5])
To use more of your favorite text editor instead of just the edit box and toolbars, see Wikipedia:Text editor support. Also see the Gadgets tab.
Recent changes
mali niŋ- Preferences → Recent changes → Display options & Advanced options = meta:Help:Preferences#Recent changes
Recent changes refer to changes of pages in the database. Every time a wiki page is edited, and changes were actually made, a record is kept of the difference. For example, a page history shows the revisions for that particular page. But recent changes can report on more than just the revisions of a page, or an entire wiki, they can also report on the recent changes of an editor (their contributions). The user preferences for recent changes are the style in which these lists of revisions will appear:
- Length of the list
- Time window of the list
- Grouping methods of the list
The watchlist has even more finely tuned preferences, because like the edit window, it is often a core tool for editors.
More information about these various histories can be found at the following places. For global changes to Wikipedia pages, see Help:Recent changes. For user contributions, see Help:User contributions. For page histories, see Help:Page history. For other types of logs see Help:Log.
Pending changes
mali niŋ- Preferences → Recent changes → Pending changes = meta:Help:Preferences#Pending changes/Edit review
These settings are for advanced editors who have a detailed understanding of the five pillars and of the templates used to mark judgments on the page. Pending changes refers to the style of the presentation of
- new page "curation" tools: curation toolbar and new pages feed, and
- how recent changes appear on the page history of certain pages that have been configured for protection by reviewing any changes before they are applied to the public version of the page.
For an example of a page history showing the pending changes feature, click on the history of a page listed at Special:PendingChanges.
Watchlist
mali niŋ- Preferences → Watchlist → Details = meta:Help:Preferences#Watchlist
The watchlist options include which pages, and what "recent" means to you. If your Preferences has "Email me when a page or file on my watchlist is changed" set (at the bottom of the "User profile" tab), then only by visiting a page will you actually set its email notification flag. Once you miss the email for a particular page change or don't visit the page (or ignore the email), you will not receive any more emails for that page. You can still dutifully monitor that page by its watchlist edit-summaries, but its particular email notification flag will remain unset until you visit it. This facilitates monitoring a large watchlist while preventing potentially useless emails to you.
In case you want to set all email notifications anyway, you can at any time mark all pages "visited". If your Preferences → Gadgets has "Display pages on your watchlist that have changed since your last visit in bold", then your watchlist will have a button labeled "Mark all pages visited". That button will effectively set all of your email notification flags.
Notifications
mali niŋThese settings alter the Special:Notifications tool. The options for Notifications were first added in May 2013. See Wikipedia Signpost topic "English-language Wikipedia to be first to receive Echo deployment" for a brief overview.
For a full explanation of the specific preferences, see Wikipedia:Notifications § Preferences and settings.
- Email options
- Choose whether to opt-in or opt-out of email notifications (you must confirm your email address on your Preferences → User profile → Email options). You can also choose how often to receive email notifications, from single emails for each event to daily or weekly digests.
- Choose whether to receive plain text or HTML email.
- Notify me about these events
You can enable (or disable) individual types of notifications by checking (or unchecking) the boxes next to it. You can enable (or disable) notifications on the web or by email for most notification types (note that some notifications cannot be disabled, such as changes to your user rights or new talk page messages: these notifications are too important to be dismissed).
Wikipedia:Notifications § Types of notifications has a general list of the types of notifications. Special:DisplayNotificationsConfiguration lists all notification types available and how they are configured.
- Muted users
You can mute on-site notifications from individual users by enter their username into the box. You will still receive notifications if a muted user writes on your user talk page or reviews a page you have created. The muted user will still receive a successful mention notification, if they've enabled that preference.
- Muting pages
You can mute "page linked" notifications for specific pages by typing each page's name into the box.
Gadgets
mali niŋ- Preferences → Gadgets → Details = Wikipedia:Gadget#Currently installed gadgets
Gadgets are the software contributed by users, not the software that runs Wikipedia, and so you'll see the group names Editing and Appearance are the same as the tab names on the preferences page. If you see tabs on the preferences page your web-browsers already has JavaScript enabled. The gadgets go through an authoritative process before they appear on the list. There are gadgets for, browsing, editing, appearance and for compatibility. A general overview of the select gadgetry available there is as follows.
- Browsing
- Language translating
- Media files, search results, and diffs
- Twinkle admin tools for the advancing editor
- Teahouse for the new editor question
- Mousing over or hovering over an inline citation to read it
- Editing
- Citation modifying/expediting/proving
- Colorizing wikitext; Character toolsets
- Categorizing; Reviewing new articles; Filing disputes
- The Wiki Editor, WikEd, and WikEdDiff
- Appearance
- Editing the introductory section.
- Admin tools; Changing and adding to page layouts and controls
- Displaying diffs, or animations, or your very own local time on all timestamps
- Enabling an external search engine for searching Wikipedia
- Show the assessed class of an article, Featured, A, B, C, etc.
- Justifying paragraphs
- Compatibility
- Font and JavaScript support
- Advanced
- Regular expression tools
- Tracking software bugs
- Patrolling recent changes
See much more customization available in the pages in the See also section, such as a search and replace dialog that understands JavaScript regular expressions.
Beta features
mali niŋ- Preferences → Beta features → Details = mw:Beta Features
Beta Features is a way for users to test new features on Wikipedia and other Wikimedia sites before they are released for everyone.
Other tools
mali niŋThe MediaWiki preferences page offers a set of options for the generic user. If you discover a special role on Wikipedia, there is probably a powerful tool for it at Wikipedia:Tools § Browsing and editing.
Operating an account with a tool may carry side effects, such as popups, toolbars and frame objects on your browsing or editing page space that are sometimes burdensome, yet sometimes powerfully necessary. Rather than uninstalling, it is possible to just switch skins, because there are four skins, each with a pair of customizations. 1) Custom JavaScript has the tools. 2) Custom CSS can carry over your preferred fonts, colors, and frame borders to each skin, no matter what tools that skin may also be loaded with.
See also
mali niŋ- meta:Help:Preferences
- Wikipedia:Skin
- Wikipedia:Customisation
- Wikipedia:Scripts
- Wikipedia:Tools
- Wikipedia:Database reports/User preferences
Notes
mali niŋ- ↑ It is true that each tab will create a URL in the browser history, but these URLs do not represent historical differences in the JavaScript instance that loaded with the Preferences page itself. The per-tab URLs only purpose is to serve the browser's back- and forward-navigation.
- ↑ Wikipedia:Village pump (proposals)/Archive 184#Discourage en-xx UI variants
- ↑ If you disable JavaScript for any page on MediaWiki.org or Wikipedia.org, you will lose all unsaved edits in all tabs; yet disabling JavaScript is a common troubleshooting technique when diagnosing some preference-related browser behaviors.
- ↑ The danger in using Live preview is on first use with an incompatible browser. Try a simple test: make a change to the edit box, then reload the page.
- ↑ Compiled by the Mozilla Contributors.
!
This help page is a how-to guide. It details processes or procedures of some aspect(s) of Wikipedia's norms and practices. It is not one of Wikipedia's policies or guidelines, and may reflect varying levels of consensus and vetting. |
Preferences are the seventy or so user options for browsing, editing, searching, notifications, and more. A link to your Preferences page is available at the top of every Wikipedia page when you have an account, alongside links to your other account services such as your Contributions. Another way to get there is by navigating to the Special:Preferences page.
Once at your Preferences page, you can control much of the Wikipedia user interface through the many feature settings provided by MediaWiki (the software of Wikipedia): skins, plug-ins, date formats, a signature, and more. For example, you can select to be prompted to enter an edit summary if you forget to. The Preferences page also presents a link to customize your CSS to adjust your page style details.
Plus, there are hundreds of user tools to explore, many listed at Wikipedia:Tools § Browsing and editing, that can override or tweak preferences provided by MediaWiki. Each account has its own Custom JavaScript page where the tools install themselves, and where you can help develop them.
At their site, MediaWiki maintains a browser compatibility matrix. The time you spend in getting an account, setting your preferences, finding tools and testing your browser (before you ever lose an edit) will pay off.
Feature requests can be made, and bugs reported, as described at Wikipedia:Phabricator. The current set of preferences are largely the result of issues raised by newcomers at places such as the Village pump, and driven by regulars who hold long discussions and collectively drive issues.
Preferences page
mali niŋThe Preferences page is accessible when you are logged-in, but you must have JavaScript enabled in your browser, since the page and all its tabs are an extensive JavaScript application.
You do not need to click Save on every tab on the Preferences page, as the Save button affects all changes on all Preferences tabs.[1] You can go from tab to tab setting all your preferences before saving, because Save remembers your changes on the other tabs. To forget unsaved changes, simply leave the page without saving. If you wish to undo your saved changes, you will need to reset them manually.
Clicking Restore all default settings will harmlessly load another page, which will then offer the button to reset all preferences in every tab to their default values. This includes a few items that are stored as a preference, but that aren't directly editable in Special:Preferences. If you do reset your preferences, you can restore your custom signature from the wikitext of a history page, update your custom CSS or JavaScript from Wikipedia:Tools § Browsing and editing, and then re-select and save your preferences.
The default settings are aimed at newcomers editing articles. Intermediate editors tend to activate more features, such as "warn me if I forgot an edit summary", and advanced editors and administrators use the special settings, gadgets, and editors for their tasks.
You have the same username and password on sister projects such as Wiktionary, at MediaWiki.org itself, and on the Wikipedia of other languages. Each of your account's preferences are independent because each wiki is a website, with their own administration (namespaces, settings, accounts, etc.). Even the word "Preferences" on the top may be set differently! On the Simple English Wikipedia, it says "My settings".
User profile
mali niŋ- Preferences → User profile → Details = meta:Help:Preferences#User profile
Basic information
mali niŋ- Lists your account details and the number of edits you have made.
- Allows you to view/manage your global account info.
- Provides a link to change your password.
Internationalisation
mali niŋ- Change the language of user-interface messages. It does not affect articles and other pages made by editors. Note that many interface messages have been customized at the English Wikipedia but usually only for the default "en - English" which may for example add links to relevant help pages, processes and policies. Editors are discouraged from selecting "en-GB - British English" or "en-CA - Canadian English", which make a few spelling changes but omit many useful customizations.[2] Foreign languages also omit customizations but may be preferred by users with poor English abilities.
- Specify your preferred pronoun in order for the software to grammatically refer to you correctly. This is also visible to other users via certain tools, such as the they template and Navigation popups.
- More language settings: allows you to set the language in which Wikipedia menus and fonts are displayed; additionally, an option to set the language you edit in (input tools must be enabled).
Signature
mali niŋ- Displays the signature that will appear when you sign talk pages.
- Allows you to edit the signature, either using wiki markup (the option must be checked), or just plain text.
Email options
mali niŋ- An option to provide an email address. Although this is optional, please read the warning about losing your password and not having an email address on file.
- Options about use of your email address: enabling email from other users, sending copies of emails you send to other users, and receiving email when a page or file on your watchlist is changed.
- Before using email you must confirm your email address. See Help:Email confirmation
- "Email me when a page or file on my watchlist is changed", see Help:Email notification
Newcomer homepage
mali niŋAppearance
mali niŋ- Preferences → Appearance → Details = meta:Help:Preferences#Appearance
Change the web browser experience.
Skin
mali niŋSkin Preferences
mali niŋ- Choose the "skin", or "theme" of how Wikipedia is displayed.
- Access your Custom CSS or Custom JavaScript for individual skins and for global settings that apply to all skins. If the links are blue, you have created these special pages and this is a quick way to access and edit them. If the links are red, clicking the link will create the special page. You can also access your cross-wiki CSS and JavaScript pages from this section, but the color of the links will always be that of external links.
Reading Preferences
mali niŋDate format
mali niŋ- Option to set your date and time preferences; this is how dates will appear in article History pages, logs, etc. If set to "No preference", the format is HH:MM, DD MMMM YYYY (UTC), for example: 19:28, 5 Silimin gɔli November 2024 (UTC).
Time offset
mali niŋ- Shows the server time (UTC) and the local time based on the optional Time zone setting. You may opt to use the server time (UTC), have the offset calculated by the clock in your computer, or specify an offset from UTC in hours or by location.
- This does not affect times saved in editable pages, such as timestamps in signatures. For that, see Wikipedia:Comments in Local Time.
Files
mali niŋ- The images in an article are just a thumbnail (a preview). These will always be one of eight possible Thumbnail sizes. For the larger screen sizes choose the maximum, and for the smaller screen sizes choose the minimum thumbnail size. The default 220px is a midrange thumbnail-size. Have you changed your font size? Then you should match that font size to your chosen thumbnail size to increase caption readability.
- While viewing an article, if you click a thumbnail you will activate Media Viewer. Media Viewer is JavaScript, and it uses processing resources. It loads all the images in the article at high resolution, and this uses networking resources. This is the default. You can turn off Media Viewer to save resources: 1) to control all image sizing, 2) to navigate directly to a file page (instead) when you click on a thumbnail.
- You can target the Image size limit of the file page main image, (displayed in the front matter). On a faster network choose a larger size, and on a slower network choose a smaller Image size limit. The default 800×600px is a midrange Image size limit. File pages are on Commons wiki, and if logged in there, going there overrides your settings here.
- Note that you can both turn off Media Viewer and set a small Image size limit, and yet you will not limit your ability to avail yourself of any high resolution images listed at the bottom of that file page, when wanted. Doing so you can get full manual control of any unwanted, automatic bogging-down of your surfing speed caused by automated choices concerning File namespace interactions initiated by clicking on an image.
Diffs
mali niŋ- Option to not show page content below the diffs; checking this will suppress the page preview of the difference you're viewing.
- Option to omit a diff after performing a rollback
Advanced options
mali niŋ- Choose to display hyperlinks with underlines in your browser window always, never, or by browser or Wikipedia-skin default.
- Format links as stub links when the article they link to is smaller than the threshold you set on file size. Stub link formatting changes the link color to the dark brown displayed in this option's text. This option can help you see links to small articles (more likely to be stubs) so that you might expand them. It is also useful for spotting links to disambiguation pages, which are also relatively small. They are usually linked to in error, but often contain on their list a link to the correct article, making this error easy to fix.
- Show hidden categories.
Math
mali niŋ- Choose TeX, or MathJax for displaying mathematical formulas.
Languages
mali niŋThis section is empty. You can help by adding to it. (April 2023) |
Editing
mali niŋ- Preferences → Editing → Details = meta:Help:Preferences#Editing
Concerning the edit page, its initiation, and look and feel, Wikipedia offers a high number of options. Some of them are:
- "Teemi ma n yi ti bi sabi lahabali jia (bee din pun ku bɛni ka labisim lahabali ji' maa)" into the database. (Habit-forming.)
- "Enable VisualEditor". Get a word processor interface. No markup language at all.
- "Wuhimi johi lihi amaa ka di pa a lan yɛn labimi yooi". Get a dynamic web page. Browser reloading now gives a glimpse at the live original without having to leave the edit page. And there is no longer any need to create an entirely new page for each preview requested; live preview just reloads parts of its page, and so it offers no browser history backwards, but disturbs no history forward either. Saves some network bandwidth and lots of browser cache. Just save your edits before disabling JavaScript.[3] (First-time users should perform a simple compatibility test.[4])
The font size for the edit box can be set in Wikipedia editing preferences or in the browser. In Firefox, there are two font-size settings at Options → Content → "Default font" Advanced…, one for the edit box, and one for the rest of the page. If you just want uniformity, check to see if it allows Wikipedia to choose its own font; then you set Wikipedia's "Edit Area Font Style" to "Serif" or "Sans Serif", and the font size in the edit box will match the rest of the page.
The number of rows in the edit box is no longer set in preferences. For a temporary change, when the edit box is displayed, drag up or down the small square in the bottom right corner of the edit box. Alternatively, make the change stick by adding this line to your CSS file (in Preferences, Appearance), usually Special:MyPage/common.css:
#wpTextbox1 {height: 25em;}
where 25em
is an example (and typical), height.
Two editing toolbars are offered that will span the top of the edit box. (Wikipedia:Reftoolbar shows versions.)
- "Show edit toolbar" is the legacy 1.0 version that gives a row of buttons. (See m:help:Edit toolbar for details.)
- "Enable enhanced editing toolbar" gives a frame with icons. It is a default feature that can be turned off.
- is a search and replace dialog that can accept regular expressions as a search target for replacement text. (See a list of regular expression symbols[5])
To use more of your favorite text editor instead of just the edit box and toolbars, see Wikipedia:Text editor support. Also see the Gadgets tab.
Recent changes
mali niŋ- Preferences → Recent changes → Display options & Advanced options = meta:Help:Preferences#Recent changes
Recent changes refer to changes of pages in the database. Every time a wiki page is edited, and changes were actually made, a record is kept of the difference. For example, a page history shows the revisions for that particular page. But recent changes can report on more than just the revisions of a page, or an entire wiki, they can also report on the recent changes of an editor (their contributions). The user preferences for recent changes are the style in which these lists of revisions will appear:
- Length of the list
- Time window of the list
- Grouping methods of the list
The watchlist has even more finely tuned preferences, because like the edit window, it is often a core tool for editors.
More information about these various histories can be found at the following places. For global changes to Wikipedia pages, see Help:Recent changes. For user contributions, see Help:User contributions. For page histories, see Help:Page history. For other types of logs see Help:Log.
Pending changes
mali niŋ- Preferences → Recent changes → Pending changes = meta:Help:Preferences#Pending changes/Edit review
These settings are for advanced editors who have a detailed understanding of the five pillars and of the templates used to mark judgments on the page. Pending changes refers to the style of the presentation of
- new page "curation" tools: curation toolbar and new pages feed, and
- how recent changes appear on the page history of certain pages that have been configured for protection by reviewing any changes before they are applied to the public version of the page.
For an example of a page history showing the pending changes feature, click on the history of a page listed at Special:PendingChanges.
Watchlist
mali niŋ- Preferences → Watchlist → Details = meta:Help:Preferences#Watchlist
The watchlist options include which pages, and what "recent" means to you. If your Preferences has "Email me when a page or file on my watchlist is changed" set (at the bottom of the "User profile" tab), then only by visiting a page will you actually set its email notification flag. Once you miss the email for a particular page change or don't visit the page (or ignore the email), you will not receive any more emails for that page. You can still dutifully monitor that page by its watchlist edit-summaries, but its particular email notification flag will remain unset until you visit it. This facilitates monitoring a large watchlist while preventing potentially useless emails to you.
In case you want to set all email notifications anyway, you can at any time mark all pages "visited". If your Preferences → Gadgets has "Display pages on your watchlist that have changed since your last visit in bold", then your watchlist will have a button labeled "Mark all pages visited". That button will effectively set all of your email notification flags.
Notifications
mali niŋThese settings alter the Special:Notifications tool. The options for Notifications were first added in May 2013. See Wikipedia Signpost topic "English-language Wikipedia to be first to receive Echo deployment" for a brief overview.
For a full explanation of the specific preferences, see Wikipedia:Notifications § Preferences and settings.
- Email options
- Choose whether to opt-in or opt-out of email notifications (you must confirm your email address on your Preferences → User profile → Email options). You can also choose how often to receive email notifications, from single emails for each event to daily or weekly digests.
- Choose whether to receive plain text or HTML email.
- Notify me about these events
You can enable (or disable) individual types of notifications by checking (or unchecking) the boxes next to it. You can enable (or disable) notifications on the web or by email for most notification types (note that some notifications cannot be disabled, such as changes to your user rights or new talk page messages: these notifications are too important to be dismissed).
Wikipedia:Notifications § Types of notifications has a general list of the types of notifications. Special:DisplayNotificationsConfiguration lists all notification types available and how they are configured.
- Muted users
You can mute on-site notifications from individual users by enter their username into the box. You will still receive notifications if a muted user writes on your user talk page or reviews a page you have created. The muted user will still receive a successful mention notification, if they've enabled that preference.
- Muting pages
You can mute "page linked" notifications for specific pages by typing each page's name into the box.
Gadgets
mali niŋ- Preferences → Gadgets → Details = Wikipedia:Gadget#Currently installed gadgets
Gadgets are the software contributed by users, not the software that runs Wikipedia, and so you'll see the group names Editing and Appearance are the same as the tab names on the preferences page. If you see tabs on the preferences page your web-browsers already has JavaScript enabled. The gadgets go through an authoritative process before they appear on the list. There are gadgets for, browsing, editing, appearance and for compatibility. A general overview of the select gadgetry available there is as follows.
- Browsing
- Language translating
- Media files, search results, and diffs
- Twinkle admin tools for the advancing editor
- Teahouse for the new editor question
- Mousing over or hovering over an inline citation to read it
- Editing
- Citation modifying/expediting/proving
- Colorizing wikitext; Character toolsets
- Categorizing; Reviewing new articles; Filing disputes
- The Wiki Editor, WikEd, and WikEdDiff
- Appearance
- Editing the introductory section.
- Admin tools; Changing and adding to page layouts and controls
- Displaying diffs, or animations, or your very own local time on all timestamps
- Enabling an external search engine for searching Wikipedia
- Show the assessed class of an article, Featured, A, B, C, etc.
- Justifying paragraphs
- Compatibility
- Font and JavaScript support
- Advanced
- Regular expression tools
- Tracking software bugs
- Patrolling recent changes
See much more customization available in the pages in the See also section, such as a search and replace dialog that understands JavaScript regular expressions.
Beta features
mali niŋ- Preferences → Beta features → Details = mw:Beta Features
Beta Features is a way for users to test new features on Wikipedia and other Wikimedia sites before they are released for everyone.
Other tools
mali niŋThe MediaWiki preferences page offers a set of options for the generic user. If you discover a special role on Wikipedia, there is probably a powerful tool for it at Wikipedia:Tools § Browsing and editing.
Operating an account with a tool may carry side effects, such as popups, toolbars and frame objects on your browsing or editing page space that are sometimes burdensome, yet sometimes powerfully necessary. Rather than uninstalling, it is possible to just switch skins, because there are four skins, each with a pair of customizations. 1) Custom JavaScript has the tools. 2) Custom CSS can carry over your preferred fonts, colors, and frame borders to each skin, no matter what tools that skin may also be loaded with.
See also
mali niŋ- meta:Help:Preferences
- Wikipedia:Skin
- Wikipedia:Customisation
- Wikipedia:Scripts
- Wikipedia:Tools
- Wikipedia:Database reports/User preferences
Notes
mali niŋ- ↑ It is true that each tab will create a URL in the browser history, but these URLs do not represent historical differences in the JavaScript instance that loaded with the Preferences page itself. The per-tab URLs only purpose is to serve the browser's back- and forward-navigation.
- ↑ Wikipedia:Village pump (proposals)/Archive 184#Discourage en-xx UI variants
- ↑ If you disable JavaScript for any page on MediaWiki.org or Wikipedia.org, you will lose all unsaved edits in all tabs; yet disabling JavaScript is a common troubleshooting technique when diagnosing some preference-related browser behaviors.
- ↑ The danger in using Live preview is on first use with an incompatible browser. Try a simple test: make a change to the edit box, then reload the page.
- ↑ Compiled by the Mozilla Contributors.
!
Loadable convenience extensions
mali niŋThe methods here are loaded on demand or depend on subroutines which need initialization.
These methods can greatly simplify the structure of the modules which employ them by doing, in a fluent manner, many tasks which may otherwise force an awkward interruption in Buffer call chains.
Global functions
mali niŋMethods such as Tɛmplet:Scribunto/helper and Tɛmplet:Luaself traverse a node tree in only one direction. While fine for returning to an ancestor, they do not provide navigation to a non-ancestor (often necessary for templates with co-dependent parameters). Yet, repeated breaks in call chains to set local variables for several nodes of the same branch can look choppy if not confusing for nodes many generations removed from its declaration statement.[note 24]
Templates with several conditionally-appended nodes with similar, but not identical, parts may present another conundrum for coders who must decide between having awkward call chain interruptions to store potentially repeated components as local variables or constructing a somewhat redundant module that is more susceptible to maintenance errors by future editors who may patch one code segment but miss the sibling buried within a convoluted nesting of Tɛmplet:Scribunto/helper.
This module's global functions and added syntactic sugar for the _G object were formulated to simplify such node trees with multi-conditional or repeating structures by providing concise in-chain variable declaration. The extension is enabled by passing your global table to the moduleTɛmplet:--either in the initial call to require'Module:Buffer' (more instructions in that section) or to Tɛmplet:Luaself which forwards arguments to Module:Buffer.[note 25]
Buffer:_G
mali niŋPass name
and save
to assign the object passed as save to a global variable via Tɛmplet:Scribunto/helper.[note 26]
Pass only name and this substitutes self for save to assign the Buffer object to _G[name]
instead. Give an explicit nil as save to unset a global. This returns the Buffer object as well as any argument given after name.
This is a no-op when name is nil or a boolean, or, when save (eventually) evaluates true and Tɛmplet:Scribunto/helper also returns true.
If the named global already exists, this "backs up" the old value by moving it to the meta __index of the global table, setting a new metatable if none exists.[note 27] Retrieving the old value requires unsetting the new one via Tɛmplet:Luaself (more details in that section). If overwritten a third time, the first value is discarded and the second takes its place in the back up.
If a metaglobal variable exists but the global is nil, this sets the global without unsetting the metaglobal (i.e. does not back up a nil global). An exception is when this is given an explicit nil as save and only the metaglobal exists; thus, passing nil twice for the same name, unsets the key in both the global table and its metaindex.
Buffer:_R
mali niŋThis Tɛmplet:Scribunto/helper with the global table as the first argument and name
and save
as the second and third, respectively, returning the Buffer object for call chaining.[example 1] This is a no-op if name is nil or a boolean.
Note that Buffer methods use a local variable new_G
as a proxy for the global table _G; though not a global index, the string 'new_G'
is a "magic word" that changes the destination for future save for this and Buffer:_G.
Pass a table as var
(same place as save) to set as the new new_G. Any table such that var._G == _G
is treated as a (former) new_G object. This Tɛmplet:Scribunto/helper of former proxies and Tɛmplet:Scribunto/helper with the Tɛmplet:Luaself __call method on non-new_G tables. Then, this, if third parameter metaindex
equals:
- nil Tɛmplet:-- backs up the current proxy as the metaindex of the next (though this no-ops if var equals new_G to avoid cyclical indexing).
- false Tɛmplet:-- leaves the metaindex intact (replacing the current proxy without back-up)
- true Tɛmplet:-- unsets the metaindex of the next proxy
- any other value Tɛmplet:-- sets that value as the metaindex of the next proxy. (Note new_G._G is not set until it is returned by Tɛmplet:Luaself)
To omit or to pass nil/false as var has the same effect as Tɛmplet:Luaself. Pass true instead and this treats it as though passed as metaindex, creating a new proxy without backing up the incumbent.
Buffer:_2
mali niŋThis returns the value indexed at key name
in the global table. If it does not exist, this forwards both arguments to Tɛmplet:Luaself and returns the saved value (which may be itself).
In other words, Tɛmplet:Luaself is roughly equivalent to _G[name] = _G[name] or save or save==nil and Buffer
.
The string 'new_G'
will return the Module:Buffer local variable new_G
, used as a proxy for the global variable _G. Given more than one argument, this forwards arguments to Tɛmplet:Luaself to assign another proxy global before returning the (newly-deposed) proxy. This then sets new_G._G
to the original _G object for call chaining. (See § chain call in _G object).
Buffer:_B
mali niŋTakes only one argument and returns that argument.
Assuming the only X declared is Tɛmplet:Scribunto/helper and new_G equals _G, then Tɛmplet:Luaself and Tɛmplet:Luaself are equivalent.[note 28]
When passed a variable that does not exist, this returns the Buffer nil object:
Buffer-nil object
mali niŋThe Buffer-nil object is unique. Calling this as a function returns nothing (in contrast, calling an empty Buffer object returns an empty string). This does however have the Module:Buffer __concat metamethod, which treats this the same way as any invalid object (i.e. ignores it).
Appending this via Tɛmplet:Scribunto/helper or Tɛmplet:Luaself has the same effect as appending nil. Passing this to Tɛmplet:Scribunto/helper returns nil instead of the string 'nil'.
The only real Buffer method in its meta __index is Tɛmplet:Luaself, however, any non-numerical key string retrieves a function that only returns the Buffer nil object for call chaining. In a sense, you can think of Buffer:_B(var):...
as an if var~=nil then var:...
block around the following chain that ends in the next :_B().
If Tɛmplet:Scribunto/helper, the clone will be a normal Buffer object.
_G object
mali niŋThe first _G variable passed to this module is given a __call metamethod that self-Tɛmplet:Scribunto/helpers and returns in a manner that depends on whether it was called directly or from a chain.[example 2] This module conserves any pre-existing metatable and alters no metamethod other than __call.
direct call
mali niŋ_G( k, v )
_G'string'
When called, the _G object self-sets any string passed as k
with whatever is passed as v
. This returns v, or nil if omitted (unlike with rawset, an explicit nil is not necessary to unset a variable with direct calls).
Note that k must be a string to declare or unset a global in this op. Tables passed as the first argument are treated as though this were executed via a call chain (discussed shortly). Passing k which is not one of those two types will throw an error.
chain call
mali niŋchained-object:_G( k, v )
chained-object:_G'string'
When used in a call chain, this rawsets the key-value pair in the chained object and returns that object. The _G object may chain itself when returning _G is desired for another op instead of v.
In contrast to the direct op, the in-chain op will index non-string k values. Moreover, this only unsets object[k] when passed an explicitly nil v.
If v is omitted in-chain, this uses the chained object as the missing argument; thus, (chained) object:_G'string'
has identical effect and return to _G('string', object)
.
The same __call method is given to new_G objects created by Buffer:_R, however the direct call only works if its metaindex is the _G object. Any table such that table._G
points to the _G object may chain save to itself regardless of metaindex.
Though the behavior of the chain op when v is omitted may be a dead ringer to that of Buffer:_G when save is omitted and new_G is the chained object, mind that the Buffer object function sets keys in new_G variable rather than the chained (Buffer) object; in other words, this is unaffected by Buffer:_R reassigning new_G to another table. Also, this does not have the back up behavior of Buffer:_G.
Buffer-variable object
mali niŋBuffer:_var
mali niŋRaw appends a Buffer-variable object, which may appear as a different value each time the object (or its container) is converted to a string.[example 3]
Initialize a Buffer-variable object by passing as var
a:
- number - which, when strung the first time, appears as that number and reappears as
var + change
the next time it is strung. - string - that transforms into the next ASCII character via Tɛmplet:Scribunto/helper.
- table - to return the first (non-nil) item, then the second, and so on as determined by Tɛmplet:Scribunto/helper, looping back to the first item after reaching the last. (Note the change argument does not apply to table-based Buffer-variables.)
- custom function - to be set as the _build and __tostring method of a variable-object, though instructions for coding such functions are beyond the scope of this manual.
Re-append the same variable object by passing true
as the only argument. For non-table-based variables, you may specify change to append a sister object which transforms the value at the rate specified. Changes are cumulative. Thus, if the original is re-strung after a sister, its value will differ from that of its last appearance by the sum of the original and sister rates and vice versa.
Apply a change without appending a new variable object to the Buffer by passing false
. The shift is effective immediately and may affect previously appended variable objects not yet finalized. Pass only false (i.e., omit change) to produce the same effect as stringing the original once. Note that the false-change is the only change table-based Buffer variables will honor.[note 29]
Pass nothing to append a version which simply repeats the result of the last stringing. While generally identical in effect to the object generated by :_var(true, 0)
, the Buffer-variable will return nothing if strung before any of its sisters.
If passed an explicit nil as the first argument, this is no-op. If passed a boolean before any Buffer-variable has been initialized, this is also a no-op. Note that any op disables future caching at Tɛmplet:Luaself for all Buffer objects in your module (and in any module which may require it).
String, mw.ustring, and mw.text libraries
mali niŋBasic usage
mali niŋBuffer:functionName( ... )
You may directly chain any function from the following libraries on Buffer objects:
Functions from these libraries added to the Module:Buffer metatable on-demand and placed within a wrapper method that strings the Buffer object for the first argument and then forwards the remaining arguments.
Thus, the following are equivalent: Buffer:nowiki( ... )
and Tɛmplet:Scribunto/helper
If a name exists in both the string and mw.ustring libraries, the string version takes precedence. You may prefix the letter u on any mw.ustring functionTɛmplet:--e.g. Buffer:ulen returns the number of unicode characters and Buffer:len returns the number of bytes.
Buffer:gsub and Buffer:ugsub have a slightly different wrapper which substitutes the repl
argument of Tɛmplet:Scribunto/helper and Tɛmplet:Scribunto/helper when it evaluates false or is omitted with an empty string (otherwise the originals would throw an error). This saves a few keystrokes when removing characters via Buffer:gsub'[pattern]'
as opposed to Buffer:gsub( '[pattern]', '' )
. All other arguments are handled the same as with the other on-demand methods.
Library functions which take a non-string as the first argument are not supported.
Empty Buffer interface
mali niŋTo obtain the first return value as a Buffer object (as opposed to whatever type the original normally returns), simply chain the imported method immediately after creating the new Buffer via Buffer:_in. Only empty Buffer objects which have a parent object will append the result of their parent in this manner.
This syntactic sugar allows two things:
- For appending additional objects after the op via Buffer object methods.
- For chaining multiple Tɛmplet:Scribunto/helper methods not chainable to stringsTɛmplet:--e.g., this:
Buffer:_in():uformat( ... ):_in():toNFD():encode'[<>#]':match'^(.-)==='
- vs. the following which has the same order of operations albeit harder to see:
mw.text.encode( mw.ustring.toNFD( Buffer:uformat( ... ) ), '[<>#]' ):match'^(.-)==='
Special case: Element-Buffer
mali niŋempty–Element–Buffer:functionName( ... )
Element–Buffer:_in():functionName( ... )
The 'empty' behavior is different when chained to empty Element-Buffer or an empty child Buffer of an Element-Buffer.
Library methods chained to an empty Buffer which parent is an Element-Buffer object will instead string the grandparent Buffer-HTML object for use as the first argument before appending the result to the new Buffer. This interface is provided because Buffer-HTML objects, which are not true Buffer objects, are unable to load these functions, making this the only chainable option for Scribunto methods that includes the outer tag of non-empty Element-Buffers.
Chained on an empty Element-Buffer, these methods will string the Buffer object which created its HTML tree via Tɛmplet:Luaself[note 30] and append the result to the Element-Buffer.[example 4]
Modified ..
operator
mali niŋ
All "true" Buffer objectsTɛmplet:--e.g., the regular, stream, and element varietiesTɛmplet:--share the same Tɛmplet:Scribunto/helper. Some Buffer-like classes, namely Tɛmplet:Luaselfs and the Tɛmplet:Luaself, also have this same metamethod.
The extended Tɛmplet:Scribunto/helper operator does not append to Buffer objects. In other words, Buffers generally remain the same as before the op excepting those effects that apply whenever Buffers are strung (See Tɛmplet:Luaself, Tɛmplet:Luaself, and Tɛmplet:Luaself).
with non-tables
mali niŋBuffer .. value
value .. Buffer
Any non-table value
may be joined a Buffer object with the concatenation operator ..
without error.
With the exception of Element-Buffers (which are a special case), the op passes each object, ordered left-to-right, to Tɛmplet:Luaself which inserts validated items in a new table, which this returns through Tɛmplet:Scribunto/helper.
Concatenating an invalid value and a Buffer has generally the same effect as Tɛmplet:Scribunto/helper unless such involves:
- the Buffer-nil object Tɛmplet:-- which produces an empty string (instead of nil)
- Element-Buffer objects Tɛmplet:-- which returns the string of the parent Buffer-HTML
with tables
mali niŋBuffer .. table
table .. Buffer
The same general operation applies for tables as with non-tablesTɛmplet:--i.e., validated values are inserted left-to-right into a new table to be joined by table.concat. In fact, tables which have a metatable (including Buffer objects which are not an Element-Buffer) are forwarded to Buffer:_ and processed the same way as non-tables.
Given a table
for which Tɛmplet:Scribunto/helper returns nil or false, this instead forwards the table to Tɛmplet:Luaself, which iterates every value indexed at a number key in sequential order, inserting those which are valid in the new table.
As a reminder, Buffer:_ validates tables with metatables that lack a __tostring method through table.concat, which throws an error on sequences containing one or more value that is neither a string nor a number. Such accounts for nearly all cases of breaking errors involving this op.
Note that the valKey parameter of Buffer:_all is not triggered.
for Element-Buffers
mali niŋElement-Buffer .. value
value .. Element-Buffer
Element-Buffer .. Element-Buffer
To recap and expand upon § Element-Buffer-object, the behavior of this op depends on whether its parent Buffer-HTML is Tɛmplet:Scribunto/helper or if the other value is also an Element-Buffer. Also, the final result always includes the outer HTML object (i.e., the tag) in some manner.
For Element-Buffers of "open" tags, this op creates a table with a metaindex that references the parent of the Element-Buffer. The table is then effectively a "mirror" of the parent Buffer-HTML object except that it contains an empty table at table.nodes
Tɛmplet:-- the index of the Element-Buffer within its parent. This then populates the mirror's inner table with the string of the Element-Buffer and the other value, validated left-to-right, in a manner not unlike what this does with the temporary table it creates when concatenating non-element Buffers to another value. This then returns the mirror table through the __tostring metamethod of the mw.html library, yielding a string which resembles that of the parent tag but with value inserted in front of or behind the original inner text depending on whether value was to the left or right of the ..
operator, respectively.
When the selfClosing property of the parent evaluates true, this operates on the parent instead of the Element-BufferTɛmplet:--i.e., the resulting string will have value on the outside as opposed to within the tag (placing it inside would be pointless since selfClosing tags do not show inner contents).
If both operated objects are Element-Buffers, this mirrors the parent of the first. The inner table of the mirror is then populated by inserting the string of the first Element-Buffer followed by the string the parent Buffer-HMTL of the second. The resulting string would be as though the parent of the second were the last node of the first parent. Note that this Element-to-Element rule does not apply when the first Buffer belongs to a selfClosing tag (in which case, this behaves as though the selfClosing parent were to the left of the operator, returning a string with the selfClosing tag inside the tag of the second Element-Buffer in front the latter's inner contents.)
Finally, this combines an Element-Buffer and a table value which has no metatable by passing the table as args for Tɛmplet:Luaself with the mirror of the Element-Buffer as the "self". This avoids permanently changing the parent Buffer-HTML by setting a new table at table.attributes
or table.styles
in the mirror the first time methods such as Tɛmplet:Scribunto/helper, Tɛmplet:Scribunto/helper, Tɛmplet:Scribunto/helper, etc. attempt to access those tables, copying the original's via the recursive form of Tɛmplet:Luaself. Note however that permanent changes may be made to other objects whenever methods such as via Tɛmplet:Luaself or Tɛmplet:Luaself are keyed to navigate beyond the mirror or "sandbox".
require'Module:Buffer'.__pairs
mali niŋrequire'Module:Buffer'.__pairs( table, flag, ext )
Returns two values: an iterator function and the table
. This is intended for use in the Tɛmplet:Scribunto/helper for
.
One distinctive feature of this pairs method is that it splits keys into two groups: Tɛmplet:Scribunto/helpers and non-numbers. This indexes each group of keys in its own "map" object, traversed by its own iterator functionTɛmplet:--i.e, iterating both sets of keys requires two separate for loops. Numeric keys are served in an orderly fashion as with Tɛmplet:Scribunto/helper except that those which are negative, non-consecutive, and non-integer may be included. Moreover, this can find some keys paired with explicitly nil values.[example 5]
The flag
argument selects the iterator method returned for that loop. When flag is an explicit nil or omitted, this returns an iterator for number keys. If given any non-nil flag (i.e., false or any value that evaluates true), this returns a method for looping non-numeric keys. Because both sets are mapped at the same time, you may avoid a redundant mapping op in a subsequent loop by passing an explicit nil or false as flagTɛmplet:--i.e., omitting flag or passing true indicate that re-mapping is desired.
This automatically selects certain tables for "mapless" iteration. Typically, mapless differs from mapped only in that it uses fewer server resources, though, as explained in the next section on mapping, it may "miss" keys in some cases.
Mapping behavior may be modified or extended by ext
. To disable mapless iteration for the table, you may pass false as ext. If not nil or false, ext must be a pairs method that takes the table as its only argument and returns a function that may iterate its keys for mapping purposes. Note that re-mapping avoidance via flag does not apply if ext is explicitly given, though a nil ext does not disqualify a table from mapless iteration.
Mapping process
mali niŋTables are mapped in two stages.
The initial stage is a Tɛmplet:Scribunto/helper which inserts integers between 1
and #table
in the number key map. Because nothing is checked in this step, this may map keys which the numeric map iterator would pair with nil values or with values from the table's Tɛmplet:Scribunto/helper.
The second stage explores the table's keys with an Tɛmplet:Scribunto/helper and Tɛmplet:Scribunto/helper as the default expression-list, or, if ext evaluates true, the expression returned by ext( table )
. This ignores keys already mapped in the first stage and checks if any unmapped key is a number before indexing it in the appropriate map group. Upon completion, if any new number key were found in the second stage, this runs the numeric map through Tɛmplet:Scribunto/helper. No order is imposed on the non-numeric map.
Alternatively, a table may qualify for "mapless" iteration if Tɛmplet:Scribunto/helper is not nil, and Tɛmplet:Scribunto/helper returns nil. If either flag or ext are not nil, or if the table was previously mapped, such permanently disqualifies a table for mapless processing.
As a side note, if mapless numeric iteration occurs, this returns iterator, table, nil
. In other words, you may use Tɛmplet:Scribunto/helper to confirm that the table qualifies for mapless iteration when it has a third explicit return (for debugging).
Iterators
mali niŋOne of four functions may be provided in the Tɛmplet:Scribunto/helper returned by this pairs method, depending on which group of keys (numeric or non-numeric) and which iteration process (map-based or mapless) is indicated.
When key
is nil or unspecified, map iterators will return the key object referenced by the first index of the relevant map along with the value it indexes. If passed the first mapped key, these iterators then return the second index mapped, which if passed in turn may retrieve the third and so on until the last mapped key has been served.
For numeric iteration, the mapless method returns 1, table[1]
when key is unspecified. If a key is given, it returns key + 1, table[ key + 1 ]
unless key is greater or equal to the length of the table, upon which it returns nil. For non-numeric keys, the mapless "iterator" is actually a no-op (empty) function which takes nothing, does nothing, and returns nothingTɛmplet:--provided only to prevent an error when the for loop expects a function.
As mentioned (using different words), key-value pairs are served independently of whether or not table[key]
exists and retrieved without using Tɛmplet:Scribunto/helper.
For example, take a look at table x as declared in the following statement: {{{1}}}
. Table x has a length equal to 8. With ipairs, the for loop stops after the first pair. In contrast, this module's __pairs method will loop all 8 keys declaredTɛmplet:--i.e., (1, 1), (2, nil), ... (7, nil), (8, 8). That said, this only iterates two keys if table x were declared as {{{1}}}
instead even though such is indistinguishable to Finally, the loop would continue to include any keys set to nil after the mapping process.</ref>
You may assign these iterators to a local variable to use them directly. If an unmapped table is given to a map iterator, it will forward the table to this pairs method for immediate mapping. Though no map table is produced for the mapless iteration, the pairs method does cache the length of the table at a map reference, which the iterator compares against key to determine when to stop. Unlike the map methods, the mapless iterator does not call the pairs method when such has been bypassed and instead compares key to the value returned by the Tɛmplet:Scribunto/helper, which may be unstable if the loop includes code that sets or unsets indicies within the table. Also, the mapless method will throw an error if given a table that has been mapped (when it attempts to compare key to a map object).
Appendix
mali niŋ
Tips and style recommendations
mali niŋ- If joining Buffer with a string immediately after
:_'text'
, place a space between 'string' and the separator and use double/single quote marks to . (i.e.:_'text' " "
instead of:_'text'' '
or:_'text'(' ')
) - Saving Module:Buffer locally, e.g.
local Buffer = Tɛmplet:Scribunto/helper
, though fine, is often unnecessary since all Buffer objects can create new buffers via Tɛmplet:Luaself.
For Tɛmplet:Luaself
- Treat
:_
as though it were a..
op. Wrapping strings with unnecessary()
is akin to( 'string1' ) .. ( 'string2' ) .. ( 'string3' )
. - To insert an empty string as a placeholder for a separator without setting
raw
, pass a table containing only an empty string, like so: Tɛmplet:Luaself. - Raw appending a non-table is pointless since no other Scribunto type can tostring differently afterwards. However, this developer believes you are smart enough that
raw and type(v)=='table'
is a waste of server resources. (Such checks are why Tɛmplet:Scribunto/helper takes twice as much time to append a list of strings as Tɛmplet:Luaself despite their near-identical roles in an Element-Stream-Buffer).
For Tɛmplet:Luaself and Tɛmplet:Luaself
- Something like
Buffer_str(2, false, A, false, {C, B})
will use variableA
as the parent's separator, orB
instead if A is nil, orC
if both A and B are nil.
For Tɛmplet:Luaself
- Appending values in multiple locations is one of the primary reasons why the nanKeys argument exists. While passing a boolean directly will cause an error, you can do something like...
- this:Tɛmplet:Sp
Buffer:_all({condition and {_nil={'0', 'replacement'},Front=1,getParent='from child'}}}, true)
- versus:
Buffer:_nil('0', condition and 'replacement' or false):_(condition and 'Front', 1):getParent(condition and 'from child'):_B(child)
.
- this:Tɛmplet:Sp
For Tɛmplet:Luaself
- If the table reference passed as
clear
was appended raw in multiple positions, this is akin to performing Tɛmplet:Luaself at all positions simultaneously. (May be easier than trying to come up with a Tɛmplet:Scribunto/helper pattern) - Inserting a named empty table is raw as a placeholder to be populated later via this function may be easier than calculating pos argument of Tɛmplet:Luaself.
Examples
mali niŋNotes
mali niŋNon-literal interpretations of the source code (that is, more opinion than fact) are provided here to offer additional clarity. Overly technical details may be found here as well when including such caveats appears more likely to confuse than help those advanced-but-not-quite-fluent in Lua.
See also
mali niŋ- Module:Escape, a lightweight metamodule for customized string character escaping
A chirim ya: &It;ref>
tuma maa yi laɣingu din yuli nyɛ "note", ka lee bi saɣiritiri $It;references group ="note"/>
tuka maa bon nya
A chirim ya: &It;ref>
tuma maa yi laɣingu din yuli nyɛ "example", ka lee bi saɣiritiri $It;references group ="example"/>
tuka maa bon nya