Still futszin' with Tree Sitter
This commit is contained in:
		
							parent
							
								
									6295e56fd8
								
							
						
					
					
						commit
						eaa547e445
					
				
					 1 changed files with 40 additions and 34 deletions
				
			
		| 
						 | 
				
			
			@ -212,33 +212,35 @@ Next, using the =tree-sitter= command line tool, create the [[/Users/howard.abra
 | 
			
		|||
 | 
			
		||||
Normally, you would need to  add all the projects to directory clones in =~/src=, e.g.
 | 
			
		||||
#+begin_src sh :dir ~/src
 | 
			
		||||
  git clone https://github.com/tree-sitter/tree-sitter-css ~/src/tree-sitter-css
 | 
			
		||||
 | 
			
		||||
  git clone https://github.com/tree-sitter/tree-sitter-json ~/src/tree-sitter-json
 | 
			
		||||
  cd ~/src/tree-sitter-json && make install
 | 
			
		||||
 | 
			
		||||
  git clone https://github.com/tree-sitter/tree-sitter-python ~/src/tree-sitter-python
 | 
			
		||||
  cd ~/src/tree-sitter-python && npm install
 | 
			
		||||
 | 
			
		||||
  git clone https://github.com/tree-sitter/tree-sitter-bash ~/src/tree-sitter-bash
 | 
			
		||||
  cd ~/src/tree-sitter-bash && npm install
 | 
			
		||||
 | 
			
		||||
  git clone https://github.com/tree-sitter/tree-sitter-ruby ~/src/tree-sitter-ruby
 | 
			
		||||
  cd ~/src/tree-sitter-ruby && make install
 | 
			
		||||
 | 
			
		||||
  git clone https://github.com/camdencheek/tree-sitter-dockerfile ~/src/tree-sitter-dockerfile
 | 
			
		||||
  cd ~/src/tree-sitter-dockerfile && npm install
 | 
			
		||||
 | 
			
		||||
  git clone https://github.com/ikatyang/tree-sitter-yaml ~/src/tree-sitter-yaml
 | 
			
		||||
  cd ~/src/tree-sitter-yaml && npm install tree-sitter-yaml tree-sitter
 | 
			
		||||
  # Sigh ... why can they fail so often?
 | 
			
		||||
  while read REPO
 | 
			
		||||
  do
 | 
			
		||||
    LOCATION=~/src/$(basename ${REPO})
 | 
			
		||||
    if [ ! -d ${LOCATION} ]
 | 
			
		||||
    then
 | 
			
		||||
      git clone ${REPO} ${LOCATION}
 | 
			
		||||
    fi
 | 
			
		||||
    cd ${LOCATION}
 | 
			
		||||
    git pull origin
 | 
			
		||||
    npm install
 | 
			
		||||
  done <<EOL
 | 
			
		||||
  https://github.com/tree-sitter/tree-sitter-css
 | 
			
		||||
  https://github.com/tree-sitter/tree-sitter-json
 | 
			
		||||
  https://github.com/tree-sitter/tree-sitter-python
 | 
			
		||||
  https://github.com/tree-sitter/tree-sitter-bash
 | 
			
		||||
  https://github.com/tree-sitter/tree-sitter-ruby
 | 
			
		||||
  https://github.com/camdencheek/tree-sitter-dockerfile
 | 
			
		||||
  https://github.com/alemuller/tree-sitter-make
 | 
			
		||||
  https://github.com/ikatyang/tree-sitter-yaml
 | 
			
		||||
  https://github.com/Wilfred/tree-sitter-elisp
 | 
			
		||||
  EOL
 | 
			
		||||
#+end_src
 | 
			
		||||
And then compile them:
 | 
			
		||||
 | 
			
		||||
The =npm install= /usually/ works, but I may work on some sort of various process, for instance:
 | 
			
		||||
#+begin_src sh
 | 
			
		||||
  for TSS in ~/src/tree-sitter-*
 | 
			
		||||
  do
 | 
			
		||||
    cd $TSS
 | 
			
		||||
  cargo build ; npm install   # Various build processes!?
 | 
			
		||||
    npm install || cargo build || make install   # Various build processes!?
 | 
			
		||||
  done
 | 
			
		||||
#+end_src
 | 
			
		||||
At this point, we can now parse stuff using: =tree-sitter parse <source-code-file>=
 | 
			
		||||
| 
						 | 
				
			
			@ -255,8 +257,11 @@ However, Emacs already has the ability to download and install grammars, so foll
 | 
			
		|||
        (sit-for 10)
 | 
			
		||||
        (dolist (grammar
 | 
			
		||||
                 '((bash          "https://github.com/tree-sitter/tree-sitter-bash")
 | 
			
		||||
                   (make          "https://github.com/alemuller/tree-sitter-make")
 | 
			
		||||
                   (css           "https://github.com/tree-sitter/tree-sitter-css")
 | 
			
		||||
                   (json          "https://github.com/tree-sitter/tree-sitter-json")
 | 
			
		||||
                   (html          "https://github.com/tree-sitter/tree-sitter-html")
 | 
			
		||||
                   ;; (javascript "https://github.com/tree-sitter/tree-sitter-javascript" "master" "src")
 | 
			
		||||
                   (python        "https://github.com/tree-sitter/tree-sitter-python")
 | 
			
		||||
                   (ruby          "https://github.com/tree-sitter/tree-sitter-ruby")
 | 
			
		||||
                   (yaml          "https://github.com/ikatyang/tree-sitter-yaml")))
 | 
			
		||||
| 
						 | 
				
			
			@ -270,6 +275,7 @@ However, Emacs already has the ability to download and install grammars, so foll
 | 
			
		|||
      ;; this does *not* extend to hooks! Make sure you migrate them also
 | 
			
		||||
      (dolist (mapping '((css-mode    . css-ts-mode)
 | 
			
		||||
                         (json-mode   . json-ts-mode)
 | 
			
		||||
                         ;; (makefile-mode . makefile-ts-mode)
 | 
			
		||||
                         (python-mode . python-ts-mode)
 | 
			
		||||
                         (ruby-mode   . ruby-ts-mode)
 | 
			
		||||
                         (sh-mode     . bash-ts-mode)
 | 
			
		||||
| 
						 | 
				
			
			@ -868,8 +874,8 @@ Doing a lot of [[https://github.com/yoshiki/yaml-mode][YAML work]], but this pro
 | 
			
		|||
  (if (string-search "TREE_SITTER" system-configuration-features)
 | 
			
		||||
      (progn
 | 
			
		||||
        (use-package yaml-ts-mode
 | 
			
		||||
          :mode (rx ".y" (optional "a") "ml" string-end)
 | 
			
		||||
                (rx (optional ".") "yamllint")
 | 
			
		||||
          :mode ((rx ".y" (optional "a") "ml" string-end)
 | 
			
		||||
                 (rx (optional ".") "yamllint"))
 | 
			
		||||
          :hook (yaml-ts-mode . display-line-numbers-mode))
 | 
			
		||||
 | 
			
		||||
        (use-package yaml-pro
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue