Is there an proof search functionality for F*? - fstar

As we know, we have "auto" (proof search) in Agda (Ctrl+c Ctrl+a in Emacs) as well as Idris as well as Coq, but when I was digging into F*'s Emacs mode, I failed to find a similar functionality.
Does F* have this feature? If so, how can I use it?

Related

Clojure: What site to use to search for "Function that does X"

Suppose I wanted to find the sin/cos function. In haskell, I would fire up https://www.haskell.org/hoogle/ , search for "sin" or "cos", read the type signature, and be done.
In Clojure, it seems the best I can do so far (for functions not in clojure.core) is to fire up google, and type in "clojure sin" or "clojure cos" -- then get a package about Quil/sin and Quil/cos -- and wonder
2a. What is this Quil package?
2b. Do I want to pull in this package just to get sin/cos?
2c. Is there a "more standard" package that also provides sin/cos ?
==
Thus, my question, for functions where you almost certainly know the 'type signature' (which I recognize does not exist in clojure) or 'common name', what is the standard way to figure out "what common package do most clojureists use to get this function" ?
Besides googling, don't forget to look at these sites:
Clojure Cheatsheet (I am always (re-)discovering new built-in functions I had somehow missed before)
http://www.clojure-toolbox.com/
https://crossclj.info/
When googling, also try out this trick when entering terms in the search window:
clojure parse site:github.com
It restricts your search terms ("clojure" & "parse") to the URL you choose (in this case "github.com"), which can be quite handy sometimes. Google is nearly always much better than a site's built-in search engine.
UPDATE:
This book helped me a lot:
I have found https://clojuredocs.org/ to be very valuable to find examples of how to use a particular functions of clojure.core. There is http://clojure.github.io/ for "blessed" utilities.
Otherwise, your question does not seems very specific to Clojure. As you guessed, using google is probably a good start.
So I would say google for what you are looking for, then if you have several alternatives use any heuristics you want (count stars on github, number of downloads on clojars, ask other clojurists what they think - there is a great slack channel at http://clojurians.net/).
https://crossclj.info/ is a great site that allows you to search Clojure code in the wild. I found it invaluable to get inspiration.
There are some libraries repositories, although I tend not to use those:
http://www.clojure-toolbox.com/
https://github.com/razum2um/awesome-clojure
http://clojure.org/community/libraries (not the github search trick at the bottom)
http://blog.takipi.com/the-top-100-clojure-libraries-in-2016-after-analyzing-30000-dependencies/ (I find it amazing that clojurescript is "just" a Clojure library)
http://clojurewerkz.org/ and https://funcool.github.io/organization/ both have a nice set of libraries

Emacs tutorial for large projects

can someone be kind enough to direct me to emacs tutorials for large C++ project using gdb as debugger, the project does contain make file.
I did search for emacs tutorials but some are too advanced for beginners and some only target one single file tutorial. I did read the previous posts too but did not find an answer suitable for large projects. Also I am not used to using 'git', one of the answers in previous posts.
Actually, learning Emacs is a thing that just can't be easy. You'll have to learn the basics before you will be able to read "advanced" tutorials.
The first thing you should do is to work through the builtin tutorial (C-h t). It's really good.
Then you should try to familiarize yourself with Emacs configuration basics. The easy way suggested by many users is to get a ready-for-use configuration (such as Emacs Starter Kit) and try to understand it and then tailor to your own needs and preferences. The advantages of using a ready-made configuration kit are:
It's a working code useful for learning the basics of Elisp. This learning path is way faster than reading Elisp manuals and gathering configuration code one small piece at a time.
It demonstrates a lot of useful Emacs features which otherwise might require you long time (sometimes years) to discover.
It offers a framework which you can base on writing your own configuration.
Still you should undoubtedly get rid of whatever parts of configuration you don't need.
Then (or along with the previous step) read some tutorial about using Emacs as a development platform. You can easily find a lot of tutorials via "emacs for [c] development" queries to Google. Here is one of many.
Then install Cedet (Alex Ott has written a great tutorial about it) and start feeling the power.
After that you'll know what to do next.
By the way, there is a great collection of Emacs resources maintained by Bozhidar Batsov.
Start simple. Launch Emacs without any customisations and start editing your source files. The only "tutorial" you'll need to do basic editing is the inbuilt one you'll get by hitting Control H followed by t (Referred to as C-h t in Emacs speak).
Compiling can be done by typing M-x (Alt x) compile and hitting enter. It will prompt you for the compile command which is by default make. Change it to whatever suits you.
Running gdb is done using M-x gdb and hitting enter. The interface is similar to the M-x make.
Don't use things like the Emacs starter kit which makes assumptions on your behalf. While useful as a starting point for newbies, it suppresses curiosity and that's the key to learning Emacs. The above things should be enough for you to start. Once you hit problems and are not satisfied with the ways of doing things, you can search for resources and things. Emacs is not an "IDE" and so you won't have the tight integration which many custom editors have. Don't expect it.

Vim code completion

Is it possible to make Vim complete the code for you, like in any other IDE (not just word searching, but members of classes, methods etc.)?
What are the best options / plugins available?
Clang Complete lets you use Clang for accurate auto-completion of C and C++
I believe that following this list of links you will be able to leave any IDE and become a faithful user of vim, see some plugins that help you with IDE resources...
snipMate plugin faster code complete skels
video showing snipmate on vimeo
article about sparkup html codding to understand this resource
video showing sparkup html complete to see this in action
Auto complete popup plugin here
Advanced undo resource
some interesting videos on advanced usage of vim on vimeo
more free videos at vimcasts.org
amazing article about vim in this link
vim for php programmers (useful not only for php programmers) here
This is a little out dated. A rising star in Vim code completion is the "YouCompleteMe" plugin. Check it out here.
Omni completion is definitely the way to go. Instantiate it in insert mode with Ctrl+X Ctrl+O.
I use it in conjunction with SuperTab as well to allow for tab completion similar to bash shell.
Don't use it myself but I have heard of Omni complete:
http://vim.wikia.com/wiki/Omni_completion
The Vim Wiki contains a couple of things that may be of use for auto completion of words.
You can try this out Dictionary completions, get dictionary for you language. Simple ways
if you are programming in c++, there are ctag and cscope and with OmniCppComplete plugin.
Hope it will help
It's possible, but most people don't.
vim is a fairly generic editor, that said, it does contain some "code completion" features such as word completion, etcetera, but nothing like the likes of, say, Delphi's IDE.
Such a system could be added by scripting vim - vim can directly run several scripting languages that make this easy, or you could send the file through an external script.

Django + Emacs (as TextMate replacement)

There is any complete tutorial how to configure emacs for using with Django (1.1) (on Mac)?
Im thinking about switch from TextMate to Emacs to have multiplatform editor for django. I have my fav. theme from textmate and I want to convert this to emacs (maybe is "converter" for this?). Switching from Textmate is a good idea ?
I second #docgnome's suggestion of Django mode and yasnippet, but the real kicker that will make you never want to go back to TextMate is to integrate PyFlakes into your development environment, at which point Emacs will provide you on-the-fly notification of errors in your Python code. These go far beyond the typo-level error detection you get for free merely by having syntax highlighting; you'll be notified of errors such as variable before assignment, unused imports, and bad indentation, among other things.
Installing PyFlakes in Emacs is relatively straightforward: just download and install PyFlakes, and then add the following to your ~/.emacs or ~/.emacs.d/init.el, as appropriate:
(when (load "flymake" t)
(defun flymake-pyflakes-init ()
(let* ((temp-file (flymake-init-create-temp-buffer-copy
'flymake-create-temp-inplace))
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name))))
(list "pyflakes" (list local-file))))
(add-to-list 'flymake-allowed-file-name-masks
'("\\.py\\'" flymake-pyflakes-init)))
(add-hook 'python-mode-hook 'flymake-mode)
That's it. You should now notice that, whenever you're editing Python, errors are highlighted in red. Mouse over to see a full explanation of what's wrong with the provided line.
As far as theming like TextMate: theming can be a bit annoying Emacs; unless you truly want the exact theme you have in TextMate, I'd grab Color Theme for Emacs and find one that suits your fancy. You can almost certainly find one very close to your current TextMate one, and won't have to deal with manually configuring faces.
You might check out Django mode for emacs. What specific functionality were you looking for? For snippets, I recommend yasnippet which is inspired by the TextMate snippet system.

Spell checker for comments, strings, maybe more

I am looking for a spell checker for c++ source code. Unfortunately all I can find is Visual Studio specific. I would like something which works on Linux.
Edit:
Ultimately I want to automate it in some way. I am not very proficient in spell checking, but what I am thinking of is a not-interactive console tool which prints error messages, or something like that.
Personally I use vim, but not everyone on the project does of course.
Currently we are using svn so it is possible to integrate it into the pre-commit-hook maybe?
Don't you guys do something similar?
Eclipse (Java based so will do mac, linux etc.) has spellcheckers built in. With the CDT plugin you can edit and build C++ code.
Vim also supports spell checking.
See the other question for more.
Emacs too has spell checking, flyspell-prog-mode, is the one I use, it is a (very!) personal preference which one works best for you.
The automating the spell check idea is a much trickier one. The best you can hope for is one that will tell you if there are spelling errors. That's trickier than it sounds, especially with code comments which may have all sorts of valid abbreviations which are not real words.
Having a company policy that whatever people have their EDITOR environment variable set to has a spell check enabled, should cut down on the spelling errors in commit messages, for example.
I found something!
svn co svn://anonsvn.kde.org/home/kde/trunk/quality/krazy2 krazy2
this is part of the quality management of KDE.
Besides a multitude of checks (KDE-specific, qt-specific, cpp-specific, ...) there is automated spell checking.
hope this helps
Which editors do you use? Many of them have spell checking abilities. E.g., gedit just needs to have the spellcheck plugin enabled.
You can check out some alpha code I just whipped up for a similar purpose: pyspellcode. It's Zlib licensed and uses clang and hunspell.
No idea how pyspellcode compares to what KDE does/provides but am happy to receive comparisons and will prioritize its development more if there's interest it.
At just over 200 lines, I'm guessing pyspellcode is at least lighter weight than KDE's solution though KDE's solution I imagine is way more tested.