mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Compare commits
	
		
			47 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					e424e8e88c | ||
| 
						 | 
					07d4f218a3 | ||
| 
						 | 
					67ed060d37 | ||
| 
						 | 
					3abe081560 | ||
| 
						 | 
					855f1a1f86 | ||
| 
						 | 
					0406a5b326 | ||
| 
						 | 
					0108ef4386 | ||
| 
						 | 
					daefff86ff | ||
| 
						 | 
					fdb962518f | ||
| 
						 | 
					6564078061 | ||
| 
						 | 
					39ea9be5f8 | ||
| 
						 | 
					152b5ade5e | ||
| 
						 | 
					c525e3fbef | ||
| 
						 | 
					88c74fa9c2 | ||
| 
						 | 
					2ea1ff2736 | ||
| 
						 | 
					a1901fceff | ||
| 
						 | 
					b4035a3804 | ||
| 
						 | 
					fc67fc525c | ||
| 
						 | 
					f0659d3aa5 | ||
| 
						 | 
					a7a123a8db | ||
| 
						 | 
					0e5327a77a | ||
| 
						 | 
					ecd4ae3bda | ||
| 
						 | 
					7a8bd628e1 | ||
| 
						 | 
					8e19aea39e | ||
| 
						 | 
					6fcba83f3e | ||
| 
						 | 
					d6d7d38eb8 | ||
| 
						 | 
					c8094d3775 | ||
| 
						 | 
					de478d2f2d | ||
| 
						 | 
					991dcef18b | ||
| 
						 | 
					f30e9270f1 | ||
| 
						 | 
					1d7ba18b15 | ||
| 
						 | 
					35a06d6cb8 | ||
| 
						 | 
					4cf7feb275 | ||
| 
						 | 
					30298a9ef8 | ||
| 
						 | 
					cc5f1c57ca | ||
| 
						 | 
					697380336c | ||
| 
						 | 
					5fd8d71858 | ||
| 
						 | 
					5bc88814e2 | ||
| 
						 | 
					00efd6a463 | ||
| 
						 | 
					81ca6e7766 | ||
| 
						 | 
					cd288a8ee4 | ||
| 
						 | 
					a8d84f3d55 | ||
| 
						 | 
					600115afed | ||
| 
						 | 
					abf7bee464 | ||
| 
						 | 
					e73a4ecd0e | ||
| 
						 | 
					70779c9986 | ||
| 
						 | 
					22d4865c52 | 
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1,5 +1,6 @@
 | 
			
		||||
/Gemfile.lock
 | 
			
		||||
.bundle/
 | 
			
		||||
.idea
 | 
			
		||||
benchmark/
 | 
			
		||||
lib/linguist/samples.json
 | 
			
		||||
/grammars
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										9
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							@@ -22,9 +22,9 @@
 | 
			
		||||
[submodule "vendor/grammars/Sublime-REBOL"]
 | 
			
		||||
	path = vendor/grammars/Sublime-REBOL
 | 
			
		||||
	url = https://github.com/Oldes/Sublime-REBOL
 | 
			
		||||
[submodule "vendor/grammars/Sublime-VimL"]
 | 
			
		||||
	path = vendor/grammars/Sublime-VimL
 | 
			
		||||
	url = https://github.com/SalGnt/Sublime-VimL
 | 
			
		||||
[submodule "vendor/grammars/language-viml"]
 | 
			
		||||
	path = vendor/grammars/language-viml
 | 
			
		||||
	url = https://github.com/Alhadis/language-viml
 | 
			
		||||
[submodule "vendor/grammars/ColdFusion"]
 | 
			
		||||
	path = vendor/grammars/ColdFusion
 | 
			
		||||
	url = https://github.com/SublimeText/ColdFusion
 | 
			
		||||
@@ -791,3 +791,6 @@
 | 
			
		||||
[submodule "vendor/grammars/language-babel"]
 | 
			
		||||
	path = vendor/grammars/language-babel
 | 
			
		||||
	url = https://github.com/github-linguist/language-babel
 | 
			
		||||
[submodule "vendor/CodeMirror"]
 | 
			
		||||
	path = vendor/CodeMirror
 | 
			
		||||
	url = https://github.com/codemirror/CodeMirror
 | 
			
		||||
 
 | 
			
		||||
@@ -103,8 +103,6 @@ vendor/grammars/Sublime-SQF-Language:
 | 
			
		||||
vendor/grammars/Sublime-Text-2-OpenEdge-ABL:
 | 
			
		||||
- source.abl
 | 
			
		||||
- text.html.abl
 | 
			
		||||
vendor/grammars/Sublime-VimL:
 | 
			
		||||
- source.viml
 | 
			
		||||
vendor/grammars/SublimeBrainfuck:
 | 
			
		||||
- source.bf
 | 
			
		||||
vendor/grammars/SublimeClarion:
 | 
			
		||||
@@ -414,6 +412,8 @@ vendor/grammars/language-toc-wow:
 | 
			
		||||
- source.toc
 | 
			
		||||
vendor/grammars/language-turing:
 | 
			
		||||
- source.turing
 | 
			
		||||
vendor/grammars/language-viml:
 | 
			
		||||
- source.viml
 | 
			
		||||
vendor/grammars/language-wavefront:
 | 
			
		||||
- source.wavefront.mtl
 | 
			
		||||
- source.wavefront.obj
 | 
			
		||||
 
 | 
			
		||||
@@ -144,7 +144,7 @@ module Linguist
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    fortran_rx = /^([c*][^abd-z]|      (subroutine|program|end)\s|\s*!)/i
 | 
			
		||||
    fortran_rx = /^([c*][^abd-z]|      (subroutine|program|end|data)\s|\s*!)/i
 | 
			
		||||
 | 
			
		||||
    disambiguate ".f" do |data|
 | 
			
		||||
      if /^: /.match(data)
 | 
			
		||||
