Added an empty Clojure/ClojureScript project, about to add a Lisp one.
This commit is contained in:
		
							parent
							
								
									d6eaa70a14
								
							
						
					
					
						commit
						78c15dbed6
					
				|  | @ -5,3 +5,9 @@ A working Lisp editor | |||
| 
 | ||||
| There is nothing here yet. You cannot use it. It is just a very rough plan. | ||||
| 
 | ||||
| ## Clojure implementation | ||||
| 
 | ||||
| There is the beginnings of a Clojure implementation. This is probably just proof-of-concept rapid prototyping. Clojure makes it extremely hard to rebind symbols, so in-core editing of Clojure is going to be pretty hard to make work. It's highly likely that working LEdit will be Common Lisp only. | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										42
									
								
								dev/user.clj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								dev/user.clj
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,42 @@ | |||
| (ns user | ||||
|   (:require | ||||
|    [figwheel-sidecar.repl-api :as f])) | ||||
| 
 | ||||
| ;; user is a namespace that the Clojure runtime looks for and | ||||
| ;; loads if its available | ||||
| 
 | ||||
| ;; You can place helper functions in here. This is great for starting | ||||
| ;; and stopping your webserver and other development services | ||||
| 
 | ||||
| ;; The definitions in here will be available if you run "lein repl" or launch a | ||||
| ;; Clojure repl some other way | ||||
| 
 | ||||
| ;; You have to ensure that the libraries you :require are listed in your dependencies | ||||
| 
 | ||||
| ;; Once you start down this path | ||||
| ;; you will probably want to look at | ||||
| ;; tools.namespace https://github.com/clojure/tools.namespace | ||||
| ;; and Component https://github.com/stuartsierra/component | ||||
| 
 | ||||
| 
 | ||||
| (defn fig-start | ||||
|   "This starts the figwheel server and watch based auto-compiler." | ||||
|   [] | ||||
|   ;; this call will only work as long as your :cljsbuild and | ||||
|   ;; :figwheel configurations are at the top level of your project.clj | ||||
|   ;; and are not spread across different lein profiles | ||||
| 
 | ||||
|   ;; otherwise you can pass a configuration into start-figwheel! manually | ||||
|   (f/start-figwheel!)) | ||||
| 
 | ||||
| (defn fig-stop | ||||
|   "Stop the figwheel server and watch based auto-compiler." | ||||
|   [] | ||||
|   (f/stop-figwheel!)) | ||||
| 
 | ||||
