11/16/16

vim colorscheme for Go (golang) : goFunctionCall and goMethodCall


In Go, functions are first-citizens and are a type as another. Semantically, this is right but does this have to apply to a theme ? I don't think so.

When i jump from a call to a function or method definition with CTRL-] (CTRL-$ for frenchies), i hate seeing the color changing from a *Type's color to a Function's color, imho, this lacks consistency.

I understand the choices made by the Go's authors but this blows my mind for a theme. As a non-purist because I'm too old for this shit, I think a goFunctionCall and a goMethodCall should be in the group Function and not in the group *Type for a colorscheme.

So, if you are like me, you can add those two lines to your .vimrc (obviously, after loading the wonderful vim-go plugin):

hi def link     goMethodCall        Function
hi def link     goFunctionCall      Function

11/13/16

Compiling Vim 8.0 - Mac OS X Sierra


I know Homebrew but I hate those tools which pollute my system. This is mine. I want to pollute it myself !

1. Compile gettext


I want gettext but if you don't care about, you can safely skip this step and directly go to 2.
% cd && mkdir -p src/tarball && cd src
% curl http://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.8.1.tar.gz -o tarball/!#:^:t
% tar xvzf !$
% cd !$:t:r:r
% ./configure
% make
% sudo make install
% sudo rm -rf /usr/local/share/doc/gettext/examples/

You can close the dialog box about Java.


2. Compile lua


I need lua support to test neocomplete but, as for 1., if you don't care about, you can safely skip this step and directly go to 3.
% cd && mkdir -p src/tarball && cd src
% curl http://www.lua.org/ftp/lua-5.3.3.tar.gz -o tarball/!#:^:t
% tar xvzf !$
% cd !$:t:r:r
% make macosx test
% sudo make install

3. Compile Vim


% cd && mkdir -p src/tarball && cd src

a) Copy and paste the text below in a file inside the src directory and name it: configuration_vim8
export CONF_OPT_X="--without-x"
export CONF_OPT_GUI="--disable-gui"
export CONF_OPT_PYTHON="--enable-pythoninterp"
export CONF_OPT_RUBY="--enable-rubyinterp"
export CONF_OPT_CSCOPE="--enable-cscope"
export CONF_OPT_MULTIBYTE="--enable-multibyte"
export CONF_OPT_FEAT="--with-features=huge"
export CONF_OPT_FAIL="--enable-fail-if-missing"
export CPPFLAGS="-isystem /usr/local/include"
export CONF_OPT_COMPBY="--with-compiledby='your name <your email>'"
export CONF_OPT_LUA="--enable-luainterp"
export CONF_OPT_LUA_PREFIX="--with-lua-prefix=/usr/local"

If you skipped the lua compilation (2.), you should remove CONF_OPT_LUA and CONF_OPT_LUA_PREFIX from the configuration file (or copy without the last 2 lines).

Anyway, you should modify the CONF_OPT_COMPBY option to put your name and email.