@@ -202,6 +202,8 @@ module Linguist
 | 
			
		||||
    disambiguate ".inc" do |data|
 | 
			
		||||
      if /^<\?(?:php)?/.match(data)
 | 
			
		||||
        Language["PHP"]
 | 
			
		||||
      elsif /^\s*#(declare|local|macro|while)\s/.match(data)
 | 
			
		||||
        Language["POV-Ray SDL"]
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -267,6 +267,7 @@ module Linguist
 | 
			
		||||
    # Returns an Array of Languages.
 | 
			
		||||
    def self.ace_modes
 | 
			
		||||
      warn "This method will be deprecated in a future 5.x release. Every language now has an `ace_mode` set."
 | 
			
		||||
      warn caller
 | 
			
		||||
      @ace_modes ||= all.select(&:ace_mode).sort_by { |lang| lang.name.downcase }
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
@@ -300,6 +301,8 @@ module Linguist
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      @ace_mode = attributes[:ace_mode]
 | 
			
		||||
      @codemirror_mode = attributes[:codemirror_mode]
 | 
			
		||||
      @codemirror_mime_type = attributes[:codemirror_mime_type]
 | 
			
		||||
      @wrap = attributes[:wrap] || false
 | 
			
		||||
 | 
			
		||||
      # Set legacy search term
 | 
			
		||||
@@ -397,6 +400,31 @@ module Linguist
 | 
			
		||||
    # Returns a String name or nil
 | 
			
		||||
    attr_reader :ace_mode
 | 
			
		||||
 | 
			
		||||
    # Public: Get CodeMirror mode
 | 
			
		||||
    #
 | 
			
		||||
    # Maps to a directory in the `mode/` source code.
 | 
			
		||||
    #   https://github.com/codemirror/CodeMirror/tree/master/mode
 | 
			
		||||
    #
 | 
			
		||||
    # Examples
 | 
			
		||||
    #
 | 
			
		||||
    #  # => "nil"
 | 
			
		||||
    #  # => "javascript"
 | 
			
		||||
    #  # => "clike"
 | 
			
		||||
    #
 | 
			
		||||
    # Returns a String name or nil
 | 
			
		||||
    attr_reader :codemirror_mode
 | 
			
		||||
 | 
			
		||||
    # Public: Get CodeMirror MIME type mode
 | 
			
		||||
    #
 | 
			
		||||
    # Examples
 | 
			
		||||
    #
 | 
			
		||||
    #  # => "nil"
 | 
			
		||||
    #  # => "text/x-javascript"
 | 
			
		||||
    #  # => "text/x-csrc"
 | 
			
		||||
    #
 | 
			
		||||
    # Returns a String name or nil
 | 
			
		||||
    attr_reader :codemirror_mime_type
 | 
			
		||||
 | 
			
		||||
    # Public: Should language lines be wrapped
 | 
			
		||||
    #
 | 
			
		||||
    # Returns true or false
 | 
			
		||||
@@ -573,6 +601,8 @@ module Linguist
 | 
			
		||||
      :aliases           => options['aliases'],
 | 
			
		||||
      :tm_scope          => options['tm_scope'],
 | 
			
		||||
      :ace_mode          => options['ace_mode'],
 | 
			
		||||
      :codemirror_mode   => options['codemirror_mode'],
 | 
			
		||||
      :codemirror_mime_type => options['codemirror_mime_type'],
 | 
			
		||||
      :wrap              => options['wrap'],
 | 
			
		||||
      :group_name        => options['group'],
 | 
			
		||||
      :searchable        => options.fetch('searchable', true),
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,19 +1,98 @@
 | 
			
		||||