| ;; if you are in an nREPL environment you will need to make sure you | ||||
| ;; have setup piggieback for this to work | ||||
| (defn cljs-repl | ||||
|   "Launch a ClojureScript REPL that is connected to your build and host environment." | ||||
|   [] | ||||
|   (f/cljs-repl)) | ||||
							
								
								
									
										98
									
								
								project.clj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								project.clj
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,98 @@ | |||
| (defproject ledit "0.1.0-SNAPSHOT" | ||||
|     :deploy-repositories [["releases" :clojars] | ||||
|                         ["snapshots" :clojars]] | ||||
| 
 | ||||
|   :description "A version of LEdit in Clojure - probably just a rapid prototype." | ||||
|   :url "http://example.com/FIXME" | ||||
|   :license {:name "GNU General Public License, version 2.0 or (at your option) any later version" | ||||
|             :url "https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html"} | ||||
| 
 | ||||
|   :min-lein-version "2.9.1" | ||||
| 
 | ||||
|   :dependencies [[org.clojure/clojure "1.8.0"] ;; not 1.10 because LightTable doesn't yet support it | ||||
|                  [org.clojure/clojurescript "1.10.520"] | ||||
|                  [org.clojure/core.async  "0.4.500"]] | ||||
| 
 | ||||
|   :plugins [[lein-figwheel "0.5.19"] | ||||
|             [lein-cljsbuild "1.1.7" :exclusions [[org.clojure/clojure]]]] | ||||
| 
 | ||||
|   :source-paths ["src/clj"] | ||||
| 
 | ||||
|   :cljsbuild {:builds | ||||
|               [{:id "dev" | ||||
|                 :source-paths ["src/cljs" "src/cljc" "env/dev/cljs"] | ||||
| 
 | ||||
|                 ;; The presence of a :figwheel configuration here | ||||
|                 ;; will cause figwheel to inject the figwheel client | ||||
|                 ;; into your build | ||||
|                 :figwheel {:on-jsload "ledit.core/on-js-reload" | ||||
|                            ;; :open-urls will pop open your application | ||||
|                            ;; in the default browser once Figwheel has | ||||
|                            ;; started and compiled your application. | ||||
|                            ;; Comment this out once it no longer serves you. | ||||
|                            :open-urls ["http://localhost:3449/index.html"]} | ||||
| 
 | ||||
|                 :compiler {:main ledit.core | ||||
|                            :asset-path "js/compiled/out" | ||||
|                            :output-to "resources/public/js/compiled/ledit.js" | ||||
|                            :output-dir "resources/public/js/compiled/out" | ||||
|                            :source-map-timestamp true | ||||
|                            ;; To console.log CLJS data-structures make sure you enable devtools in Chrome | ||||
|                            ;; https://github.com/binaryage/cljs-devtools | ||||
|                            :preloads [devtools.preload]}} | ||||
|                ;; This next build is a compressed minified build for | ||||
|                ;; production. You can build this with: | ||||
|                ;; lein cljsbuild once min | ||||
|                {:id "min" | ||||
|                 :source-paths ["src"] | ||||
|                 :compiler {:output-to "resources/public/js/compiled/ledit.js" | ||||
|                            :main ledit.core | ||||
|                            :optimizations :advanced | ||||
|                            :pretty-print false}}]} | ||||
| 
 | ||||
|   :figwheel {;; :http-server-root "public" ;; default and assumes "resources" | ||||
|              ;; :server-port 3449 ;; default | ||||
|              ;; :server-ip "127.0.0.1" | ||||
| 
 | ||||
|              :css-dirs ["resources/public/css"] ;; watch and update CSS | ||||
| 
 | ||||
|              ;; Start an nREPL server into the running figwheel process | ||||
|              ;; :nrepl-port 7888 | ||||
| 
 | ||||
|              ;; Server Ring Handler (optional) | ||||
|              ;; if you want to embed a ring handler into the figwheel http-kit | ||||
|              ;; server, this is for simple ring servers, if this | ||||
| 
 | ||||
|              ;; doesn't work for you just run your own server :) (see lein-ring) | ||||
| 
 | ||||
|              ;; :ring-handler hello_world.server/handler | ||||
| 
 | ||||
|              ;; To be able to open files in your editor from the heads up display | ||||
|              ;; you will need to put a script on your path. | ||||
|              ;; that script will have to take a file path and a line number | ||||
|              ;; ie. in  ~/bin/myfile-opener | ||||
|              ;; #! /bin/sh | ||||
|              ;; emacsclient -n +$2 $1 | ||||
|              ;; | ||||
|              ;; :open-file-command "myfile-opener" | ||||
| 
 | ||||
|              ;; if you are using emacsclient you can just use | ||||
|              ;; :open-file-command "emacsclient" | ||||
| 
 | ||||
|              ;; if you want to disable the REPL | ||||
|              ;; :repl false | ||||
| 
 | ||||
|              ;; to configure a different figwheel logfile path | ||||
|              ;; :server-logfile "tmp/logs/figwheel-logfile.log" | ||||
| 
 | ||||
|              ;; to pipe all the output to the repl | ||||
|              ;; :server-logfile false | ||||
|              } | ||||
| 
 | ||||
|   :profiles {:dev {:dependencies [[binaryage/devtools "0.9.10"] | ||||
|                                   [figwheel-sidecar "0.5.19"]] | ||||
|                    ;; need to add dev source path here to get user.clj loaded | ||||
|                    :source-paths ["src" "dev"] | ||||
|                    ;; need to add the compliled assets to the :clean-targets | ||||
|                    :clean-targets ^{:protect false} ["resources/public/js/compiled" | ||||
|                                                      :target-path]}}) | ||||
							
								
								
									
										2
									
								
								resources/public/css/style.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								resources/public/css/style.css
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| /* some style */ | ||||
| 
 | ||||
							
								
								
									
										16
									
								
								resources/public/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								resources/public/index.html
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | |||
| <!DOCTYPE html> | ||||
| <html> | ||||
|   <head> | ||||
|     <meta charset="UTF-8"> | ||||
|     <meta name="viewport" content="width=device-width, initial-scale=1"> | ||||
|     <link href="css/style.css" rel="stylesheet" type="text/css"> | ||||
|     <link rel="icon" href="https://clojurescript.org/images/cljs-logo-icon-32.png"> | ||||
|   </head> | ||||
|   <body> | ||||
|     <div id="app"> | ||||
|       <h2>Figwheel template</h2> | ||||
|       <p>Checkout your developer console.</p> | ||||
|     </div> | ||||
|     <script src="js/compiled/ledit.js" type="text/javascript"></script> | ||||
|   </body> | ||||
| </html> | ||||
							
								
								
									
										17
									
								
								src/cljs/ledit/core.cljs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								src/cljs/ledit/core.cljs
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,17 @@ | |||
| (ns ledit.core | ||||
|     (:require )) | ||||
| 
 | ||||
| (enable-console-print!) | ||||
| 
 | ||||
| (println "This text is printed from src/ledit/core.cljs. Go ahead and edit it and see reloading in action.") | ||||
| 
 | ||||
| ;; define your app data so that it doesn't get over-written on reload | ||||
| 
 | ||||
| (defonce app-state (atom {:text "Hello world!"})) | ||||
| 
 | ||||
| 
 | ||||
| (defn on-js-reload [] | ||||
|   ;; optionally touch your app-state to force rerendering depending on | ||||
|   ;; your application | ||||
|   ;; (swap! app-state update-in [:__figwheel_counter] inc) | ||||
| ) | ||||
							
								
								
									
										0
									
								
								src/lisp/ledit.lisp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								src/lisp/ledit.lisp
									
									
									
									
									
										Normal file
									
								
							
		Loading…
	
		Reference in a new issue