b) Copy and paste the text below in a file inside the src directory and name it: apply_patches_vim80
PATCHES=../vim80-patches/*;
for f in $PATCHES; do
  echo "Applying patch $f";
  patch -p0 < $f;
done

c) Get the vim 8.0 sources:
% curl ftp://ftp.vim.org/pub/vim/unix/vim-8.0.tar.bz2 -o tarball/!#:^:t
% bzip2 -dc !$ | tar xvf -

d) Get the patches for vim 8.0:

The vim sources in the tarball are already patched until .0069 version so we only get patches we are interested in.

% mkdir vim80-patches && cd !#:^
% ftp ftp://ftp.vim.org/pub/vim/patches/8.0/
ftp> prompt
ftp> mget *.007*
ftp> mget *.008*
ftp> quit

At the date of writing this article, patch 8.0.0083 is the last.


e) Apply the patches:
% cd ../vim80
% sh ../apply_patches_vim80

f) Set up the environment variables for the compilation:
% source ../configuration_vim8
% env | grep -E 'CONF|CPPFLAGS'

The above command should show you the environment variables fixed by the configuration_vim8 file. If this is not the case, then we are in trouble. Ensure you have not mistyped something in the configuration file.


g) Compile vim:
% cd src
% make distclean
% make

At this stage, you can use the produced binary to see if vim is correctly build with your options:

% ./vim --version

You should see +ruby, +pyhton, +gettext and +lua (for the last two, only if you followed the steps 1. and 2.)


h) If all is fine, you can install vim:
% sudo make install

4. Make the new vim accessible


Create a link for vi

% cd /usr/local/bin
% sudo ln -s ./vim vi

Modify your ~./bashrc

export PATH=/usr/local/bin:$PATH

Source your .bashrc

% . ~/.bashrc
Done.

5/9/13

Enable write on NTFS for free (Mac OS X Lion / Mountain Lion)


1. Download NTFS-3G and install it.

2. Download MacFuse and install it.

3. Download a patch and install it.

Done.

5/1/13

Grub2 - EFI - Asus P8H67-M Pro (Debian Sid 64b)


Une mise à jour récente avait cassé le système de boot de ma Debian (écran noir avec curseur clignotant). Ma carte mère est une Asus P8H67-M Pro avec un bios non mis à jour (version 0806).

Voici ce que j'ai fait pour retrouver un système de boot fonctionnel.

Mettre à jour le bios de la CM avec la version 3806

Mettre la rom sur un stick USB formaté en FAT et depuis le BIOS, flasher : menu ADVANCED MODE >> TOOLS >> ASUS EZ FLASH UTILITY (merci à Asus pour cet utilitaire très pratique accessible directement depuis le Bios).

Lien pour récupérer le nouveau Bios

Créer un stick USB avec une netinstall Debian (lien pour AMD64)


Depuis un Mac (machine de secours) :
$ diskutil list
(repérer le device correspondant au stick)
$ diskutil unmountDisk /dev/disk1
(modifier /dev/disk1 pour le bon device)
$ dd if=debian-testing-amd64-netinst.iso of=/dev/disk1 bs=512
(adapter le path pour if= et of=)
$ diskutil eject /dev/disk1

Booter sur le stick USB de la debian en mode UEFI


Important de booter le stick USB en UEFI sinon vous n'aurez pas accès à /sys/firmware/efi/vars y compris en levant le module (modprobe efivars)

- Choisir le "rescue mode" (Options avancées, mode de récupération [de mémoire :/]).
- Lancer un shell sur la partition correspondant à la racine du système (/dev/sdax)
# mount -va
(pour lever /boot/efi qui ne sera pas monté par défaut)
# update-grub
# grub-install
# efibootmgr -v
(devrait montrer "debian")

Au reboot, grub devrait être présent.

Post rapide en espérant que ça aidera des debianistes ayant le même problème.

7/20/12

VIM : Aujourd'hui, c'est TIPEX !


Tip Ex Vim

Comment automatiser à la volée certaines actions en fonction de son contexte de travail.

On pourrait bien évidemment mettre ces commandes dans son .vimrc mais, à l'usage, il est bien plus pratique de modifier les commandes en fonction des circonstances. :m + flèche vers le haut donnera les précédents mappings et il suffit juste d'en modifier un pour l'usage du moment (donc très rapide).

 

7/13/12

VIM : macro


Vim possède une notion de macro. Grâce aux macros, on enregistre des actions qu'on peut réutiliser autant de fois qu'on le souhaite.

Classiquement :

  • On enregistre une macro avec q
  • On arrête une macro avec q
  • On utilise une macro avec @q

Si on met la macro dans un registre, ce que j'ai pour habitude de faire, on peut avoir par exemple :

  • On enregistre la macro dans le registre a par qa
  • On arrête la macro par q
  • On utilise la macro par @a

Dans l'exemple vidéo, on voit qu'il y a 29 lignes en bas à droite, donc on sait qu'il y a 15 noms de fleurs. Une fois exécutée notre enregistrement, il reste donc 14 noms de fleurs à traiter d'où le 14@a qui apparait à l'écran.

7/12/12

VIM : Copier/Coller Depuis/Vers une ressource externe


Vim possède 26 registres.

Le registre * communique avec le système. C'est celui qu'on va utiliser pour faire du copier/coller

On accède au contenu d'un registre Vim en utilisant "

Donc, pour accéder au registre *, on tape "*

Voici comment utiliser ce registre pour :

  • copier un texte provenant d'une source externe dans Vim
  • coller ailleurs un texte copié depuis Vim

Et si ça ne fonctionne pas avec votre version de Vim, il vous reste à faire ça ou utiliser :set paste. Un petit résumé de la soirée d'un ami mac-vimiste :) Cela aura au moins eu le mérite de réactiver un peu ce blog.

Pfff... j'ai écrit au moins pour 2 ans, là !

7/11/12

Compiling Vim 7.3 - Mac OS X Lion


Préambule

Si vous utilisez RVM, passez votre version de ruby sur celle par défaut (livrée avec le système) le temps de la compilation de Vim (surtout avec cette daube de RVM !). Rbenv is more Unix way ! Try it ! Use it ! Eat it !

 

1. Compiler gettext (Mac OSX Lion)

Si les messages de Vim en français vous importent peu, sautez directement au 2.

% cd
% mkdir -p src/tarball && cd src
% curl http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.1.1.tar.gz -so tarball/!#:^:t
% tar xvzf !$
% cd !$:t:r:r
% curl https://trac.macports.org/export/79617/trunk/dports/devel/gettext/files/stpncpy.patch -so stpncpy.patch
% patch -p0 < !$
% ./configure --disable-dependency-tracking --disable-debug --without-included-gettext --without-included-glib --without-included-libcroco --without-included-libxml --without-emacs --without-git --without-cvs
% make
% sudo make install
% sudo rm -rf /usr/local/share/doc/gettext/examples/

 

2. Compiler Vim (Mac OSX Lion)

% cd
% mkdir -p src/tarball && cd src

Créer les 2 fichiers ci-dessous dans src

Fichier apply_patches_vim73 :

rep="vim73-patches";
total_patches=$(ls -al ../$rep/7.3.* | wc -l)
for i in $(seq $total_patches); do
  echo "Application du patch $i";
  patch -p0 < ../$rep/7.3.$(printf "%.3d" $i);
done

Fichier configuration_vim73

export CONF_OPT_X="--without-x"
export CONF_OPT_GUI="--disable-gui"
export CONF_OPT_PYTHON="--enable-pythoninterp"
export CONF_OPT_RUBY="--enable-rubyinterp"
export CONF_OPT_CSCOPE="--enable-cscope"
export CONF_OPT_MULTIBYTE="--enable-multibyte"
export CONF_OPT_COMPBY="--with-compiledby='Votre nom '"
% curl ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2 -so tarball/!#:^:t
% bzip2 -dc !$ | tar xvf -
% mkdir vim73-patches && cd !#:^
% ftp ftp://ftp.vim.org/pub/vim/patches/7.3/
      ftp> prompt
      ftp> mget *
      ftp> quit
% cd ../vim73
% sh ../apply_patches_vim73
% source ../configuration_vim73
% env|grep CONF
% cd src
% make distclean
% make
% sudo make install

 

Créer un lien vi

% cd /usr/local/bin
% sudo ln -s ./vim vi

 

Modifier son .bashrc

export PATH=/usr/local/bin:$PATH

 

Ressourcer son .bashrc

% . ~/.bashrc

 

Done.

 

6/6/11

Crappy sound whith flash on x86_64 (64b) Debian Wheezy


Linus give us a solution here.

So, make your mymemcpy.so and prepend the launch of your browser with LD_PRELOAD=/path/to/mymemcpy.so

5/25/11

Compile ruby 1.9.2 using RVM on Debian Wheezy


UPDATE 18/07/11 : seems no longer needed with ruby-1.9.2-p290

Thin needs openssl support but sslv2 is broken on Debian Wheezy.
So we need a patch to disable sslv2
I made it from this one :

diff --git a/ext/openssl/extconf.rb b/ext/openssl/extconf.rb
index 55e4142..1ab64fa 100644
--- a/ext/openssl/extconf.rb
+++ b/ext/openssl/extconf.rb
@@ -33,6 +33,14 @@ if with_config("debug") or enable_config("debug")
   end
 end
 
+## 
+## From openssl 1.0, SSLv2 becomes disable by default.
+## If you want to use SSLv2 in ruby, you need config with --enable-opensslv2.
+##
+if enable_config("opensslv2")
+  $defs << "-DENABLE_OPENSSLV2"
+end
+
 message "=== Checking for system dependent stuff... ===\n"
 have_library("nsl", "t_open")
 have_library("socket", "socket")
diff --git a/ext/openssl/ossl_ssl.c b/ext/openssl/ossl_ssl.c
index eb7ae29..3155d81 100644
--- a/ext/openssl/ossl_ssl.c
+++ b/ext/openssl/ossl_ssl.c
@@ -107,9 +107,11 @@ struct {
     OSSL_SSL_METHOD_ENTRY(TLSv1),
     OSSL_SSL_METHOD_ENTRY(TLSv1_server),
     OSSL_SSL_METHOD_ENTRY(TLSv1_client),
+#if defined(ENABLE_OPENSSLV2)
     OSSL_SSL_METHOD_ENTRY(SSLv2),
     OSSL_SSL_METHOD_ENTRY(SSLv2_server),
     OSSL_SSL_METHOD_ENTRY(SSLv2_client),
+#endif
     OSSL_SSL_METHOD_ENTRY(SSLv3),
     OSSL_SSL_METHOD_ENTRY(SSLv3_server),
     OSSL_SSL_METHOD_ENTRY(SSLv3_client),
Use with :
rvm install 1.9.2 --patch path/to/my_patch