module Linguist
 | 
			
		||||
  module Strategy
 | 
			
		||||
    class Modeline
 | 
			
		||||
      EMACS_MODELINE = /-\*-\s*(?:(?!mode)[\w-]+\s*:\s*(?:[\w+-]+)\s*;?\s*)*(?:mode\s*:)?\s*([\w+-]+)\s*(?:;\s*(?!mode)[\w-]+\s*:\s*[\w+-]+\s*)*;?\s*-\*-/i
 | 
			
		||||
      EMACS_MODELINE = /
 | 
			
		||||
        -\*-
 | 
			
		||||
        (?:
 | 
			
		||||
          # Short form: `-*- ruby -*-`
 | 
			
		||||
          \s* (?= [^:;\s]+ \s* -\*-)
 | 
			
		||||
          |
 | 
			
		||||
          # Longer form: `-*- foo:bar; mode: ruby; -*-`
 | 
			
		||||
          (?:
 | 
			
		||||
            .*?       # Preceding variables: `-*- foo:bar bar:baz;`
 | 
			
		||||
            [;\s]     # Which are delimited by spaces or semicolons
 | 
			
		||||
            |
 | 
			
		||||
            (?<=-\*-) # Not preceded by anything: `-*-mode:ruby-*-`
 | 
			
		||||
          )
 | 
			
		||||
          mode        # Major mode indicator
 | 
			
		||||
          \s*:\s*     # Allow whitespace around colon: `mode : ruby`
 | 
			
		||||
        )
 | 
			
		||||
        ([^:;\s]+)    # Name of mode
 | 
			
		||||
 | 
			
		||||
      # First form vim modeline
 | 
			
		||||
      # [text]{white}{vi:|vim:|ex:}[white]{options}
 | 
			
		||||
      # ex: 'vim: syntax=ruby'
 | 
			
		||||
      VIM_MODELINE_1 = /(?:vim|vi|ex):\s*(?:ft|filetype|syntax)=(\w+)\s?/i
 | 
			
		||||
        # Ensure the mode is terminated correctly
 | 
			
		||||
        (?=
 | 
			
		||||
          # Followed by semicolon or whitespace
 | 
			
		||||
          [\s;]
 | 
			
		||||
          |
 | 
			
		||||
          # Touching the ending sequence: `ruby-*-`
 | 
			
		||||
          (?<![-*])   # Don't allow stuff like `ruby--*-` to match; it'll invalidate the mode
 | 
			
		||||
          -\*-        # Emacs has no problems reading `ruby --*-`, however.
 | 
			
		||||
        )
 | 
			
		||||
        .*?           # Anything between a cleanly-terminated mode and the ending -*-
 | 
			
		||||
        -\*-
 | 
			
		||||
      /xi
 | 
			
		||||
 | 
			
		||||
      # Second form vim modeline (compatible with some versions of Vi)
 | 
			
		||||
      # [text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
 | 
			
		||||
      # ex: 'vim set syntax=ruby:'
 | 
			
		||||
      VIM_MODELINE_2 = /(?:vim|vi|Vim|ex):\s*se(?:t)?.*\s(?:ft|filetype|syntax)=(\w+)\s?.*:/i
 | 
			
		||||
      VIM_MODELINE   = /
 | 
			
		||||
 | 
			
		||||
      MODELINES = [EMACS_MODELINE, VIM_MODELINE_1, VIM_MODELINE_2]
 | 
			
		||||
        # Start modeline. Could be `vim:`, `vi:` or `ex:`
 | 
			
		||||
        (?:
 | 
			
		||||
          (?:\s|^)
 | 
			
		||||
          vi
 | 
			
		||||
          (?:m[<=>]?\d+|m)? # Version-specific modeline
 | 
			
		||||
          |
 | 
			
		||||
          [\t\x20] # `ex:` requires whitespace, because "ex:" might be short for "example:"
 | 
			
		||||
          ex
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        # If the option-list begins with `set ` or `se `, it indicates an alternative
 | 
			
		||||
        # modeline syntax partly-compatible with older versions of Vi. Here, the colon
 | 
			
		||||
        # serves as a terminator for an option sequence, delimited by whitespace.
 | 
			
		||||
        (?=
 | 
			
		||||
          # So we have to ensure the modeline ends with a colon
 | 
			
		||||
          : (?=\s* set? \s [^\n:]+ :) |
 | 
			
		||||
 | 
			
		||||
          # Otherwise, it isn't valid syntax and should be ignored
 | 
			
		||||
          : (?!\s* set? \s)
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        # Possible (unrelated) `option=value` pairs to skip past
 | 
			
		||||
        (?:
 | 
			
		||||
          # Option separator. Vim uses whitespace or colons to separate options (except if
 | 
			
		||||
          # the alternate "vim: set " form is used, where only whitespace is used)
 | 
			
		||||
          (?:
 | 
			
		||||
            \s
 | 
			
		||||
            |
 | 
			
		||||
            \s* : \s* # Note that whitespace around colons is accepted too:
 | 
			
		||||
          )           # vim: noai :  ft=ruby:noexpandtab
 | 
			
		||||
 | 
			
		||||
          # Option's name. All recognised Vim options have an alphanumeric form.
 | 
			
		||||
          \w*
 | 
			
		||||
 | 
			
		||||
          # Possible value. Not every option takes an argument.
 | 
			
		||||
          (?:
 | 
			
		||||
            # Whitespace between name and value is allowed: `vim: ft   =ruby`
 | 
			
		||||
            \s*=
 | 
			
		||||
 | 
			
		||||
            # Option's value. Might be blank; `vim: ft= ` says "use no filetype".
 | 
			
		||||
            (?:
 | 
			
		||||
              [^\\\s] # Beware of escaped characters: titlestring=\ ft=ruby
 | 
			
		||||
              |       # will be read by Vim as { titlestring: " ft=ruby" }.
 | 
			
		||||
              \\.
 | 
			
		||||
            )*
 | 
			
		||||
          )?
 | 
			
		||||
        )*
 | 
			
		||||
 | 
			
		||||
        # The actual filetype declaration
 | 
			
		||||
        [\s:] (?:filetype|ft|syntax) \s*=
 | 
			
		||||
 | 
			
		||||
        # Language's name
 | 
			
		||||
        (\w+)
 | 
			
		||||
 | 
			
		||||
        # Ensure it's followed by a legal separator
 | 
			
		||||
        (?=\s|:|$)
 | 
			
		||||
      /xi
 | 
			
		||||
 | 
			
		||||
      MODELINES = [EMACS_MODELINE, VIM_MODELINE]
 | 
			
		||||
 | 
			
		||||
      # Scope of the search for modelines
 | 
			
		||||
      # Number of lines to check at the beginning and at the end of the file
 | 
			
		||||
 
 | 
			
		||||
@@ -165,7 +165,7 @@
 | 
			
		||||
# Chart.js
 | 
			
		||||
- (^|/)Chart\.js$
 | 
			
		||||
 | 
			
		||||
# Codemirror
 | 
			
		||||
# CodeMirror
 | 
			
		||||
- (^|/)[Cc]ode[Mm]irror/(\d+\.\d+/)?(lib|mode|theme|addon|keymap|demo)
 | 
			
		||||
 | 
			
		||||
# SyntaxHighlighter - http://alexgorbatchev.com/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,3 @@
 | 
			
		||||
module Linguist
 | 
			
		||||
  VERSION = "4.8.11"
 | 
			
		||||
  VERSION = "4.8.15"
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								samples/Emacs Lisp/filenames/.abbrev_defs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								samples/Emacs Lisp/filenames/.abbrev_defs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
(define-abbrev-table 'c-mode-abbrev-table '(
 | 
			
		||||
	))
 | 
			
		||||
(define-abbrev-table 'fundamental-mode-abbrev-table '(
 | 
			
		||||
	("TM" "™" nil 0)
 | 
			
		||||
	("(R)" "®" nil 0)
 | 
			
		||||
	("C=" "€" nil 0)))
 | 
			
		||||
							
								
								
									
										20
									
								
								samples/Emacs Lisp/filenames/.gnus
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								samples/Emacs Lisp/filenames/.gnus
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
(setq user-full-name "Alhadis")
 | 
			
		||||
(setq user-mail-address "fake.account@gmail.com")
 | 
			
		||||
 | 
			
		||||
(auto-image-file-mode)
 | 
			
		||||
(setq mm-inline-large-images t)
 | 
			
		||||
(add-to-list 'mm-attachment-override-types "image/*")
 | 
			
		||||
 | 
			
		||||
(setq gnus-select-method 
 | 
			
		||||
	  '(nnimap "gmail"
 | 
			
		||||
		(nnimap-address "imap.gmail.com")
 | 
			
		||||
		(nnimap-server-port 777)
 | 
			
		||||
		(nnimap-stream ssl)))
 | 
			
		||||
 | 
			
		||||
(setq message-send-mail-function 'smtpmail-send-it
 | 
			
		||||
	  smtpmail-starttls-credentials '(("smtp.gmail.com" 600 nil nil))
 | 
			
		||||
	  smtpmail-auth-credentials '(("smtp.gmail.com" 700 "me@lisp.com" nil))
 | 
			
		||||
	  smtpmail-default-smtp-server "smtp.gmail.com"
 | 
			
		||||
	  smtpmail-smtp-server "smtp.gmail.com"
 | 
			
		||||
	  smtpmail-smtp-service 800
 | 
			
		||||
	  setq gnus-ignored-from-addresses "^from\\.Telstra[ \t\r\n]+Thanks")
 | 
			
		||||
							
								
								
									
										10
									
								
								samples/Emacs Lisp/filenames/.viper
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								samples/Emacs Lisp/filenames/.viper
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
(setq viper-inhibit-startup-message 't)
 | 
			
		||||
(setq viper-expert-level '5)
 | 
			
		||||
 | 
			
		||||
; Key bindings
 | 
			
		||||
(define-key viper-vi-global-user-map "\C-d" 'end-of-line)
 | 
			
		||||
 | 
			
		||||
; Return to top of window
 | 
			
		||||
(defun my-viper-return-to-top ()
 | 
			
		||||
  (interactive)
 | 
			
		||||
  (beginning-of-buffer))
 | 
			
		||||
							
								
								
									
										34
									
								
								samples/Emacs Lisp/filenames/Project.ede
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								samples/Emacs Lisp/filenames/Project.ede
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
;; Object EDE
 | 
			
		||||
(ede-proj-project "Linguist"
 | 
			
		||||
  :name "Linguist"
 | 
			
		||||
  :version "4.9"
 | 
			
		||||
  :file "Project.ede"
 | 
			
		||||
  :targets (list 
 | 
			
		||||
   (ede-proj-target-elisp-autoloads "autoloads"
 | 
			
		||||
    :name "autoloads"
 | 
			
		||||
    :path "test/samples/Emacs Lisp"
 | 
			
		||||
    :autoload-file "dude.el"
 | 
			
		||||
    )
 | 
			
		||||
   (ede-proj-target-elisp "init"
 | 
			
		||||
    :name "init"
 | 
			
		||||
    :path ""
 | 
			
		||||
    :source '("ede-load.el" "wait-what.el")
 | 
			
		||||
    :compiler 'ede-emacs-preload-compiler
 | 
			
		||||
    :pre-load-packages '("sample-names")
 | 
			
		||||
    )
 | 
			
		||||
   (ede-proj-target-elisp "what"
 | 
			
		||||
    :name "the"
 | 
			
		||||
    :path ""
 | 
			
		||||
    :source '("h.el" "am-i-writing.el")
 | 
			
		||||
    :versionsource '("hell.el")
 | 
			
		||||
    :compiler 'ede-emacs-preload-compiler
 | 
			
		||||
    :aux-packages '("what" "the" "hell-files" "am-i-writing")
 | 
			
		||||
    )
 | 
			
		||||
   )
 | 
			
		||||
  :web-site-url "https://github.com/github/linguist"
 | 
			
		||||
  :web-site-directory "../"
 | 
			
		||||
  :web-site-file "CONTRIBUTING.md"
 | 
			
		||||
  :ftp-upload-site "/ftp@git.hub.com:/madeup"
 | 
			
		||||
  :configuration-variables 'nil
 | 
			
		||||
  :metasubproject 't
 | 
			
		||||
  )
 | 
			
		||||
							
								
								
									
										70
									
								
								samples/Emacs Lisp/filenames/_emacs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								samples/Emacs Lisp/filenames/_emacs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
			
		||||
;; UTF-8 support
 | 
			
		||||
;; (set-language-environment "UTF-8")
 | 
			
		||||
(setenv "LANG" "en_AU.UTF-8")
 | 
			
		||||
(setenv "LC_ALL" "en_AU.UTF-8")
 | 
			
		||||
(setq default-tab-width 4)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
;;; Function to load all ".el" files in ~/.emacs.d/config
 | 
			
		||||
(defun load-directory (directory)
 | 
			
		||||
  "Recursively load all Emacs Lisp files in a directory."
 | 
			
		||||
  (dolist (element (directory-files-and-attributes directory nil nil nil))
 | 
			
		||||
    (let* ((path (car element))
 | 
			
		||||
           (fullpath (concat directory "/" path))
 | 
			
		||||
           (isdir (car (cdr element)))
 | 
			
		||||
           (ignore-dir (or (string= path ".") (string= path ".."))))
 | 
			
		||||
      (cond
 | 
			
		||||
       ((and (eq isdir t) (not ignore-dir))
 | 
			
		||||
        (load-directory fullpath))
 | 
			
		||||
       ((and (eq isdir nil) (string= (substring path -3) ".el"))
 | 
			
		||||
        (load (file-name-sans-extension fullpath)))))))
 | 
			
		||||
 | 
			
		||||
;; Tell Emacs we'd like to use Hunspell for spell-checking
 | 
			
		||||
(setq ispell-program-name (executable-find "hunspell"))
 | 
			
		||||
 | 
			
		||||
;; Load Homebrew-installed packages
 | 
			
		||||
(let ((default-directory "/usr/local/share/emacs/site-lisp/"))
 | 
			
		||||
  (normal-top-level-add-subdirs-to-load-path))
 | 
			
		||||
(load "aggressive-indent")
 | 
			
		||||
(add-hook 'emacs-lisp-mode-hook #'aggressive-indent-mode)
 | 
			
		||||
(autoload 'rust-mode "rust-mode" nil t)
 | 
			
		||||
(add-to-list 'auto-mode-alist '("\\.rs\\'" . rust-mode))
 | 
			
		||||
 | 
			
		||||
;; Load Git-related syntax highlighting
 | 
			
		||||
(add-to-list 'load-path "~/.emacs.d/lisp/")
 | 
			
		||||
(load "git-modes")
 | 
			
		||||
(load "git-commit")
 | 
			
		||||
 | 
			
		||||
;; Keybindings
 | 
			
		||||
(global-set-key (kbd "C-u") (lambda ()
 | 
			
		||||
                             (interactive)
 | 
			
		||||
                             (kill-line 0)))
 | 
			
		||||
 | 
			
		||||
;; Show cursor's current column number
 | 
			
		||||
(setq column-number-mode t)
 | 
			
		||||
 | 
			
		||||
;; Disable autosave
 | 
			
		||||
(setq auto-save-default nil)
 | 
			
		||||
 | 
			
		||||
;; Use a single directory for storing backup files
 | 
			
		||||
(setq backup-directory-alist `(("." . "~/.emacs.d/auto-save-list")))
 | 
			
		||||
(setq backup-by-copying t)
 | 
			
		||||
(setq delete-old-versions t
 | 
			
		||||
      kept-new-versions 6
 | 
			
		||||
      kept-old-versions 2
 | 
			
		||||
      version-control t)
 | 
			
		||||
 | 
			
		||||
(custom-set-variables
 | 
			
		||||
 ;; custom-set-variables was added by Custom.
 | 
			
		||||
 ;; If you edit it by hand, you could mess it up, so be careful.
 | 
			
		||||
 ;; Your init file should contain only one such instance.
 | 
			
		||||
 ;; If there is more than one, they won't work right.
 | 
			
		||||
 '(blink-cursor-mode nil)
 | 
			
		||||
 '(column-number-mode t)
 | 
			
		||||
 '(show-paren-mode t))
 | 
			
		||||
(custom-set-faces
 | 
			
		||||
 ;; custom-set-faces was added by Custom.
 | 
			
		||||
 ;; If you edit it by hand, you could mess it up, so be careful.
 | 
			
		||||
 ;; Your init file should contain only one such instance.
 | 
			
		||||
 ;; If there is more than one, they won't work right.
 | 
			
		||||
 )
 | 
			
		||||
							
								
								
									
										8
									
								
								samples/Emacs Lisp/filenames/abbrev_defs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								samples/Emacs Lisp/filenames/abbrev_defs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
(define-abbrev-table 'fundamental-mode-abbrev-table '(
 | 
			
		||||
	("cat" "Concatenate" nil 0)
 | 
			
		||||
	("WTF" "World Trade Federation " nil 0)
 | 
			
		||||
	("rtbtm" "Read that back to me" nil 0)))
 | 
			
		||||
 | 
			
		||||
(define-abbrev-table 'shell-script-mode-abbrev-table '(
 | 
			
		||||
	("brake", "bundle rake exec" nil 0)
 | 
			
		||||
	("pls", "warning: setting Encoding.default_external")))
 | 
			
		||||
							
								
								
									
										6
									
								
								samples/FORTRAN/bug-185631.f
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								samples/FORTRAN/bug-185631.f
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
! Codes/HYCOM/hycom/ATLb2.00/src_2.0.01_22_one/
 | 
			
		||||
      real onemu, twomu
 | 
			
		||||
      data onemu/0.0098/
 | 
			
		||||
      data twomu/1./
 | 
			
		||||
      data threemu/0.e9/
 | 
			
		||||
      end
 | 
			
		||||
							
								
								
									
										3
									
								
								test/fixtures/Data/Modelines/iamjs.pl
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								test/fixtures/Data/Modelines/iamjs.pl
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
# vim: noexpandtab: ft=javascript
 | 
			
		||||
 | 
			
		||||
"It's JavaScript, baby";
 | 
			
		||||
							
								
								
									
										4
									
								
								test/fixtures/Data/Modelines/iamjs2.pl
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								test/fixtures/Data/Modelines/iamjs2.pl
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
# vim:noexpandtab titlestring=hi\|there\\\ ft=perl ts=4
 | 
			
		||||
# vim:noexpandtab titlestring=hi|there\\ ft=javascript ts=4
 | 
			
		||||
 | 
			
		||||
"Still JavaScript, bruh";
 | 
			
		||||
							
								
								
									
										3
									
								
								test/fixtures/Data/Modelines/ruby10
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								test/fixtures/Data/Modelines/ruby10
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
 ex: noexpandtab: ft=ruby
 | 
			
		||||
 | 
			
		||||
# Still Ruby
 | 
			
		||||
							
								
								
									
										3
									
								
								test/fixtures/Data/Modelines/ruby11
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								test/fixtures/Data/Modelines/ruby11
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
# vim600: ft=ruby
 | 
			
		||||
 | 
			
		||||
# Targets Vim 6.0 or later
 | 
			
		||||
							
								
								
									
										3
									
								
								test/fixtures/Data/Modelines/ruby12
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								test/fixtures/Data/Modelines/ruby12
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
vim<520: ft=ruby
 | 
			
		||||
 | 
			
		||||
# Targets Vim 5.20 and earlier
 | 
			
		||||
							
								
								
									
										3
									
								
								test/fixtures/Data/Modelines/seeplusplusEmacs10
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								test/fixtures/Data/Modelines/seeplusplusEmacs10
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
// -*- foo-bar mode: c++ -*-
 | 
			
		||||
 | 
			
		||||
"Malformed modeline, but still understood by Emacs to be C++."
 | 
			
		||||
							
								
								
									
										1
									
								
								test/fixtures/Data/Modelines/seeplusplusEmacs11
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								test/fixtures/Data/Modelines/seeplusplusEmacs11
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
/* -*- mode: c++ -------*- */
 | 
			
		||||
							
								
								
									
										1
									
								
								test/fixtures/Data/Modelines/seeplusplusEmacs12
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								test/fixtures/Data/Modelines/seeplusplusEmacs12
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
-*--------- foo:bar mode: c++ -*-
 | 
			
		||||
@@ -35,3 +35,11 @@ def sample_blob_memory(name)
 | 
			
		||||
  content = File.read(filepath)
 | 
			
		||||
  Linguist::Blob.new(name, content)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
def silence_warnings
 | 
			
		||||
  original_verbosity = $VERBOSE
 | 
			
		||||
  $VERBOSE = nil
 | 
			
		||||
  yield
 | 
			
		||||
ensure
 | 
			
		||||
  $VERBOSE = original_verbosity
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
@@ -4,15 +4,19 @@ class TestBlob < Minitest::Test
 | 
			
		||||
  include Linguist
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    silence_warnings do
 | 
			
		||||
      # git blobs are normally loaded as ASCII-8BIT since they may contain data
 | 
			
		||||
      # with arbitrary encoding not known ahead of time
 | 
			
		||||
      @original_external = Encoding.default_external
 | 
			
		||||
      Encoding.default_external = Encoding.find("ASCII-8BIT")
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def teardown
 | 
			
		||||
    silence_warnings do
 | 
			
		||||
      Encoding.default_external = @original_external
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def script_blob(name)
 | 
			
		||||
    blob = sample_blob_memory(name)
 | 
			
		||||
 
 | 
			
		||||
@@ -3,16 +3,28 @@ require_relative "./helper"
 | 
			
		||||
class TestFileBlob < Minitest::Test
 | 
			
		||||
  include Linguist
 | 
			
		||||
 | 
			
		||||
  def silence_warnings
 | 
			
		||||
    original_verbosity = $VERBOSE
 | 
			
		||||
    $VERBOSE = nil
 | 
			
		||||
    yield
 | 
			
		||||
  ensure
 | 
			
		||||
    $VERBOSE = original_verbosity
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    silence_warnings do
 | 
			
		||||
      # git blobs are normally loaded as ASCII-8BIT since they may contain data
 | 
			
		||||
      # with arbitrary encoding not known ahead of time
 | 
			
		||||
      @original_external = Encoding.default_external
 | 
			
		||||
      Encoding.default_external = Encoding.find("ASCII-8BIT")
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def teardown
 | 
			
		||||
    silence_warnings do
 | 
			
		||||
      Encoding.default_external = @original_external
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def script_blob(name)
 | 
			
		||||
    blob = sample_blob(name)
 | 
			
		||||
@@ -305,7 +317,7 @@ class TestFileBlob < Minitest::Test
 | 
			
		||||
    assert sample_blob("some/vendored/path/Chart.js").vendored?
 | 
			
		||||
    assert !sample_blob("some/vendored/path/chart.js").vendored?
 | 
			
		||||
 | 
			
		||||
    # Codemirror deps
 | 
			
		||||
    # CodeMirror deps
 | 
			
		||||
    assert sample_blob("codemirror/mode/blah.js").vendored?
 | 
			
		||||
    assert sample_blob("codemirror/5.0/mode/blah.js").vendored?
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -5,8 +5,11 @@ class TestGrammars < Minitest::Test
 | 
			
		||||
 | 
			
		||||
  # List of projects that are allowed without licenses
 | 
			
		||||
  PROJECT_WHITELIST = [
 | 
			
		||||
    # Dual MIT and GPL license
 | 
			
		||||
    "vendor/grammars/factor",
 | 
			
		||||
    "vendor/grammars/go-tmbundle",
 | 
			
		||||
    "vendor/grammars/jflex.tmbundle",
 | 
			
		||||
    "vendor/grammars/language-csharp",
 | 
			
		||||
    "vendor/grammars/language-viml",
 | 
			
		||||
    "vendor/grammars/sublimeassembly"
 | 
			
		||||
  ].freeze
 | 
			
		||||
 | 
			
		||||
@@ -123,7 +126,7 @@ class TestGrammars < Minitest::Test
 | 
			
		||||
  private
 | 
			
		||||
 | 
			
		||||
  def submodule_paths
 | 
			
		||||
    @submodule_paths ||= `git config --list --file "#{File.join(ROOT, ".gitmodules")}"`.lines.grep(/\.path=/).map { |line| line.chomp.split("=", 2).last }
 | 
			
		||||
    @submodule_paths ||= `git config --list --file "#{File.join(ROOT, ".gitmodules")}"`.lines.grep(/\.path=/).map { |line| line.chomp.split("=", 2).last }.reject { |path| path =~ /CodeMirror/ }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  # Returns a hash of submodules in the form of submodule_path => license
 | 
			
		||||
@@ -151,7 +154,7 @@ class TestGrammars < Minitest::Test
 | 
			
		||||
 | 
			
		||||
    # Neither Licensee nor our own regex was able to detect the license, let's check the readme
 | 
			
		||||
    files = Dir[File.join(ROOT, submodule, "*")]
 | 
			
		||||
    if readme = files.find { |path| File.basename(path) =~ /\Areadme\b/i }
 | 
			
		||||
    if readme = files.find { |file| File.basename(file) =~ /\Areadme\b/i }
 | 
			
		||||
      classify_license(readme)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 
 | 
			
		||||
@@ -122,9 +122,12 @@ class TestHeuristcs < Minitest::Test
 | 
			
		||||
    })
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  # Candidate languages = ["Assembly", "C++", "HTML", "PAWN", "PHP",
 | 
			
		||||
  #                        "POV-Ray SDL", "Pascal", "SQL", "SourcePawn"]
 | 
			
		||||
  def test_inc_by_heuristics
 | 
			
		||||
    assert_heuristics({
 | 
			
		||||
      "PHP" => all_fixtures("PHP", "*.inc")
 | 
			
		||||
      "PHP" => all_fixtures("PHP", "*.inc"),
 | 
			
		||||
      "POV-Ray SDL" => all_fixtures("POV-Ray SDL", "*.inc")
 | 
			
		||||
    })
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -345,9 +345,25 @@ class TestLanguage < Minitest::Test
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_ace_modes
 | 
			
		||||
    silence_warnings do
 | 
			
		||||
      assert Language.ace_modes.include?(Language['Ruby'])
 | 
			
		||||
      assert Language.ace_modes.include?(Language['FORTRAN'])
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_codemirror_mode
 | 
			
		||||
    assert_equal 'ruby', Language['Ruby'].codemirror_mode
 | 
			
		||||
    assert_equal 'javascript', Language['JavaScript'].codemirror_mode
 | 
			
		||||
    assert_equal 'clike', Language['C'].codemirror_mode
 | 
			
		||||
    assert_equal 'clike', Language['C++'].codemirror_mode
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_codemirror_mime_type
 | 
			
		||||
    assert_equal 'text/x-ruby', Language['Ruby'].codemirror_mime_type
 | 
			
		||||
    assert_equal 'text/javascript', Language['JavaScript'].codemirror_mime_type
 | 
			
		||||
    assert_equal 'text/x-csrc', Language['C'].codemirror_mime_type
 | 
			
		||||
    assert_equal 'text/x-c++src', Language['C++'].codemirror_mime_type
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_wrap
 | 
			
		||||
    assert_equal false, Language['C'].wrap
 | 
			
		||||
@@ -436,6 +452,40 @@ class TestLanguage < Minitest::Test
 | 
			
		||||
    assert missing.empty?, message
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_codemirror_modes_present
 | 
			
		||||
    Language.all.each do |language|
 | 
			
		||||
      if language.codemirror_mode || language.codemirror_mime_type
 | 
			
		||||
        assert language.codemirror_mode, "#{language.inspect} missing CodeMirror mode"
 | 
			
		||||
        assert language.codemirror_mime_type, "#{language.inspect} missing CodeMirror MIME mode"
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_valid_codemirror_mode
 | 
			
		||||
    Language.all.each do |language|
 | 
			
		||||
      if mode = language.codemirror_mode
 | 
			
		||||
        assert File.exist?(File.expand_path("../../vendor/CodeMirror/mode/#{mode}", __FILE__)), "#{mode} isn't a valid CodeMirror mode"
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_codemirror_mode_and_mime_defined_by_meta_mapping
 | 
			
		||||
    meta = File.read(File.expand_path("../../vendor/CodeMirror/mode/meta.js", __FILE__))
 | 
			
		||||
    Language.all.each do |language|
 | 
			
		||||
      next unless language.codemirror_mode && language.codemirror_mime_type
 | 
			
		||||
      assert meta.match(/^.+#{Regexp.escape(language.codemirror_mime_type)}.+#{Regexp.escape(language.codemirror_mode)}.+$/), "#{language.inspect}: #{language.codemirror_mime_type} not defined under #{language.codemirror_mode}"
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_codemirror_mime_declared_in_mode_file
 | 
			
		||||
    Language.all.each do |language|
 | 
			
		||||
      next unless language.codemirror_mode && language.codemirror_mime_type
 | 
			
		||||
      filename = File.expand_path("../../vendor/CodeMirror/mode/#{language.codemirror_mode}/#{language.codemirror_mode}.js", __FILE__)
 | 
			
		||||
      assert File.exist?(filename), "#{filename} does not exist"
 | 
			
		||||
      assert File.read(filename).match(language.codemirror_mime_type), "#{language.inspect}: #{language.codemirror_mime_type} not defined in #{filename}"
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_all_popular_languages_exist
 | 
			
		||||
    popular = YAML.load(File.read(File.expand_path("../../lib/linguist/popular.yml", __FILE__)))
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,9 @@ class TestModelines < Minitest::Test
 | 
			
		||||
    assert_modeline Language["Ruby"], fixture_blob("Data/Modelines/ruby7")
 | 
			
		||||
    assert_modeline Language["Ruby"], fixture_blob("Data/Modelines/ruby8")
 | 
			
		||||
    assert_modeline Language["Ruby"], fixture_blob("Data/Modelines/ruby9")
 | 
			
		||||
    assert_modeline Language["Ruby"], fixture_blob("Data/Modelines/ruby10")
 | 
			
		||||
    assert_modeline Language["Ruby"], fixture_blob("Data/Modelines/ruby11")
 | 
			
		||||
    assert_modeline Language["Ruby"], fixture_blob("Data/Modelines/ruby12")
 | 
			
		||||
    assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplus")
 | 
			
		||||
    assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs1")
 | 
			
		||||
    assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs2")
 | 
			
		||||
@@ -27,9 +30,14 @@ class TestModelines < Minitest::Test
 | 
			
		||||
    assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs7")
 | 
			
		||||
    assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs8")
 | 
			
		||||
    assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs9")
 | 
			
		||||
    assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs10")
 | 
			
		||||
    assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs11")
 | 
			
		||||
    assert_modeline Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs12")
 | 
			
		||||
    assert_modeline Language["Text"], fixture_blob("Data/Modelines/fundamentalEmacs.c")
 | 
			
		||||
    assert_modeline Language["Prolog"], fixture_blob("Data/Modelines/not_perl.pl")
 | 
			
		||||
    assert_modeline Language["Smalltalk"], fixture_blob("Data/Modelines/example_smalltalk.md")
 | 
			
		||||
    assert_modeline Language["JavaScript"], fixture_blob("Data/Modelines/iamjs.pl")
 | 
			
		||||
    assert_modeline Language["JavaScript"], fixture_blob("Data/Modelines/iamjs2.pl")
 | 
			
		||||
    assert_modeline Language["PHP"], fixture_blob("Data/Modelines/iamphp.inc")
 | 
			
		||||
    assert_modeline nil, sample_blob("C/main.c")
 | 
			
		||||
  end
 | 
			
		||||
@@ -48,9 +56,14 @@ class TestModelines < Minitest::Test
 | 
			
		||||
    assert_equal Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs7").language
 | 
			
		||||
    assert_equal Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs8").language
 | 
			
		||||
    assert_equal Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs9").language
 | 
			
		||||
    assert_equal Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs10").language
 | 
			
		||||
    assert_equal Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs11").language
 | 
			
		||||
    assert_equal Language["C++"], fixture_blob("Data/Modelines/seeplusplusEmacs12").language
 | 
			
		||||
    assert_equal Language["Text"], fixture_blob("Data/Modelines/fundamentalEmacs.c").language
 | 
			
		||||
    assert_equal Language["Prolog"], fixture_blob("Data/Modelines/not_perl.pl").language
 | 
			
		||||
    assert_equal Language["Smalltalk"], fixture_blob("Data/Modelines/example_smalltalk.md").language
 | 
			
		||||
    assert_equal Language["JavaScript"], fixture_blob("Data/Modelines/iamjs.pl").language
 | 
			
		||||
    assert_equal Language["JavaScript"], fixture_blob("Data/Modelines/iamjs2.pl").language
 | 
			
		||||
    assert_equal Language["PHP"], fixture_blob("Data/Modelines/iamphp.inc").language
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								vendor/CodeMirror
									
									
									
									
										vendored
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								vendor/CodeMirror
									
									
									
									
										vendored
									
									
										Submodule
									
								
							 Submodule vendor/CodeMirror added at 562e8eff5b
									
								
							
							
								
								
									
										2
									
								
								vendor/grammars/Docker.tmbundle
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								vendor/grammars/Docker.tmbundle
									
									
									
									
										vendored
									
									
								
							 Submodule vendor/grammars/Docker.tmbundle updated: 2d7d56af17...c6230cb62c
									
								
							
							
								
								
									
										1
									
								
								vendor/grammars/Sublime-VimL
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								vendor/grammars/Sublime-VimL
									
									
									
									
										vendored
									
									
								
							 Submodule vendor/grammars/Sublime-VimL deleted from b453aff6f7
									
								
							
							
								
								
									
										2
									
								
								vendor/grammars/atom-language-clean
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								vendor/grammars/atom-language-clean
									
									
									
									
										vendored
									
									
								
							 Submodule vendor/grammars/atom-language-clean updated: a9b837801d...7dafe70ddd
									
								
							
							
								
								
									
										2
									
								
								vendor/grammars/cython
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								vendor/grammars/cython
									
									
									
									
										vendored
									
									
								
							 Submodule vendor/grammars/cython updated: e9f4d3a1e4...a816e2c05d
									
								
							
							
								
								
									
										2
									
								
								vendor/grammars/d.tmbundle
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								vendor/grammars/d.tmbundle
									
									
									
									
										vendored
									
									
								
							 Submodule vendor/grammars/d.tmbundle updated: 080e5343d8...039c92d9f2
									
								
							
							
								
								
									
										2
									
								
								vendor/grammars/elixir-tmbundle
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								vendor/grammars/elixir-tmbundle
									
									
									
									
										vendored
									
									
								
							 Submodule vendor/grammars/elixir-tmbundle updated: 6d0417e8eb...d632e68d09
									
								
							
							
								
								
									
										2
									
								
								vendor/grammars/language-asn1
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								vendor/grammars/language-asn1
									
									
									
									
										vendored
									
									
								
							 Submodule vendor/grammars/language-asn1 updated: d45daeb849...bc3811c770
									
								
							
							
								
								
									
										2
									
								
								vendor/grammars/language-blade
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								vendor/grammars/language-blade
									
									
									
									
										vendored
									
									
								
							 Submodule vendor/grammars/language-blade updated: fcbe2c2022...a5cdd44eb0
									
								
							
							
								
								
									
										2
									
								
								vendor/grammars/language-coffee-script
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								vendor/grammars/language-coffee-script
									
									
									
									
										vendored
									
									
								
							 Submodule vendor/grammars/language-coffee-script updated: 8f001efe73...b413773574
									
								
							
							
								
								
									
										2
									
								
								vendor/grammars/language-csharp
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								vendor/grammars/language-csharp
									
									
									
									
										vendored
									
									
								
							 Submodule vendor/grammars/language-csharp updated: c97c4bf74d...db4468545a
									
								
							
							
								
								
									
										2
									
								
								vendor/grammars/language-emacs-lisp
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								vendor/grammars/language-emacs-lisp
									
									
									
									
										vendored
									
									
								
							 Submodule vendor/grammars/language-emacs-lisp updated: 76ec86a3eb...77da742484
									
								
							
							
								
								
									
										2
									
								
								vendor/grammars/language-haskell
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								vendor/grammars/language-haskell
									
									
									
									
										vendored
									
									
								
							 Submodule vendor/grammars/language-haskell updated: 296a7e94df...a53aca3856
									
								
							
							
								
								
									
										2
									
								
								vendor/grammars/language-javascript
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								vendor/grammars/language-javascript
									
									
									
									
										vendored
									
									
								
							 Submodule vendor/grammars/language-javascript updated: b3d2bb649a...101a00adb2
									
								
							
							
								
								
									
										2
									
								
								vendor/grammars/language-less
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								vendor/grammars/language-less
									
									
									
									
										vendored
									
									
								
							 Submodule vendor/grammars/language-less updated: d4f5db5fba...f34bb335c7
									
								
							
							
								
								
									
										2
									
								
								vendor/grammars/language-renpy
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								vendor/grammars/language-renpy
									
									
									
									
										vendored
									
									
								
							 Submodule vendor/grammars/language-renpy updated: a3b9bbed66...82a4b91306
									
								
							
							
								
								
									
										2
									
								
								vendor/grammars/language-roff
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								vendor/grammars/language-roff
									
									
									
									
										vendored
									
									
								
							 Submodule vendor/grammars/language-roff updated: f37fb6b7c4...743e1621c6
									
								
							
							
								
								
									
										1
									
								
								vendor/grammars/language-viml
									
									
									
									
										vendored
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								vendor/grammars/language-viml
									
									
									
									
										vendored
									
									
										Submodule
									
								
							 Submodule vendor/grammars/language-viml added at 5030fb8b02
									
								
							
							
								
								
									
										2
									
								
								vendor/grammars/make.tmbundle
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								vendor/grammars/make.tmbundle
									
									
									
									
										vendored
									
									
								
							 Submodule vendor/grammars/make.tmbundle updated: 1a1827da81...01069d2b38
									
								
							
							
								
								
									
										2
									
								
								vendor/grammars/mediawiki.tmbundle
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								vendor/grammars/mediawiki.tmbundle
									
									
									
									
										vendored
									
									
								
							 Submodule vendor/grammars/mediawiki.tmbundle updated: f8dead507a...bdd6eeb5ee
									
								
							
							
								
								
									
										2
									
								
								vendor/grammars/sublime-rust
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								vendor/grammars/sublime-rust
									
									
									
									
										vendored
									
									
								
							 Submodule vendor/grammars/sublime-rust updated: d3c63dec57...bb8d73c7a2
									
								
							
							
								
								
									
										2
									
								
								vendor/grammars/vue-syntax-highlight
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								vendor/grammars/vue-syntax-highlight
									
									
									
									
										vendored
									
									
								
							 Submodule vendor/grammars/vue-syntax-highlight updated: 909afa5384...f95b61a40d
									
								
							@@ -1,11 +1,12 @@
 | 
			
		||||
---
 | 
			
		||||
type: grammar
 | 
			
		||||
name: Sublime-VimL
 | 
			
		||||
name: language-viml
 | 
			
		||||
license: mit
 | 
			
		||||
---
 | 
			
		||||
The MIT License (MIT)
 | 
			
		||||
 | 
			
		||||
Copyright (c) 2014 Max Vasiliev, Salvatore Gentile
 | 
			
		||||
Copyright (c) 2014-2016 Evan Hahn
 | 
			
		||||
Copyright (c) 2016 John Gardner
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
@@ -14,13 +15,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
			
		||||
copies of the Software, and to permit persons to whom the Software is
 | 
			
		||||
furnished to do so, subject to the following conditions:
 | 
			
		||||
 | 
			
		||||
The above copyright notice and this permission notice shall be included in all
 | 
			
		||||
copies or substantial portions of the Software.
 | 
			
		||||
The above copyright notice and this permission notice shall be included in
 | 
			
		||||
all copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
			
		||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
			
		||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
			
		||||
SOFTWARE.
 | 
			
		||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
			
		||||
THE SOFTWARE.
 | 
			
		||||
		Reference in New Issue
	
	Block a user