Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
####### # # E-scripts on zig. # # Note 1: use the eev command (defined in eev.el) and the # ee alias (in my .zshrc) to execute parts of this file. # Executing this file as a whole makes no sense. # An introduction to eev can be found here: # # (find-eev-quick-intro) # http://angg.twu.net/eev-intros/find-eev-quick-intro.html # # Note 2: be VERY careful and make sure you understand what # you're doing. # # Note 3: If you use a shell other than zsh things like |& # and the for loops may not work. # # Note 4: I always run as root. # # Note 5: some parts are too old and don't work anymore. Some # never worked. # # Note 6: the definitions for the find-xxxfile commands are on my # .emacs. # # Note 7: if you see a strange command check my .zshrc -- it may # be defined there as a function or an alias. # # Note 8: the sections without dates are always older than the # sections with dates. # # This file is at <http://angg.twu.net/e/zig.e> # or at <http://angg.twu.net/e/zig.e.html>. # See also <http://angg.twu.net/emacs.html>, # <http://angg.twu.net/.emacs[.html]>, # <http://angg.twu.net/.zshrc[.html]>, # <http://angg.twu.net/escripts.html>, # and <http://angg.twu.net/>. # ####### https://ziglang.org/ https://ziglang.org/learn/overview/ https://ziglang.org/download/ https://github.com/ziglang/zig/wiki/Install-Zig-from-a-Package-Manager https://github.com/dryzig/zig-debian/blob/master/README.md $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 379CE192D401AB61 # echo 'deb https://dl.bintray.com/dryzig/zig-debian buster main' | sudo tee -a /etc/apt/sources.list # sudo apt update # deb https://dl.bintray.com/dryzig/zig-debian buster main # (find-asrootfile "/etc/apt/sources.list") sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 379CE192D401AB61 sudo apt-get update apti zig https://ziglang.org/learn/overview/#zig-is-also-a-c-compiler # (find-status "zig") # (find-vldifile "zig.list") # (find-udfile "zig/") # (find-fline "/usr/lib/zig/0.6.0/") https://github.com/ratfactor/ziglings https://andrewkelley.me/post/zig-cc-powerful-drop-in-replacement-gcc-clang.html Zig language https://ziglearn.org/ Source File https://trendoceans.com/zig-programming-language/ - You don’t have to build or compile it, and it already comes in executable format. Just download and create a symbolic link for the binary file at the “/usr/bin” directory to make it executable from anywhere for that user, as shown below. $ wget https://ziglang.org/builds/zig-linux-x86_64-0.10.0-dev.4560+828735ac0.tar.xz After download, use the below command to extract the file. $ tar -xf zig-linux-x86_64-0.10.0-dev.4560+828735ac0.tar.xz - Now enter into the directory and link it to the user bin directory as shown below. - Note: After linking do not remove the source file, otherwise it will be broken link and Zig command will not be executed. $ cd zig-linux-x86_64-0.10.0-dev.898+b23f10b42 $ sudo ln -s $(pwd)/zig /usr/local/bin/ - Now you can use the below command after the installation to check whether it is working. $ zig version 0.10.0-dev.4560+828735ac0 zig-mode for emacs https://github.com/ziglang/zig-mode In doom emacs init.el uncomment: ;; (zig +lsp) zls lsp server https://github.com/zigtools/zls/#linux curl -L https://github.com/zigtools/zls/releases/download/0.9.0/x86_64-linux.tar.xz | tar -xJ --strip-components=1 -C . chmod +x zls $ sudo ln -s $(pwd)/zls /usr/local/bin/ ============ Emacs and Doom configuration ============ Emacs Install lsp-mode from melpa zig mode is also useful ;; Setup lsp-mode as desired. ;; See https://emacs-lsp.github.io/lsp-mode/page/installation/ for more information. (require 'lsp-mode) ;; Either place zls in your PATH or add the following: (setq lsp-zig-zls-executable "/usr/local/bin/zls") ============ Doom Emacs Note: you do not need this configuration in doom, if you have enabled it on "init.el" Enable the lsp module Install the zig-mode package (add (package! zig-mode) to your packages.el file Add the following to your config.el: (use-package! zig-mode :hook ((zig-mode . lsp-deferred)) :custom (zig-format-on-save nil) :config (after! lsp-mode (add-to-list 'lsp-language-id-configuration '(zig-mode . "zig")) (lsp-register-client (make-lsp-client :new-connection (lsp-stdio-connection "/usr/local/bin/zls") :major-modes '(zig-mode) :server-id 'zls)))) ============ Compiling source codes zig can compile c, cpp and zip source files zig myprog.zig zig cc myprog.c zig c++ myprog.cpp # Local Variables: # coding: utf-8-unix # End: