diff options
Diffstat (limited to 'elisp/erbot/contrib/wtf.el')
-rw-r--r-- | elisp/erbot/contrib/wtf.el | 964 |
1 files changed, 964 insertions, 0 deletions
diff --git a/elisp/erbot/contrib/wtf.el b/elisp/erbot/contrib/wtf.el new file mode 100644 index 0000000..201b179 --- /dev/null +++ b/elisp/erbot/contrib/wtf.el @@ -0,0 +1,964 @@ +;;; wtf.el --- Look up conversational and computing acronyms + +;; Copyright (C) 2005, 2006, 2007 Michael Olson + +;; Author: Michael Olson <mwolson@gnu.org> +;; Date: Wed 16-May-2007 +;; Version: 2.0 +;; URL: http://mwolson.org/static/dist/elisp/wtf.el + +;; This file is not part of GNU Emacs. + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3 of the License, or +;; (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Commentary: + +;; wtf.el provides the ability to look up the definitions of popular +;; conversational and computing acronyms. + +;; * Use: +;; +;; To use this, move to an unknown acronym in a buffer and type +;; the following: +;; +;; M-x wtf-is RET +;; +;; The `wtf-is' function may also be called noninteractively, and it +;; will return a string (or nil) rather than displaying a message. +;; +;; To add a custom acronym definition, either customize +;; `wtf-custom-alist' or do: +;; +;; M-x wtf-add RET <acronym> RET <definition> RET +;; +;; To remove a custom acronym definition, or mark a pre-defined +;; acronym as "removed" in the case that no custom acronym definition +;; exists in `wtf-custom-alist' for that acronym, do: +;; +;; M-x wtf-remove RET <acronym> RET +;; +;; To mark a pre-defined acronym as "removed", without checking first +;; to see whether it is in `wtf-custom-alist', customize the +;; `wtf-removed-acronyms' option. +;; +;; If you add a custom acronym definition, and feel it to be worth +;; sharing, you are encouraged to contact <mwolson@gnu.org> via email, +;; providing the acronym and its definition. This increases the +;; chance that it will appear in future versions of wtf.el. + +;; * Legalese: +;; +;; Many of the acronym definitions were downloaded from +;; http://cvsweb.netbsd.org/bsdweb.cgi/src/share/misc/. No copyright +;; notice was included, but the intent of the original author was to +;; put these acronym definitions in the public domain. This was +;; deduced from several emails sent to the authors of these files. +;; Additionally, the original data files use a specific syntax which +;; does not allow for a copyright notice. +;; +;; The original program that uses these files in NetBSD +;; (http://cvsweb.netbsd.org/bsdweb.cgi/src/games/wtf/wtf) is in the +;; public domain. + +;; * Acknowledgments: +;; +;; Thanks to Trent Buck for `emacs-wiki-wtf.el', which inspired the +;; creation of `wtf.el'. + +;;; History: + +;; 2.0: +;; +;; - Add the `wtf-custom-alist' option, the `wtf-add' interactive +;; function to add acronyms to it, and the `wtf-remove' interactive +;; function to remove acronyms from it. Thanks to Andreas Roehler +;; for the suggestion. +;; +;; - Add a few acronyms that were scavenged from various forum FAQ +;; pages. +;; +;; - Handle multiple definitions for a single acronym more +;; intuitively. The text separator used in this case may be changed +;; by customizing the `wtf-def-separator' option. + +;; 1.1-1.4: +;; +;; - Fix a bug with completions in Emacs 21, thanks to Ehud Karni. +;; +;; - Add additional acronyms and re-sync with the NetBSD acronym list. + +;; 1.0: Initial release. + +;;; Code: + +(eval-when-compile (require 'cus-edit)) + +(defgroup wtf nil + "Options controlling the behavior of the wtf program. +wtf provides the `wtf-is' command, which looks up the definition +of the acronym at point." + :group 'convenience) + +(defcustom wtf-custom-alist nil + "Custom mappings of acronyms to definitions used by `wtf-is'. +The acronym should be uppercase, and the definition may be either +lowercase or mixed case. If mixed case, it will not be modified, +otherwise initial letters will be capitalized. + +These definitions are consulted after those in `wtf-alist'. + +This variable can also be manipulated interactively by using +`wtf-add'." + :type '(repeat (cons (string :tag "Acronym") + (string :tag "Definition"))) + :group 'wtf) + +(defcustom wtf-removed-acronyms nil + "Acronyms which exist in `wtf-alist' but should be ignored by `wtf-is'. +Each acronym should be in uppercase. +This is an easy way of removing an acronym that is felt to be +wrong or irrelevant. + +This variable can also be manipulated interactively by using +`wtf-remove'." + :type '(repeat (string :tag "Acronym")) + :group 'wtf) + +(defcustom wtf-def-separator ", or " + "Separator used when an acronym has two or more definitions." + :type 'string + :group 'wtf) + +(defvar wtf-alist + '(;; $NetBSD: acronyms,v 1.164 2007/01/31 18:37:07 elad Exp $ + ("AFAIC" . "as far as i'm concerned") + ("AFAICR" . "as far as i can recall") + ("AFAICT" . "as far as i can tell") + ("AFAIK" . "as far as i know") + ("AFAIR" . "as far as i recall") + ("AFAIU" . "as far as i understand") + ("AFD" . "away from desktop") + ("AFK" . "away from keyboard") + ("AFU" . "all fucked up") + ("AFW" . "away from window") + ("AIU" . "as i understand") + ("AIUI" . "as i understand it") + ("AKA" . "also known as") + ("ASAIC" . "as soon as i can") + ("ASAP" . "as soon as possible") + ("ATM" . "at the moment") + ("AWOL" . "absent without official leave") + ("AYBABTU" . "all your base are belong to us") + ("AYT" . "are you there") + ("B/C" . "because") + ("B/S" . "bullshit") + ("B/W" . "between") + ("BBIAB" . "be back in a bit") + ("BBL" . "[I'll] Be Back Later") + ("BBS" . "be back soon") + ("BBT" . "be back tomorrow") + ("BFD" . "big fucking deal") + ("BIAB" . "back in a bit") + ("BIAF" . "back in a few") + ("BIALW" . "back in a little while") + ("BIAS" . "back in a second") + ("BIAW" . "back in a while") + ("BOATILAS" . "bend over and take it like a slut") + ("BOFH" . "bastard operator from hell") + ("BOGAHICA" . "bend over, grab ankles, here it comes again") + ("BOHICA" . "bend over here it comes again") + ("BRB" . "[I'll] Be Right Back") + ("BS" . "bullshit") + ("BTDT" . "been there, done that") + ("BTTH" . "boot to the head") + ("BTW" . "by the way") + ("CMIIW" . "correct me if i'm wrong") + ("CNP" . "continued [in my] next post") + ("COB" . "close of business [day]") + ("COTS" . "commercial off-the-shelf") + ("CYA" . "see you around") + ("D/L" . "download") + ("DGAS" . "don't give a shit") + ("DIY" . "do it yourself") + ("DKDC" . "don't know, don't care") + ("DSTM" . "don't shoot the messenger") + ("DTRT" . "do the right thing") + ("DTWT" . "do the wrong thing") + ("DWIM" . "do what i mean") + ("EG" . "evil grin") + ("EMSG" . "email message") + ("EOB" . "end of business [day]") + ("EOD" . "end of discussion") + ("EOL" . "end of life") + ("ETA" . "estimated time of arrival") + ("ETLA" . "extended three letter acronym") + ("EWAG" . "experienced wild-ass guess") + ("FAQ" . "frequently asked question") + ("FCFS" . "first come first served") + ("FIGJAM" . "fuck i'm good, just ask me") + ("FIIK" . "fuck[ed] if i know") + ("FIIR" . "fuck[ed] if i remember") + ("FM" . "fucking magic") + ("FOAD" . "fall over and die") + ("FOS" . "full of shit") + ("FSDO" . "for some definition of") + ("FSVO" . "for some value of") + ("FTFM" . "fuck the fuckin' manual!") + ("FTL" . "for the loss") + ("FTW" . "for the win") + ("FUBAR" . "fucked up beyond all recognition") + ("FUD" . "fear, uncertainty and doubt") + ("FWIW" . "for what it's worth") + ("FYI" . "for your information") + ("G" . "grin") + ("G/C" . "garbage collect") + ("GAC" . "get a clue") + ("GAL" . "get a life") + ("GIGO" . "garbage in, garbage out") + ("GMTA" . "great minds think alike") + ("GTFO" . "get the fuck out") + ("GTG" . "got to go") + ("GWS" . "get well soon") + ("HAND" . "have a nice day") + ("HHIS" . "hanging head in shame") + ("HICA" . "here it comes again") + ("HTH" . "hope this helps") + ("IAC" . "in any case") + ("IANAL" . "i am not a lawyer") + ("IC" . "i see") + ("ICBW" . "i could be wrong") + ("ICCL" . "i couldn't care less") + ("IHAFC" . "i haven't a fucking clue") + ("IHBW" . "i have been wrong") + ("IHNFC" . "i have no fucking clue") + ("IIANM" . "if i am not mistaken") + ("IIRC" . "if i recall correctly") + ("IIUC" . "if i understand correctly") + ("IMAO" . "in my arrogant opinion") + ("IMCO" . "in my considered opinion") + ("IMHO" . "in my humble opinion") + ("IMNSHO" . "in my not so humble opinion") + ("IMO" . "in my opinion") + ("IOW" . "in other words") + ("IRL" . "in real life") + ("ISAGN" . "i see a great need") + ("ISTM" . "it seems to me") + ("ISTR" . "i seem to recall") + ("ITYM" . "i think you mean") + ("IWBNI" . "it would be nice if") + ("IYSS" . "if you say so") + ("J/K" . "just kidding") + ("JHD" . "just hit ``delete''") + ("JIC" . "just in case") + ("JK" . "just kidding") + ("JMO" . "just my opinion") + ("JSYK" . "just so you know") + ("JTLYK" . "just to let you know") + ("KISS" . "keep it simple, stupid") + ("KITA" . "kick in the ass") + ("KNF" . "kernel normal form") + ("L8R" . "later") + ("LART" . "luser attitude readjustment tool (ie, hammer)") + ("LBNL" . "last but not least") + ("LGTM" . "looks good to me") + ("LJBF" . "let's just be friends") + ("LMAO" . "laughing my ass off") + ("LMSO" . "laughing my socks off") + ("LOL" . "laughing out loud") + ("LTNS" . "long time no see") + ("MIA" . "missing in action") + ("MOTAS" . "member of the appropriate sex") + ("MOTOS" . "member of the opposite sex") + ("MOTSS" . "member of the same sex") + ("MTF" . "more to follow") + ("MYOB" . "mind your own business") + ("N/M" . "never mind") + ("NBD" . "no big deal") + ("NFC" . "no fucking clue") + ("NFI" . "no fucking idea") + ("NFW" . "no fucking way") + ("NIH" . "not invented here") + ("NMF" . "not my fault") + ("NMP" . "not my problem") + ("NOYB" . "none of your business") + ("NOYFB" . "none of your fucking business") + ("NP" . "no problem") + ("NRFPT" . "not ready for prime time") + ("NRN" . "no reply necessary") + ("NSFW" . "not suitable for work") + ("OIC" . "oh, i see") + ("OMG" . "oh, my god") + ("OT" . "off topic") + ("OTL" . "out to lunch") + ("OTOH" . "on the other hand") + ("OTT" . "over the top") + ("OTTOMH" . "off the top of my head") + ("PDQ" . "pretty darn quick") + ("PEBKAC" . "problem exists between keyboard and chair") + ("PFO" . "please fuck off") + ("PFY" . "pimply faced youth") + ("PITA" . "pain in the ass") + ("PKSP" . "pound keys and spew profanity") + ("PNG" . "persona non grata") + ("PNP" . "plug and pray") + ("POC" . "point of contact") + ("POLA" . "principle of least astonishment") + ("POLS" . "principle of least surprise") + ("POS" . "piece of shit") + ("PPL" . "pretty please") + ("PTV" . "parental tunnel vision") + ("QED" . "quod erat demonstrandum") + ("RFC" . "request for comments") + ("RIP" . "rest in peace") + ("RL" . "real life") + ("RLC" . "rod length check") + ("ROFL" . "rolling on floor laughing") + ("ROFLMAO" . "rolling on floor laughing my ass off") + ("ROTFL" . "rolling on the floor laughing") + ("RP" . "responsible person") + ("RSN" . "real soon now") + ("RTFB" . "read the fine/fucking book") + ("RTFC" . "read the fine/fucking code") + ("RTFD" . "read the fine/fucking documentation") + ("RTFM" . "read the fine/fucking manual") + ("RTFMP" . "read the fine/fucking man page") + ("RTFS" . "read the fine/fucking source") + ("SCNR" . "sorry, could not resist") + ("SEP" . "someone else's problem") + ("SFA" . "sweet fuck all") + ("SHID" . "slaps head in disgust") + ("SIMCA" . "sitting in my chair amused") + ("SMLSFB" . "so many losers, so few bullets") + ("SMOP" . "simple matter of programming") + ("SNAFU" . "situation normal, all fucked up") + ("SNERT" . "snot-nosed egotistical rude teenager") + ("SNMP" . "sorry, not my problem") + ("SNR" . "signal to noise ratio") + ("SO" . "significant other") + ("SOB" . "son of [a] bitch") + ("SOL" . "shit out [of] luck") + ("SOP" . "standard operating procedure") + ("SSIA" . "subject says it all") + ("SSTO" . "single stage to orbit") + ("STFA" . "search the fucking archives") + ("STFU" . "shut the fuck up") + ("STFW" . "search the fucking web") + ("SUS" . "stupid user syndrome") + ("SWAG" . "silly, wild-assed guess") + ("SWAHBI" . "silly, wild-assed hare-brained idea") + ("SWFG" . "search with fucking google") + ("SWMBO" . "she who must be obeyed") + ("TANSTAAFL" . "there ain't no such thing as a free lunch") + ("TBC" . "to be continued") + ("TBD" . "to be {decided,determined,done}") + ("TBH" . "to be honest") + ("TBOMK" . "the best of my knowledge") + ("THNX" . "thanks") + ("THX" . "thanks") + ("TIA" . "thanks in advance") + ("TINC" . "there is no cabal") + ("TLA" . "three letter acronym") + ("TLC" . "tender loving care") + ("TLDR" . "too long, didn't read") + ("TMA" . "too many abbreviations") + ("TMI" . "too much information") + ("TMTOWTDI" . "there's more than one way to do it") + ("TNF" . "The NetBSD Foundation") + ("TOEFL" . "test of english as a foreign language") + ("TPTB" . "the powers that be") + ("TRT" . "the right thing") + ("TTBOMK" . "to the best of my knowledge") + ("TTFN" . "ta ta for now") + ("TTYL" . "talk to you later") + ("TWIAVBP" . "the world is a very big place") + ("TY" . "thank you") + ("TYVM" . "thank you very much") + ("U/L" . "upload") + ("UTSL" . "use the source, luke") + ("VEG" . "very evil grin") + ("W/" . "with") + ("W/O" . "without") + ("WAG" . "wild-ass guess") + ("WB" . "welcome back") + ("WFH" . "working from home") + ("WFM" . "works for me") + ("WIBNI" . "wouldn't it be nice if") + ("WIP" . "work in progress") + ("WOFTAM" . "waste of fucking time and money") + ("WOMBAT" . "waste of money, brain, and time") + ("WRT" . "with respect to") + ("WTF" . "{what,where,who,why} the fuck") + ("WTH" . "{what,where,who,why} the hell") + ("WYSIWYG" . "what you see is what you get") + ("YALIMO" . "you are lame, in my opinion") + ("YHBT" . "you have been trolled") + ("YHL" . "you have lost") + ("YKWIM" . "you know what i mean") + ("YMA" . "yo momma's ass") + ("YMMV" . "your mileage may vary") + ("YW" . "you're welcome") + ;; $NetBSD: acronyms.comp,v 1.72 2007/01/19 + ("3WHS" . "three-way handshake") + ("ABI" . "application binary interface") + ("ACL" . "access control list") + ("ACPI" . "advanced configuration and power interface") + ("ADC" . "analog [to] digital converter") + ("ADPCM" . "adaptive differential pulse code modulation") + ("ADSL" . "asymmetric digital subscriber line") + ("AGP" . "accelerated graphics port") + ("AM" . "amplitude modulation") + ("AMI" . "alternate mark inversion") + ("ANSI" . "american national standards institute") + ("AP" . "access point") + ("API" . "application programming interface") + ("APIC" . "advanced programmable interrupt controller") + ("ARP" . "address resolution protocol") + ("ARQ" . "automatic repeat request") + ("AS" . "autonomous system") + ("ASCII" . "american standard code for information interchange") + ("ASN" . "autonomous system number") + ("AT" . "advanced technology") + ("ATA" . "advanced technology attachment") + ("ATAPI" . "advanced technology attachment packet interface") + ("ATC" . "address translation cache") + ("ATM" . "asynchronous transfer mode") + ("ATX" . "advanced technology extended") + ("BEDO" . "burst extended data output") + ("BER" . "basic encoding rules") + ("BER" . "bit error rate") + ("BGP" . "border gateway protocol") + ("BIOS" . "basic input/output system") + ("BLOB" . "binary large object") + ("BPS" . "bits per second") + ("BQS" . "berkeley quality software") + ("BSD" . "berkeley software distribution") + ("CAD" . "computer-aided design") + ("CARP" . "common address redundancy protocol") + ("CAV" . "Constant Angular Velocity (as opposed to CLV)") + ("CCD" . "charge coupled device") + ("CD" . "compact disc") + ("CDDA" . "compact disc digital audio") + ("CDRAM" . "cache dynamic random access memory") + ("CER" . "canonical encoding rules") + ("CGA" . "color graphics {array,adapter}") + ("CGI" . "common gateway interface") + ("CHS" . "cylinder/head/sector") + ("CIDR" . "classless inter-domain routing") + ("CIS" . "contact image sensor") + ("CLI" . "command line interface") + ("CLUT" . "color look-up table") + ("CLV" . "Constant Linear Velocity (as opposed to CAV)") + ("CMYK" . "cyan magenta yellow black") + ("COFF" . "common object file format") + ("COW" . "copy-on-write") + ("CPU" . "central processing unit") + ("CRLF" . "carriage return line feed") + ("CRT" . "cathode ray tube") + ("CSMA" . "carrier sense multiple access") + ("CSMA/CA" . "carrier sense multiple access with collision avoidance") + ("CSMA/CD" . "carrier sense multiple access with collision detection") + ("CSS" . "cascading style sheets") + ("CTS" . "clear to send") + ("CVS" . "concurrent versions system") + ("DAC" . "digital [to] analog converter") + ("DCE" . "data control equipment") + ("DCE" . "distributed computing environment") + ("DCT" . "discrete cosine transform") + ("DDC" . "display data channel") + ("DDR" . "double data rate") + ("DDWG" . "digital display working group") + ("DER" . "distinguished encoding rules") + ("DFT" . "discrete fourier transform") + ("DHCP" . "dynamic host configuration protocol") + ("DIFS" . "distributed inter-frame space") + ("DLE" . "data link escape") + ("DMA" . "direct memory access") + ("DNS" . "domain name system") + ("DOS" . "denial of service") + ("DPCM" . "differential pulse code modulation") + ("DPD" . "dead peer detection") + ("DPI" . "dots per inch") + ("DRAM" . "dynamic random access memory") + ("DSL" . "digital subscriber line") + ("DSSS" . "direct sequence spread spectrum") + ("DTD" . "document type definition") + ("DTE" . "data terminal equipment") + ("DTE" . "dumb terminal emulator") + ("DVD" . "digital versatile disc") + ("DVI" . "digital visual interface") + ("E-XER" . "Extended XML encoding Rules") + ("EAP" . "extensible authentication protocol") + ("ECP" . "enhanced capability port") + ("EDID" . "extended display identification data") + ("EDO" . "extended data out") + ("EEPROM" . "electrically erasable programmable read only memory") + ("EFI" . "extensible firmware interface") + ("EFM" . "eight to fourteen modulation") + ("EGA" . "enhanced graphics {array,adapter}") + ("EGP" . "exterior gateway protocol") + ("EISA" . "extended industry standard architecture") + ("ELF" . "executable and linking format") + ("EOF" . "end of file") + ("EOT" . "end of transmission") + ("EPP" . "enhanced parallel port") + ("EPRML" . "extended partial response, maximum likelihood") + ("EPROM" . "erasable programmable read only memory") + ("ESDRAM" . "enhanced synchronous dynamic random access memory") + ("FAT" . "file allocation table") + ("FBRAM" . "frame buffer random access memory") + ("FCS" . "frame check sequence") + ("FDDI" . "fiber distributed data interface") + ("FFS" . "fast file system") + ("FHSS" . "frequency hop spread spectrum") + ("FIR" . "fast infrared") + ("FLOPS" . "floating [point] operations per second") + ("FM" . "frequency modulation") + ("FPM" . "fast page mode") + ("FQDN" . "fully qualified domain name") + ("FTP" . "file transfer protocol") + ("FTPS" . "file transfer protocol, secure") + ("GC" . "garbage collector") + ("GCR" . "group-coded recording") + ("GIF" . "graphics interchange format") + ("GNU" . "GNU's Not UNIX") + ("GPL" . "GNU/General Public License") + ("GPU" . "graphics processing unit") + ("GRE" . "generic routing encapsulation") + ("GUI" . "graphics user interface") + ("HDCP" . "high-bandwidth digital content protection") + ("HTML" . "hyper-text markup language") + ("HTTP" . "hyper-text transfer protocol") + ("HTTPS" . "hyper-text transfer protocol, secure") + ("I2O" . "intelligent input/output") + ("IANA" . "internet assigned number authority") + ("IC" . "integrated circuit") + ("ICB" . "internet citizen's band") + ("ICMP" . "internet control message protocol") + ("IDE" . "integrated drive electronics") + ("IDRP" . "inter-domain routing protocol") + ("IEC" . "international electrotechnical commission") + ("IEEE" . "institute [of] electrical [and] electronics engineers") + ("IESG" . "internet engineering steering group") + ("IETF" . "internet engineering task force") + ("IGP" . "interior gateway protocol") + ("IKE" . "internet key exchange") + ("IMAP" . "internet mail access protocol") + ("INCITS" . "international committee on information technology standards") + ("IO" . "input/output") + ("IOCTL" . "input/output control") + ("IP" . "internet protocol") + ("IPC" . "interprocess communication") + ("IPNG" . "internet protocol, next generation") + ("IPSEC" . "internet protocol security") + ("IRC" . "internet relay chat") + ("IRQ" . "interrupt request") + ("IRTF" . "internet research task force") + ("ISA" . "industry standard architecture") + ("ISDN" . "integrated services digital network") + ("ISI" . "inter-symbol interference") + ("ISM" . "industrial, scientific and medical") + ("ISN" . "initial serial number") + ("ISO" . "international standards organization") + ("ISOC" . "internet society") + ("ISP" . "internet service provider") + ("JPEG" . "joint photographic experts group") + ("KPI" . "kernel programming interface") + ("KVA" . "kernel virtual address") + ("KVM" . "keyboard, video, mouse switch") + ("LAN" . "local area network") + ("LBA" . "logical block addressing") + ("LCD" . "liquid crystal display") + ("LCP" . "link control protocol") + ("LDAP" . "lightweight directory access protocol") + ("LED" . "light emitting diode") + ("LIR" . "local internet registry") + ("LKM" . "{linux, loadable} kernel module") + ("LLC" . "logical link control") + ("LRC" . "longitudinal redundancy check") + ("LSB" . "least significant {bit,byte}") + ("LSB" . "linux standards base") + ("LUN" . "logical unit number") + ("LZW" . "Lempel Ziv Welch") + ("MAC" . "medium access control") + ("MBR" . "master boot record") + ("MDRAM" . "multibank dynamic random access memory") + ("MFM" . "modified frequency modulation") + ("MIDI" . "musical instrument digital interface") + ("MIME" . "multipurpose internet mail extensions") + ("MIPS" . "million instructions per second") + ("MMU" . "memory management unit") + ("MPEG" . "moving picture experts group") + ("MPLS" . "multiprotocol label switching") + ("MSB" . "most significant {bit,byte}") + ("MSF" . "minutes seconds frames") + ("MSS" . "maximum segment size") + ("MTA" . "mail transfer agent") + ("MTU" . "maximum transmission unit") + ("MUA" . "mail user agent") + ("MWE" . "module width encoding") + ("NAT" . "network address translation") + ("NAV" . "network allocation vector") + ("NCP" . "network control protocol") + ("NCQ" . "native command queuing") + ("NFS" . "network file system") + ("NIC" . "network interface card") + ("NIS" . "network information service") + ("NRZ" . "non-return to zero") + ("NUMA" . "non uniform memory access") + ("OCL" . "object constraint language") + ("OCR" . "optical character recognition") + ("OEM" . "original equipment manufacturer") + ("OFDM" . "orthogonal frequency division multiplexing") + ("OSF" . "open software foundation") + ("OSI" . "open systems interconnection") + ("OSI" . "open-source initiative") + ("OSPF" . "open shortest path first") + ("OTP" . "one time password") + ("PAM" . "pluggable authentication modules") + ("PAM" . "pulse amplitude modulation") + ("PAT" . "port address translation") + ("PAX" . "portable archive exchange") + ("PC" . "personal computer") + ("PCI" . "peripheral component interconnect") + ("PCM" . "pulse code modulation") + ("PCMCIA" . "personal computer memory card international association") + ("PDP" . "page descriptor page") + ("PDU" . "protocol data unit") + ("PER" . "packed encoding rules") + ("PERL" . "practical extraction [and] report language") + ("PFS" . "perfect forward secrecy") + ("PGP" . "pretty good privacy") + ("PIC" . "programmable interrupt controller") + ("PID" . "process id") + ("PIN" . "personal identification number") + ("PIO" . "programmed input/output") + ("PLL" . "phase locked loop") + ("PMT" . "photo-multiplier tube") + ("PNG" . "portable network graphics") + ("POP" . "post office protocol") + ("POSIX" . "Portable Operating System Interface [for] UNIX") + ("POST" . "power on self test") + ("POTS" . "plain old telephone system") + ("PPP" . "point-to-point protocol") + ("PPPOA" . "point-to-point protocol over ATM") + ("PPPOE" . "point-to-point protocol over ethernet") + ("PRML" . "partial response, maximum likelihood") + ("PROM" . "programmable read only memory") + ("PSK" . "pre-shared key") + ("PSTN" . "public switched telephone network") + ("PTE" . "page table entry") + ("PTLA" . "pseudo top level aggregator") + ("PTP" . "page table page") + ("PWM" . "pulse width modulation") + ("QOS" . "quality of service") + ("RAID" . "redundant array of inexpensive disks") + ("RAM" . "random access memory") + ("RCS" . "revision control system") + ("RGB" . "red green blue") + ("RIFF" . "Resource Interchange File Format") + ("RIP" . "routing information protocol") + ("RIR" . "regional internet registry") + ("RISC" . "reduced instruction set computing") + ("RLE" . "run length encoding") + ("RLL" . "run length limited") + ("ROM" . "read only memory") + ("RPM" . "revolutions per minute") + ("RTF" . "rich text format") + ("RTS" . "request to send") + ("RTT" . "round time trip") + ("S/PDIF" . "sony/phillips digital interface") + ("SACD" . "super audio compact disc") + ("SAD" . "security association database") + ("SAM" . "serial access memory") + ("SASI" . "Shugart Associates System Interface (predecessor to SCSI)") + ("SATA" . "serial advanced technology attachment") + ("SB" . "sound blaster") + ("SCM" . "software configuration management") + ("SCM" . "source code management") + ("SCSI" . "small computer system interface") + ("SDRAM" . "synchronous dynamic random access memory") + ("SGRAM" . "synchronous graphics random access memory") + ("SIFS" . "short inter-frame space") + ("SIP" . "session initiation protocol") + ("SIR" . "slow infrared") + ("SLDRAM" . "synchronous-link dynamic random access memory") + ("SMART" . "self-monitoring analysis and reporting technology") + ("SMP" . "symmetric multiprocessing") + ("SMTP" . "simple mail transfer protocol") + ("SNMP" . "simple network management protocol") + ("SPD" . "security policy database") + ("SPD" . "serial presence detect") + ("SRAM" . "static random access memory") + ("SSFDC" . "solid state floppy disc card") + ("SSH" . "secure shell") + ("SSL" . "secure sockets layer") + ("STP" . "shielded twisted pair") + ("SVGA" . "super video graphics {array,adapter}") + ("TCL" . "tool command language") + ("TCP" . "transmission control protocol") + ("TCQ" . "tagged command queueing") + ("TDD" . "test driven development") + ("TFT" . "thin film transistor") + ("TFTP" . "trivial file transfer protocol") + ("TIFF" . "tagged image file format") + ("TLA" . "top level aggregator") + ("TLB" . "transition lookaside buffer") + ("TLD" . "top level domain") + ("TLS" . "transport layer security") + ("TMDS" . "transition minimized differential signaling") + ("TR" . "token ring") + ("TTL" . "time to live") + ("TTY" . "teletype") + ("TZ" . "time zone") + ("UART" . "universal asynchronous receiver/transmitter") + ("UC" . "uncacheable") + ("UDO" . "ultra density optical (storage)") + ("UDP" . "user datagram protocol") + ("UFS" . "UNIX file system") + ("UML" . "unified modeling language") + ("UPS" . "uninterruptible power supply") + ("URI" . "uniform resource identifier") + ("URL" . "uniform resource locator") + ("USART" . "universal synchronous/asynchronous receiver/transmitter") + ("USB" . "universal serial bus") + ("USWC" . "uncacheable speculative write combining") + ("UTP" . "unshielded twisted pair") + ("UUCP" . "unix-to-unix copy protocol") + ("UUOC" . "useless use of cat") + ("VAX" . "virtual address extension") + ("VCM" . "virtual channel memory") + ("VESA" . "video electronics standards association") + ("VGA" . "video graphics {array,adapter}") + ("WIFI" . "wireless fidelity") + ("VLAN" . "virtual local area network") + ("VLSM" . "variable length subnet mask") + ("VM" . "virtual {machine,memory}") + ("VPN" . "virtual private network") + ("VRAM" . "video random access memory") + ("VRRP" . "virtual router redundancy protocol") + ("WAN" . "wide area network") + ("WAP" . "wireless application protocol") + ("WEP" . "wired equivalent privacy") + ("WLAN" . "wireless local area network") + ("WPA" . "wi-fi protected access") + ("WRAM" . "window random access memory") + ("WWW" . "world wide web") + ("XER" . "XML Encoding Rules") + ("XGA" . "extended graphics {array,adapter}") + ("XML" . "extensible markup language") + ("XSL" . "extensible stylesheet language") + ("XT" . "extended technology") + ("ZFOD" . "zero-filled on demand") + ;; Additional acronym definitions go here + ("AAMOF" . "as a matter of fact") + ("AISI" . "as i see it") + ("ASAIMS" . "as strange as it may seem") + ("ATSL" . "along the same line") + ("AYOR" . "at your own risk") + ("BTAIM" . "be that as it may") + ("BTDTBTTS" . "been there, done that, bought the t-shirt") + ("BTHOM" . "beats the hell outta me") + ("CBA" . "can't be arsed") + ("DBD" . "Defective By Design") + ("DIIK" . "damned if i know") + ("EFF" . "Electronic Frontier Foundation") + ("FFII" . "Foundation for a Free Information Infrastructure") + ("FOAF" . "friend of a friend") + ("FSF" . "Free Software Foundation") + ("FTR" . "for the record") + ("FTBFS" . "failure to build from source") + ("GAFC" . "get a fucking clue") + ("IAE" . "in any event") + ("IBTD" . "i beg to differ") + ("ICBF" . "i can't be fucked") + ("IDS" . "intrusion detection system") + ("IDK" . "i don't know") + ("IJWTS" . "i just want to say") + ("IME" . "in my experience") + ("IYSWIM" . "if you see what i mean") + ("JFTR" . "just for the record") + ("NIFOC" . "naked in front of computer") + ("NPOV" . "neutral point of view") + ("PITB" . "pain in the butt") + ("POV" . "point of view") + ("ROTFLMAO" . "rolling on the floor laughing my ass off") + ("SWIM" . "see what i mean") + ("TNSTAAFL" . "there's no such thing as a free lunch") + ("TWAT" . "the war against terrorism") + ("WDOT" . "what do others think") + ("WDYMBT" . "what do you mean by that") + ("WDYT" . "what do you think") + ("WTB" . "where's the beef") + ("WTSHTF" . "when the shit hits the fan") + ("WTTM" . "without thinking too much") + ("WOTAM" . "waste of time and money") + ("YAGNI" . "you ain't gonna need it") + ("YGWYPF" . "you get what you pay for")) + "Mapping of acronyms to definitions.") + +;;; Utilities + +(defun wtf-match-string-no-properties (num &optional string) + "Return NUMth match of STRING sans text properties." + (if (fboundp 'match-string-no-properties) + (match-string-no-properties num string) + (match-string num string))) + +(defun wtf-remove-one (key alist) + "Remove only the first instance of KEY from ALIST. +ALIST should be a symbol, the value of which is modified directly. +Returns non-nil if an element was found and removed, nil otherwise." + (let ((svalist (symbol-value alist))) + (if (equal key (caar svalist)) + (prog1 t + (set alist (cdr svalist))) + (catch 'done + (let ((cur (cadr svalist)) + (prev svalist)) + (while cur + (if (equal key (car cur)) + (throw 'done + (prog1 t + (setcdr prev (cddr prev)))) + (setq prev (cdr prev) + cur (cadr prev)))) + nil))))) + +(defun wtf-multi-assoc (key &rest alists) + "Return a list of all values in all ALISTS that are associated with KEY." + (let ((vals nil)) + (dolist (alist alists) + (dolist (pair alist) + (when (equal key (car pair)) + (setq vals (cons (cdr pair) vals))))) + (nreverse vals))) + +(defun wtf-upcase-initials (string) + "Do `upcase-initials' on STRING, but do not uppercase letters +that come after quote characters. + +This function clobbers the match data." + (with-temp-buffer + (insert (upcase-initials string)) + (goto-char (point-min)) + (while (re-search-forward "['`]\\([[:upper:]]\\)" nil t) + (downcase-region (match-beginning 1) (match-end 1))) + (buffer-string))) + +(defun wtf-upcase-initials-maybe (string) + "Do `wtf-upcase-initials' on STRING only if STRING contains no +existing capitalization. + +This function clobbers the match data." + (let ((case-fold-search nil)) + (if (string-match "[A-Z]" string) + string + (wtf-upcase-initials string)))) + +;;; Implementation + +(defun wtf-lookup-term (term) + (setq term (upcase term)) + (wtf-multi-assoc term + (and (not (member term wtf-removed-acronyms)) + wtf-alist) + wtf-custom-alist)) + +(defun wtf-get-term-at-point () + "Return the term at point." + (interactive) + (save-excursion + (if (re-search-backward "\\W" (point-min) t) + (goto-char (1+ (point))) + (beginning-of-line)) + (when (looking-at "\\w+") + (let ((term (wtf-match-string-no-properties 0))) + (when (wtf-lookup-term term) + (downcase term)))))) + +(defun wtf-completions () + "Return a list of completions for terms." + (mapcar #'(lambda (term) + (list (downcase (car term)))) + (append wtf-alist wtf-custom-alist))) + +(defun wtf-save-maybe (var) + "If customizations are allowed, save VAR, which should be a symbol." + (when (fboundp 'customize-save-variable) + (customize-save-variable var (symbol-value var)) + (message "Saved wtf customization"))) + +;;; Interactive functions + +;;;###autoload +(defun wtf-add (acronym definition) + "Add ACRONYM and its DEFINITION to the list of custom associations. + +If you add a custom acronym definition, and feel it to be worth +sharing, you are encouraged to contact <mwolson@gnu.org> via +email, providing the acronym and its definition. This increases +the chance that it will appear in future versions of wtf.el." + (interactive "sAcronym: \nsDefinition: ") + (setq acronym (upcase acronym)) + (setq wtf-custom-alist (sort (cons (cons acronym definition) + wtf-custom-alist) + #'(lambda (a b) + (string< (car a) (car b))))) + (wtf-save-maybe 'wtf-custom-alist)) + +;;;###autoload +(defun wtf-remove (acronym) + "Remove ACRONYM from the list of custom associations. +If ACRONYM is not in the custom associations, but instead in +`wtf-alist', it will be marked as ignored by adding it to +`wtf-removed-acronyms'." + (interactive + (list (completing-read "Acronym to remove: " + (wtf-completions) nil t (wtf-get-term-at-point)))) + (setq acronym (upcase acronym)) + (if (wtf-remove-one acronym 'wtf-custom-alist) + (wtf-save-maybe 'wtf-custom-alist) + (add-to-list 'wtf-removed-acronyms acronym) + (wtf-save-maybe 'wtf-removed-acronyms))) + +;;;###autoload +(defun wtf-is (acronym) + "Provide the definition for ACRONYM. +When called interactively, display the message \"ACRONYM is DEF\". +Otherwise, return DEF. + +DEF refers to the definition associated with ACRONYM in `wtf-alist'." + (interactive + (list (completing-read "Acronym: " + (wtf-completions) nil t (wtf-get-term-at-point)))) + (when (stringp acronym) + (let ((defs (wtf-lookup-term acronym))) + (if (not defs) + (when (interactive-p) + (message "I don't know what %s means" (upcase acronym))) + (save-match-data + (let ((deftext (wtf-upcase-initials-maybe (car defs)))) + (when (cdr defs) + (dolist (def (cdr defs)) + (setq deftext (concat deftext wtf-def-separator + (wtf-upcase-initials-maybe def))))) + (if (interactive-p) + (message "%s is %s" (upcase acronym) deftext) + deftext))))))) + +(provide 'wtf) + +;;; wtf.el ends here |