Personal emacs config
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

1208 lines
42 KiB

;;; apache-mode.el --- Major mode for editing Apache httpd configuration files
;; Copyright (c) 2004, 2005 Karl Chen <quarl@nospam.quarl.org>
;; Copyright (c) 1999 Jonathan Marten <jonathan.marten@uk.sun.com>
;; Author: Karl Chen <quarl@nospam.quarl.org>
;; Maintainer: USAMI Kenta <tadsan@zonu.me>
;; Homepage: https://github.com/emacs-php/apache-mode
;; License: GPL-2.0-or-later
;; Keywords: languages, faces
;; Package-Version: 2.2.0
;; Package-Commit: 354f9302a8d805ac80d846adcd1cef10830b3d51
;; Version: 2.2.0
;; apache-mode.el 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 2, or (at your option) any later
;; version.
;;
;; It 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 your copy of Emacs; see the file COPYING. If not, write to the Free
;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
;; 02111-1307, USA.
;;; Commentary:
;;
;; apache-mode is a major mode for editing Apache HTTP Server Configuration files.
;; https://httpd.apache.org/docs/2.4/en/configuring.html
;;
;; This mode supports Apache HTTP Server 2.4 and major modules.
;;; History:
;;
;; 1999-10 Jonathan Marten <jonathan.marten@uk.sun.com>
;; initial version
;;
;; 2004-09-12 Karl Chen <quarl@nospam.quarl.org>
;; rewrote pretty much everything using define-derived-mode; added support
;; for Apache 2.x; fixed highlighting in GNU Emacs; created indentation
;; function
;;
;; 2005-06-29 Kumar Appaiah <akumar_NOSPAM@ee.iitm.ac.in>
;; use syntax table instead of font-lock-keywords to highlight comments.
;;
;; 2015-08-23 David Maus <dmaus@ictsoc.de>
;; update list of directives for Apache 2.4
;;
;; 2018-07-23 USAMI Kenta <tadsan@pixiv.com>
;; more update list of directives for Apache 2.4
;;
;;; Code:
;; Requires
(require 'regexp-opt)
(defvar apache-indent-level 4
"*Number of spaces to indent per level.")
(defvar apache-mode-syntax-table
(let ((table (make-syntax-table)))
(modify-syntax-entry ?_ "_" table)
(modify-syntax-entry ?- "_" table)
(modify-syntax-entry ?\( "()" table)
(modify-syntax-entry ?\) ")(" table)
(modify-syntax-entry ?< "(>" table)
(modify-syntax-entry ?> ")<" table)
(modify-syntax-entry ?\" "\"" table)
(modify-syntax-entry ?, "." table)
(modify-syntax-entry ?# "<" table)
(modify-syntax-entry ?\n ">#" table)
table))
;;;###autoload
(define-derived-mode apache-mode fundamental-mode "Apache"
"Major mode for editing Apache configuration files."
(set (make-local-variable 'comment-start) "# ")
(set (make-local-variable 'comment-start-skip) "#\\W*")
(set (make-local-variable 'comment-column) 48)
(set (make-local-variable 'indent-line-function) 'apache-indent-line)
(set (make-local-variable 'font-lock-defaults)
'(apache-font-lock-keywords nil t
((?_ . "w")
(?- . "w"))
beginning-of-line)))
;; Font lock
(defconst apache-font-lock-keywords
(purecopy
(list
;; see syntax table for comment highlighting
;; (list "^[ \t]*#.*" 0 'font-lock-comment-face t)
(list (concat ; sections
"^[ \t]*</?"
(regexp-opt
'("Directory" ; core
"DirectoryMatch"
"Else"
"ElseIf"
"Files"
"FilesMatch"
"If"
"IfDefine"
"IfModule"
"Limit"
"LimitExcept"
"Location"
"LocationMatch"
"Proxy"
"ProxyMatch"
"VirtualHost"
"AuthnProviderAlias" ; mod_authn_core
"AuthzProviderAlias" ; mod_authz_core
"RequireAll"
"RequireAny"
"RequireNone"
"Macro" ; mod_macro
"Perl" ; mod_perl
"IfVersion" ; mod_version
)
'words)
".*?>")
1 'font-lock-function-name-face)
(list (concat ; directives
"^[ \t]*"
(regexp-opt
'("AcceptFilter" ; core
"AcceptMutex"
"AcceptPathInfo"
"AccessConfig"
"AccessFileName"
"AddDefaultCharset"
"AddModule"
"AllowEncodedSlashes"
"AllowOverride"
"AllowOverrideList"
"AuthName"
"AuthType"
"BindAddress"
"BS2000Account"
"CGIMapExtension"
"CGIPassAuth"
"ClearModuleList"
"ContentDigest"
"CoreDumpDirectory"
"DefaultRuntimeDir"
"DefaultType"
"Define"
"DocumentRoot"
"EBCDICConvert"
"EBCDICConvertByType"
"EBCDICKludge"
"EnableMMAP"
"EnableSendfile"
"Error"
"ErrorDocument"
"ErrorLog"
"ErrorLogFormat"
"FileETag"
"ForceType"
"GprofDir"
"Group"
"HostnameLookups"
"IdentityCheck"
"Include"
"IncludeOptional"
"KeepAlive"
"KeepAliveTimeout"
"LimitInternalRecursion"
"LimitRequestBody"
"LimitRequestFields"
"LimitRequestFieldsize"
"LimitRequestLine"
"LimitXMLRequestBody"
"Listen"
"ListenBacklog"
"LockFile"
"LogLevel"
"MaxClients"
"MaxKeepAliveRequests"
"MaxRangeOverlaps"
"MaxRangeReversals"
"MaxRanges"
"MaxRequestsPerChild"
"MaxSpareServers"
"MergeTrailers"
"MinSpareServers"
"Mutex"
"NameVirtualHost"
"Options"
"PidFile"
"Port"
"Protocol"
"Require"
"ResourceConfig"
"RLimitCPU"
"RLimitMEM"
"RLimitNPROC"
"Satisfy"
"ScoreBoardFile"
"ScriptInterpreterSource"
"SeeRequestTail"
"SendBufferSize"
"ServerAdmin"
"ServerAlias"
"ServerName"
"ServerPath"
"ServerRoot"
"ServerSignature"
"ServerTokens"
"ServerType"
"SetHandler"
"SetInputFilter"
"SetOutputFilter"
"StartServers"
"ThreadsPerChild"
"ThreadStackSize"
"TimeOut"
"TraceEnable"
"UnDefine"
"UseCanonicalName"
"UseCanonicalPhysicalPort"
"User"
"AuthLDAPAuthorizePrefix" ; mod_ authnz_ldap
"AuthLDAPBindAuthoritative"
"AuthLDAPCharsetConfig"
"AuthLDAPCompareAsUser"
"AuthLDAPInitialBindAsUser"
"AuthLDAPInitialBindPattern"
"AuthLDAPMaxSubGroupDepth"
"AuthLDAPRemoteUserAttribute"
"AuthLDAPSearchAsUser"
"AuthLDAPSubGroupAttribute"
"AuthLDAPSubGroupClass"
"Allow" ; mod_access
"Deny"
"Order"
"Action" ; mod_actions
"Script"
"Alias" ; mod_alias
"AliasMatch"
"Redirect"
"RedirectMatch"
"RedirectPermanent"
"RedirectTemp"
"ScriptAlias"
"ScriptAliasMatch"
"AllowMethods" ; mod_allowmethods
"AuthAuthoritative" ; mod_auth
"AuthUserFile"
"AuthGroupFile"
"Anonymous" ; mod_auth_anon
"Anonymous_Authoritative"
"Anonymous_LogEmail"
"Anonymous_MustGiveEmail"
"Anonymous_NoUserID"
"Anonymous_VerifyEmail"
"AuthBasicAuthoritative" ; mod_auth_basic
"AuthBasicFake"
"AuthBasicProvider"
"AuthBasicUseDigestAlgorithm"
"AuthDBAuthoritative" ; mod_auth_db
"AuthDBGroupFile"
"AuthDBUserFile"
"AuthDBMAuthoritative" ; mod_auth_dbm
"AuthDBMGroupFile"
"AuthDBMType"
"AuthDBMUserFile"
"AuthDigestAlgorithm" ; mod_auth_digest
"AuthDigestDomain"
"AuthDigestFile"
"AuthDigestGroupFile"
"AuthDigestNcCheck"
"AuthDigestNonceFormat"
"AuthDigestNonceLifetime"
"AuthDigestProvider"
"AuthDigestQop"
"AuthDigestShmemSize"
"AuthFormAuthoritative" ; mod_auth_form
"AuthFormBody"
"AuthFormDisableNoStore"
"AuthFormFakeBasicAuth"
"AuthFormLocation"
"AuthFormLoginRequiredLocation"
"AuthFormLoginSuccessLocation"
"AuthFormLogoutLocation"
"AuthFormMethod"
"AuthFormMimetype"
"AuthFormPassword"
"AuthFormProvider"
"AuthFormSitePassphrase"
"AuthFormSize"
"AuthFormUsername"
"AuthLDAPAuthoritative" ; mod_auth_ldap
"AuthLDAPBindDN"
"AuthLDAPBindPassword"
"AuthLDAPCompareDNOnServer"
"AuthLDAPDereferenceAliases"
"AuthLDAPEnabled"
"AuthLDAPFrontPageHack"
"AuthLDAPGroupAttribute"
"AuthLDAPGroupAttributeIsDN"
"AuthLDAPRemoteUserIsDN"
"AuthLDAPStartTLS"
"AuthLDAPUrl"
"AuthDBDUserPWQuery" ; mod_authn_dbd
"AuthDBDUserRealmQuery"
"AuthnCacheContext" ; mod_authn_socache
"AuthnCacheEnable"
"AuthnCacheProvideFor"
"AuthnCacheSOCache"
"AuthnCacheTimeout"
"AuthnzFcgiCheckAuthnProvider" ; mod_authnz_fgci
"AuthnzFcgiDefineProvider"
"AuthMerging" ; mod_authz_core
"AuthzSendForbiddenOnFailure"
"AuthzDBDLoginToReferer" ; mod_authz_dbd
"AuthzDBDQuery"
"AuthzDBDRedirectQuery"
"AuthzDBMType"
"AddAlt" ; mod_autoindex
"AddAltByEncoding"
"AddAltByType"
"AddDescription"
"AddIcon"
"AddIconByEncoding"
"AddIconByType"
"DefaultIcon"
"FancyIndexing"
"HeaderName"
"IndexHeadInsert"
"IndexIgnore"
"IndexIgnoreReset"
"IndexOptions"
"IndexOrderDefault"
"IndexStyleSheet"
"ReadmeName"
"BrowserMatch" ; mod_browser
"BrowserMatchNoCase"
"BufferSize" ; mod_buffer
"CacheDefaultExpire" ; mod_cache
"CacheDetailHeader"
"CacheDisable"
"CacheEnable"
"CacheHeader"
"CacheIgnoreCacheControl"
"CacheIgnoreHeaders"
"CacheIgnoreNoLastMod"
"CacheIgnoreQueryString"
"CacheIgnoreURLSessionIdentifiers"
"CacheKeyBaseURL"
"CacheLastModifiedFactor"
"CacheLock"
"CacheLockMaxAge"
"CacheLockPath"
"CacheMaxExpire"
"CacheMaxFileSize"
"CacheMinExpire"
"CacheMinFileSize"
"CacheOn"
"CacheQuickHandler"
"CacheStaleOnError"
"CacheStoreExpired"
"CacheStoreNoStore"
"CacheStorePrivate"
"CacheReadSize" ; mod_cache_disk
"CacheReadTime"
"CacheSocache" ; mod_cache_socache
"CacheSocacheMaxSize"
"CacheSocacheMaxTime"
"CacheSocacheMinTime"
"CacheSocacheReadSize"
"CacheSocacheReadTime"
"MetaDir" ; mod_cern_meta
"MetaFiles"
"MetaSuffix"
"ScriptLog" ; mod_cgi
"ScriptLogBuffer"
"ScriptLogLength"
"CGIDScriptTimeout" ; mod_cgid
"ScriptLog"
"ScriptLogBuffer"
"ScriptLogLength"
"ScriptSock"
"CharsetDefault" ; mod_charset_lite
"CharsetOptions"
"CharsetSourceEnc"
"CookieLog" ; mod_cookies
"Dav" ; mod_dav
"DavDepthInfinity"
"DavLockDB"
"DavMinTimeout"
"DavGenericLockDB" ; mod_dav_lock
"DBDExptime" ; mod_dbd
"DBDInitSQL"
"DBDKeep"
"DBDMax"
"DBDMin"
"DBDParams"
"DBDPersist"
"DBDPrepareSQL"
"DBDriver"
"DeflateBufferSize" ; mod_deflate
"DeflateCompressionLevel"
"DeflateFilterNote"
"DeflateInflateLimitRequestBody"
"DeflateInflateRatioBurst"
"DeflateInflateRatioLimit"
"DeflateMemLevel"
"DeflateWindowSize"
"ModemStandard" ; mod_dialup
"AuthDigestFile" ; mod_digest
"DirectoryCheckHandler" ; mod_dir
"DirectoryIndex"
"DirectoryIndexRedirect"
"DirectorySlash"
"FallbackResource"
"LoadFile" ; mod_dld
"LoadModule"
"DumpIOInput" ; mod_dumpio
"DumpIOOutput"
"ProtocolEcho" ; mod_echo
"PassEnv" ; mod_env
"SetEnv"
"UnsetEnv"
"AsyncRequestWorkerFactor" ; mod_event
"Example" ; mod_example
"ExpiresActive" ; mod_expires
"ExpiresByType"
"ExpiresDefault"
"ExtFilterDefine" ; mod_ext_filter
"ExtFilterOptions"
"CacheFile" ; mod_file_cache
"MMapFile"
"AddOutputFilterByType" ; mod_filter
"FilterChain"
"FilterDeclare"
"FilterProtocol"
"FilterProvider"
"FilterTrace"
"Header" ; mod_headers
"RequestHeader"
"HeartbeatAddress" ; mod_heartbeat
"HeartbeatListen"
"HeartbeatMaxServers"
"HeartbeatStorage"
"IdentityCheckTimeout" ; mod_ident
"ImapBase" ; mod_imap
"ImapDefault"
"ImapMenu"
"SSIEndTag" ; mod_include
"SSIErrorMsg"
"SSIETag"
"SSILastModified"
"SSILegacyExprParser"
"SSIStartTag"
"SSITimeFormat"
"SSIUndefinedEcho"
"XBitHack"
"AddModuleInfo" ; mod_info
"ISAPICacheFile" ; mod_isapi
"ISAPIFakeAsync"
"ISAPIFileCache"
"ISAPIAppendLogToErrors" ; mod_isapi (Win32)
"ISAPIAppendLogToQuery"
"ISAPILogNotSupported"
"ISAPIReadAheadBuffer"
"LDAPCacheEntries" ; mod_ldap
"LDAPCacheTTL"
"LDAPCertDBPath"
"LDAPConnectionPoolTTL"
"LDAPConnectionTimeout"
"LDAPLibraryDebug"
"LDAPOpCacheEntries"
"LDAPOpCacheTTL"
"LDAPReferralHopLimit"
"LDAPReferrals"
"LDAPRetries"
"LDAPRetryDelay"
"LDAPSharedCacheFile"
"LDAPSharedCacheSize"
"LDAPTimeout"
"LDAPTrustedClientCert"
"LDAPTrustedGlobalCert"
"LDAPTrustedMode"
"LDAPVerifyServerCert"
"AgentLog" ; mod_log_agent
"TransferLog" ; mod_log_common
"BufferedLogs" ; mod_log_config
"CookieLog"
"CustomLog"
"LogFormat"
"TransferLog"
"LogMessage" ; mod_log_debug
"ForensicLog" ; mod_log_forensic
"RefererIgnore" ; mod_log_referer
"RefererLog"
"LogIOTrackTTFB" ; mod_logio
"LuaAuthzProvider" ; mod_lua
"LuaCodeCache"
"LuaHookAccessChecker"
"LuaHookAuthChecker"
"LuaHookCheckUserID"
"LuaHookFixups"
"LuaHookInsertFilter"
"LuaHookLog"
"LuaHookMapToStorage"
"LuaHookTranslateName"
"LuaHookTypeChecker"
"LuaInherit"
"LuaInputFilter"
"LuaMapHandler"
"LuaOutputFilter"
"LuaPackageCPath"
"LuaPackagePath"
"LuaQuickHandler"
"LuaRoot"
"LuaScope"
"UndefMacro" ; mod_macro
"Use"
"AddCharset" ; mod_mime
"AddEncoding"
"AddHandler"
"AddInputFilter"
"AddLanguage"
"AddOutputFilter"
"AddType"
"DefaultLanguage"
"ForceType"
"ModMimeUsePathInfo"
"MultiviewsMatch"
"RemoveCharset"
"RemoveEncoding"
"RemoveHandler"
"RemoveInputFilter"
"RemoveLanguage"
"RemoveOutputFilter"
"RemoveType"
"SetHandler"
"TypesConfig"
"MimeMagicFile" ; mod_mime_magic
"MMapFile" ; mod_mmap_static
"CacheNegotiatedDocs" ; mod_negotiation
"ForceLanguagePriority"
"LanguagePriority"
"NWSSLTrustedCerts" ; mod_nw_ssl
"NWSSLUpgradeable"
"SecureListen"
"PerlDispatchHandler" ; mod_perl 1
"PerlFreshRestart"
"PerlHandler"
"PerlOpmask"
"PerlRestartHandler"
"PerlScript"
"PerlSendHeader"
"PerlSetupEnv"
"PerlTaintCheck"
"PerlTransHandler"
"PerlWarn"
"PerlAccessHandler" ; mod_perl 1+2
"PerlAddVar"
"PerlAuthenHandler"
"PerlAuthzHandler"
"PerlChildExitHandler"
"PerlChildInitHandler"
"PerlCleanupHandler"
"PerlFixupHandler"
"PerlHeaderParserHandler"
"PerlInitHandler"
"PerlLogHandler"
"PerlModule"
"PerlPassEnv"
"PerlPostReadRequestHandler"
"PerlRequire"
"PerlSetEnv"
"PerlSetVar"
"PerlTypeHandler"
"PerlInputFilterHandler" ; mod_perl 2
"PerlInterpMax"
"PerlInterpMaxRequests"
"PerlInterpMaxSpare"
"PerlInterpMinSpare"
"PerlInterpScope"
"PerlInterpStart"
"PerlLoadModule"
"PerlOpenLogsHandler"
"PerlOptions"
"PerlOutputFilterHandler"
"PerlPostConfigHandler"
"PerlPreConnectionHandler"
"PerlProcessConnectionHandler"
"PerlResponseHandler"
"PerlSetInputFilter"
"PerlSetOutputFilter"
"PerlSwitches"
"PerlTrace"
"DTracePrivileges" ; mod_privileges
"PrivilegesMode"
"VHostCGIMode"
"VHostCGIPrivs"
"VHostGroup"
"VHostPrivs"
"VHostSecure"
"VHostUser"
"AllowCONNECT" ; mod_proxy
"BalancerGrowth"
"BalancerInherit"
"BalancerMember"
"BalancerPersist"
"CacheDefaultExpire"
"CacheDirLength"
"CacheDirLevels"
"CacheForceCompletion"
"CacheGcInterval"
"CacheLastModifiedFactor"
"CacheMaxExpire"
"CacheRoot"
"CacheSize"
"NoCache"
"NoProxy"
"ProxyAddHeaders"
"ProxyBadHeader"
"ProxyBlock"
"ProxyDomain"
"ProxyErrorOverride"
"ProxyHTMLURLMap"
"ProxyIOBufferSize"
"ProxyMaxForwards"
"ProxyPass"
"ProxyPassInherit"
"ProxyPassInterpolateEnv"
"ProxyPassMatch"
"ProxyPassReverse"
"ProxyPassReverseCookieDomain"
"ProxyPassReverseCookiePath"
"ProxyPreserveHost"
"ProxyReceiveBufferSize"
"ProxyRemote"
"ProxyRemoteMatch"
"ProxyRequests"
"ProxySet"
"ProxySourceAddress"
"ProxyStatus"
"ProxyTimeout"
"ProxyVia"
"ProxyExpressDBMFile" ; mod_proxy_express
"ProxyExpressDBMType"
"ProxyExpressEnable"
"ProxyFtpDirCharset" ; mod_proxy_ftp
"ProxyFtpEscapeWildcards"
"ProxyFtpListOnWildcard"
"ProxyHTMLBufSize" ; mod_proxy_html
"ProxyHTMLCharsetOut"
"ProxyHTMLDocType"
"ProxyHTMLEnable"
"ProxyHTMLEvents"
"ProxyHTMLExtended"
"ProxyHTMLFixups"
"ProxyHTMLInterp"
"ProxyHTMLLinks"
"ProxyHTMLMeta"
"ProxyHTMLStripComments"
"ProxySCGIInternalRedirect" ; mod_proxy_scgi
"ProxySCGISendfile"
"PythonAccessHandler" ; mod_python
"PythonAuthenHandler"
"PythonAuthzHandler"
"PythonAutoReload"
"PythonCleanupHandler"
"PythonConnectionHandler"
"PythonDebug"
"PythonEnablePdb"
"PythonFixupHandler"
"PythonHandler"
"PythonHandlerModule"
"PythonHeaderParserHandler"
"PythonImport"
"PythonInitHandler"
"PythonInputFilter"
"PythonInterpPerDirective"
"PythonInterpPerDirectory"
"PythonInterpreter"
"PythonLogHandler"
"PythonOptimize"
"PythonOption"
"PythonOutputFilter"
"PythonPath"
"PythonPostReadRequestHandler"
"PythonTransHandler"
"PythonTypeHandler"
"ReflectorHeader" ; mod_reflector
"RemoteIPHeader" ; mod_remoteip
"RemoteIPInternalProxy"
"RemoteIPInternalProxyList"
"RemoteIPProxiesHeader"
"RemoteIPTrustedProxy"
"RemoteIPTrustedProxyList"
"RequestReadTimeout" ; mod_reqtimeout
"KeptBodySize" ; mod_request
"RewriteBase" ; mod_rewrite
"RewriteCond"
"RewriteEngine"
"RewriteLock"
"RewriteLog"
"RewriteLogLevel"
"RewriteMap"
"RewriteOptions"
"RewriteRule"
"InputSed" ; mod_sed
"OutputSed"
"Session" ; mod_session
"SessionEnv"
"SessionExclude"
"SessionHeader"
"SessionInclude"
"SessionMaxAge"
"SessionCookieName" ; mod_session_cookie
"SessionCookieName2"
"SessionCookieRemove"
"SessionCryptoCipher" ; mod_session_crypto
"SessionCryptoDriver"
"SessionCryptoPassphrase"
"SessionCryptoPassphraseFile"
"SessionDBDCookieName" ; mod_session_dbd
"SessionDBDCookieName2"
"SessionDBDCookieRemove"
"SessionDBDDeleteLabel"
"SessionDBDInsertLabel"
"SessionDBDPerUser"
"SessionDBDSelectLabel"
"SessionDBDUpdateLabel"
"BrowserMatch" ; mod_setenvif
"BrowserMatchNoCase"
"SetEnvIf"
"SetEnvIfExpr"
"SetEnvIfNoCase"
"LoadFile" ; mod_so
"LoadModule"
"CheckCaseOnly" ; mod_speling
"CheckSpelling"
"SSLBanCipher" ; mod_ssl
"SSLCACertificateFile"
"SSLCACertificatePath"
"SSLCacheServerPath"
"SSLCacheServerPort"
"SSLCacheServerRunDir"
"SSLCADNRequestFile"
"SSLCADNRequestPath"
"SSLCARevocationCheck"
"SSLCARevocationFile"
"SSLCARevocationPath"
"SSLCertificateChainFile"
"SSLCertificateFile"
"SSLCertificateKeyFile"
"SSLCheckClientDN"
"SSLCipherSuite"
"SSLCompression"
"SSLCryptoDevice"
"SSLDenySSL"
"SSLDisable"
"SSLEnable"
"SSLEngine"
"SSLEngineID"
"SSLExportClientCertificates"
"SSLFakeBasicAuth"
"SSLFIPS"
"SSLHonorCipherOrder"
"SSLInsecureRenegotiation"
"SSLKeyNoteTrustedAssertion"
"SSLKeyNoteTrustedIssuerTemplate"
"SSLLog"
"SSLLogLevel"
"SSLMutex"
"SSLNoCAList"
"SSLOCSPDefaultResponder"
"SSLOCSPEnable"
"SSLOCSPOverrideResponder"
"SSLOCSPResponderTimeout"
"SSLOCSPResponseMaxAge"
"SSLOCSPResponseTimeSkew"
"SSLOCSPUseRequestNonce"
"SSLOpenSSLConfCmd"
"SSLOptions"
"SSLPassPhraseDialog"
"SSLProtocol"
"SSLProxyCACertificateFile"
"SSLProxyCACertificatePath"
"SSLProxyCARevocationCheck"
"SSLProxyCARevocationFile"
"SSLProxyCARevocationPath"
"SSLProxyCheckPeerCN"
"SSLProxyCheckPeerExpire"
"SSLProxyCheckPeerName"
"SSLProxyCipherSuite"
"SSLProxyEngine"
"SSLProxyMachineCertificateChainFile"
"SSLProxyMachineCertificateFile"
"SSLProxyMachineCertificatePath"
"SSLProxyProtocol"
"SSLProxyVerify"
"SSLProxyVerifyDepth"
"SSLRandomFile"
"SSLRandomFilePerConnection"
"SSLRandomSeed"
"SSLRenegBufferSize"
"SSLRequire"
"SSLRequireCipher"
"SSLRequiredCiphers"
"SSLRequireSSL"
"SSLSessionCache"
"SSLSessionCacheTimeout"
"SSLSessionTicketKeyFile"
"SSLSessionTickets"
"SSLSRPUnknownUserSeed"
"SSLSRPVerifierFile"
"SSLStaplingCache"
"SSLStaplingErrorCacheTimeout"
"SSLStaplingFakeTryLater"
"SSLStaplingForceURL"
"SSLStaplingResponderTimeout"
"SSLStaplingResponseMaxAge"
"SSLStaplingResponseTimeSkew"
"SSLStaplingReturnResponderErrors"
"SSLStaplingStandardCacheTimeout"
"SSLStrictSNIVHostCheck"
"SSLUserName"
"SSLUseStapling"
"SSLVerifyClient"
"SSLVerifyDepth"
"ExtendedStatus" ; mod_status
"Substitute" ; mod_substitute
"SubstituteMaxLineLength"
"SuexecUserGroup" ; mod_suexec
"ChrootDir" ; mod_unixd
"Suexec"
"UserDir" ; mod_userdir
"CookieDomain" ; mod_usertrack
"CookieExpires"
"CookieName"
"CookieStyle"
"CookieTracking"
"VirtualDocumentRoot" ; mod_vhost_alias
"VirtualDocumentRootIP"
"VirtualScriptAlias"
"VirtualScriptAliasIP"
"WatchdogInterval" ; mod_watchdog
"xml2EncAlias" ; mod_xml2enc
"xml2EncDefault"
"xml2StartParse"
"CoreDumpDirectory" ; mpm_common
"EnableExceptionHook"
"GracefulShutdownTimeout"
"Group"
"Listen"
"ListenBackLog"
"LockFile"
"MaxClients"
"MaxConnectionsPerChild"
"MaxMemFree"
"MaxRequestsPerChild"
"MaxRequestWorkers"
"MaxSpareThreads"
"MaxThreadsPerChild"
"MinSpareThreads"
"NumServers"
"PidFile"
"ReceiveBufferSize"
"ScoreBoardFile"
"SendBufferSize"
"ServerLimit"
"StartServers"
"StartThreads"
"ThreadLimit"
"ThreadsPerChild"
"User"
"MaxClientsVHost" ; mpm_itk
"Listen" ; mpm_netware
"ListenBacklog"
"MaxRequestsPerChild"
"MaxSpareThreads"
"MaxThreads"
"MinSpareThreads"
"SendBufferSize"
"StartThreads"
"ThreadStackSize"
"AssignUserId" ; mpm_perchild
"ChildPerUserId"
"CoreDumpDirectory"
"Group"
"Listen"
"ListenBacklog"
"LockFile"
"MaxRequestsPerChild"
"MaxSpareThreads"
"MaxThreadsPerChild"
"MinSpareThreads"
"NumServers"
"PidFile"
"ScoreBoardFile"
"SendBufferSize"
"StartThreads"
"User"
"ServerEnvironment" ; mpm_peruser
"AcceptMutex" ; mpm_prefork
"CoreDumpDirectory"
"Listen"
"ListenBacklog"
"LockFile"
"MaxRequestsPerChild"
"PidFile"
"ScoreBoardFile"
"SendBufferSize"
"ServerLimit"
"StartServers"
"User"
"CoreDumpDirectory" ; mpm_winnt
"Listen"
"ListenBacklog"
"MaxRequestsPerChild"
"PidFile"
"SendBufferSize"
"ThreadsPerChild"
"CoreDumpDirectory" ; mpm_worker
"Group"
"Listen"
"ListenBacklog"
"LockFile"
"MaxClients"
"MaxRequestsPerChild"
"MaxSpareThreads"
"MinSpareThreads"
"PidFile"
"ScoreBoardFile"
"SendBufferSize"
"ServerLimit"
"StartServers"
"ThreadLimit"
"ThreadsPerChild"
"User"
"DefaultMode" ; (obsolete)
"DocTitle"
"DocTrailer"
"HeadPrefix"
"HeadSuffix"
"HideSys"
"HideURL"
"HTMLDir"
"HTTPLogFile"
"LastURLs"
"PrivateDir"
"TopSites"
"TopURLs"
)
'words))
1 'font-lock-keyword-face)
(list ; values
(regexp-opt
'(
"add" ; (general)
"All"
"allow"
"any"
"append"
"AuthConfig"
"Basic"
"CONNECT"
"default"
"DELETE"
"deny"
"Digest"
"double"
"downgrade-1.0"
"email"
"env"
"error"
"ExecCGI"
"FancyIndexing"
"fcntl"
"FileInfo"
"flock"
"FollowSymLinks"
"force-response-1.0"
"formatted"
"from"
"full"
"GET"
"gone"
"group"
"IconsAreLinks"
"Includes"
"IncludesNOEXEC"
"Indexes"
"inetd"
"inherit"
"INode"
"Limit"
"map"
"Minimal"
"MTime"
"MultiViews"
"mutual-failure"
"nocontent"
"nokeepalive"
"none"
"off"
"on"
"Options"
"OS"
"os2sem"
"permanent"
"POST"
"pthread"
"PUT"
"referer"
"ScanHTMLTitles"
"seeother"
"semi-formatted"
"set"
"standalone"
"SuppressDescription"
"SuppressLastModified"
"SuppressSize"
"SymLinksIfOwnerMatch"
"sysvsem"
"temporary"
"tpfcore"
"unformatted"
"unset"
"URL"
"user"
"uslock"
"valid-user"
"3DES" ; cipher stuff
"ADH"
"ADH-DES-CBC-SHA"
"ADH-DES-CBC3-SHA"
"ADH-RC4-MD"
"ADH-RC4-MD5"
"aDSS"
"aNULL"
"aRSA"
"DES"
"DES-CBC-MD5"
"DES-CBC-SHA"
"DES-CBC3-MD5"
"DES-CBC3-SHA"
"DES-CFB-M1"
"DH"
"DH-DSS-DES-CBC-SHA"
"DH-DSS-DES-CBC3-SHA"
"DH-RSA-DES-CBC-SHA"
"DH-RSA-DES-CBC3-SHA"
"DSS"
"EDH"
"EDH-DSS-DES-CBC-SHA"
"EDH-DSS-DES-CBC3-SHA"
"EDH-RSA-DES-CBC-SHA"
"EDH-RSA-DES-CBC3-SHA"
"egd"
"eNULL"
"EXP"
"EXP-ADH-DES-CBC-SHA"
"EXP-ADH-RC4-MD5"
"EXP-DES-CBC-SHA"
"EXP-DH-DSS-DES-CBC-SHA"
"EXP-DH-RSA-DES-CBC-SHA"
"EXP-EDH-DSS-DES-CBC-SHA"
"EXP-EDH-RSA-DES-CBC"
"EXP-EDH-RSA-DES-CBC-SHA"
"EXP-RC2-CBC-MD5"
"EXP-RC4-MD5"
"EXPORT40"
"EXPORT56"
"file"
"FZA-FZA-CBC-SHA"
"FZA-NULL-SHA"
"FZA-RC4-SHA"
"HIGH"
"IDEA"
"IDEA-CBC-MD5"
"IDEA-CBC-SHA"
"kDHd"
"kDHr"
"kEDH"
"kRSA"
"LOW"
"MD5"
"MEDIUM"
"NULL"
"NULL-MD5"
"NULL-SHA"
"RC2"
"RC2-CBC-MD5"
"RC4"
"RC4-64-MD5"
"RC4-MD5"
"RC4-SHA"
"RSA"
"SHA"
"SHA1"
"send-as-is" ; mod_asis
"cgi-script" ; mod_cgi
"imap-file" ; mod_imap
"server-info" ; mod_info
"isapi-isa" ; mod_isapi
"ldap-status" ; mod_ldap
"Off" ; mod_perl
"On"
"perl-script"
"Off" ; mod_python
"On"
"python-program"
"All" ; mod_ssl
"builtin"
"CompatEnvVars"
"connect"
"dbm"
"debug"
"egd"
"error"
"exec"
"ExportCertData"
"FakeBasicAuth"
"file"
"info"
"none"
"off"
"on"
"optional"
"optional_no_ca"
"OptRenegotiate"
"require"
"sem"
"shm"
"shmcb"
"shmht"
"ssl-accurate-shutdown"
"ssl-unclean-shutdown"
"SSLv2"
"SSLv3"
"startup"
"StdEnvVars"
"StrictRequire"
"TLSv1"
"trace"
"warn"
"server-status" ; mod_status
)
'words)
1 'font-lock-type-face)))
"Expressions to highlight in Apache config buffers.")
(defun apache-indent-line ()
"Indent current line of Apache code."
(interactive)
(let ((savep (> (current-column) (current-indentation)))
(indent (max (apache-calculate-indentation) 0)))
(if savep
(save-excursion (indent-line-to indent))
(indent-line-to indent))))
(defun apache-previous-indentation ()
"Return the previous (non-empty/comment) indentation. Doesn't save position."
(let (indent)
(while (and (null indent)
(zerop (forward-line -1)))
(unless (looking-at "[ \t]*\\(#\\|$\\)")
(setq indent (current-indentation))))
(or indent 0)))
(defun apache-calculate-indentation ()
"Return the amount the current line should be indented."
(save-excursion
(forward-line 0)
(if (bobp)
0
(let ((ends-section-p (looking-at "[ \t]*</"))
(indent (apache-previous-indentation)) ; moves point!
(previous-starts-section-p (looking-at "[ \t]*<[^/]")))
(if ends-section-p
(setq indent (- indent apache-indent-level)))
(if previous-starts-section-p
(setq indent (+ indent apache-indent-level)))
indent))))
;;;###autoload
(progn
(add-to-list 'auto-mode-alist '("/\\.htaccess\\'" . apache-mode))
(add-to-list 'auto-mode-alist '("/\\(?:access\\|httpd\\|srm\\)\\.conf\\'" . apache-mode))
(add-to-list 'auto-mode-alist '("/apache2/.+\\.conf\\'" . apache-mode))
(add-to-list 'auto-mode-alist '("/httpd/conf/.+\\.conf\\'" . apache-mode))
(add-to-list 'auto-mode-alist '("/apache2/sites-\\(?:available\\|enabled\\)/" . apache-mode)))
(provide 'apache-mode)
;;; apache-mode.el ends here